Joywork/engine/classes/LinkingClass.php

228 lines
7.0 KiB
PHP
Raw Normal View History

2026-05-22 20:21:54 +02:00
<?php
class LinkingClass{
private $db = null;
public function __construct(){
$pdo = new MysqlPdo(hst, ndb, user, pass);
$pdo->query("SET NAMES 'utf8'");
$this->db = $pdo;
}
private $fixFields = array();
private function get_req_types($type){
$types = array();
$sql_types = "SELECT id FROM requisitions_type WHERE (id={$type} or heir={$type}) AND del = 0";
$q_types = $this->db->query($sql_types);
while($r_types = $this->db->fetch_assoc($q_types)){
$types[] = (int)$r_types['id'];
}
return $types;
}
private function get_clients(){
$userId = $_SESSION['id'];
$bd_usl_managers = '';
$arrIdUser = array();
$usersId = array();
$usersPlan = array();
$user = new User;
$user -> get($userId);
//if($_SESSION['users_admin']){
//Для ПИА показывать всех клиентов
$userId = $user->agencyId;
//}
$arrIdUser[] = "who_work = $userId";
$wid[] = "doers like '%&quot;".$userId."&quot;:1%'";
$usersId[] = $userId;
$user -> get($userId);
if($user->agency){
$rez3 = $this->db->query("SELECT id FROM users WHERE id_manager=$userId");
while ($mm = $this->db->fetch_row($rez3)) {
$arrIdUser[] = "who_work = " . $mm[0];
$wid[] = "doers like '%&quot;".$mm[0]."&quot;:1%'";
$usersId[] = $mm[0];
$rez04 = $this->db->query("SELECT id FROM users WHERE id_manager=$mm[0]");
while ($mm2 = $this->db->fetch_row($rez04)) {
$arrIdUser[] = "who_work = " . $mm2[0];
$wid[] = "doers like '%&quot;".$mm2[0]."&quot;:1%'";
$usersId[] = $mm2[0];
}
}
} else if($user->manager){
$rez04 = $this->db->query("SELECT id FROM users WHERE id_manager=$userId");
while ($mm2 = $this->db->fetch_row($rez04)) {
$arrIdUser[] = "who_work = " . $mm2[0];
$wid[] = "doers like '%&quot;".$mm2[0]."&quot;:1%'";
$usersId[] = $mm2[0];
}
}
$bd_usl_managers = " AND (".implode(" OR ",$arrIdUser).")";
if(!empty($wid)){
$bd_usl_managers = " AND ((".implode(" OR ",$arrIdUser).") or (".implode(" OR ",$wid)."))";
}
$sql = "SELECT `id`, fio, email, phone, objects, deleted, confirm FROM clients WHERE 1 $bd_usl_managers order by deleted limit 30";
// echo $sql;
$clients_all = array();
$q = $this->db->query($sql);
while($r = $this->db->fetch_assoc($q)){
$res['id'] = $r['id'];
$res['color'] = '#000';
if($r['deleted'] == 1){
$res['color'] = '#dd6360';
if($r['confirm'] == 10){
$res['color'] = '#43A047';
}
}
$res['name'] = $r['phone'].' '.$r['fio'];
if(!empty($r['email'])){
$res['name'] = $r['phone'].' '.$r['fio'].' ('.$r['email'].')';
}
if(isset($id) && $id>0){
$clients_all = $res;
} else {
$clients_all[] = $res;
}
}
return $clients_all;
}
public function getFixFields(){
$types_price = $this->get_req_types(2);
$fields = array();
$fields[] = [
'id' => 'tags',
'title' => "Теги",
'is_filtrable' => 0,
'type' => 2,
'is_client' => 1,
'is_req' => 1,
'req_type' => 0,
'is_required' => 0,
'params' => [],
'is_podgroup' => 0,
'is_check_req' => 0,
'is_check_client' => 0,
];
$fields[] = [
'id' => 'prep_price',
'title' => "Предварительная цена",
'is_filtrable' => 0,
'type' => 1,
'is_client' => 0,
'is_req' => 1,
'req_type' => json_encode($types_price),
'is_required' => 0,
'params' => [],
'is_podgroup' => 0,
'is_check_req' => 0,
'is_check_client' => 0,
'table' => 'object_prices',
'ident' => 'object_id',
];
$fields[] = [
'id' => 'start_price',
'title' => "Начальная цена",
'is_filtrable' => 0,
'type' => 1,
'is_client' => 0,
'is_req' => 1,
'req_type' => json_encode($types_price),
'is_required' => 0,
'params' => [],
'is_podgroup' => 0,
'is_check_req' => 0,
'is_check_client' => 0,
'table' => 'object_prices',
'ident' => 'object_id',
];
$fields[] = [
'id' => 'fact_price',
'title' => "Фактическая цена",
'is_filtrable' => 0,
'type' => 1,
'is_client' => 0,
'is_req' => 1,
'req_type' => json_encode($types_price),
'is_required' => 0,
'params' => [],
'is_podgroup' => 0,
'is_check_req' => 0,
'is_check_client' => 0,
'table' => 'object_prices',
'ident' => 'object_id',
];
$fields[] = [
'id' => 'description',
'title' => "Описание",
'is_filtrable' => 0,
'type' => 5,
'is_client' => 1,
'is_req' => 1,
'req_type' => 0,
'is_required' => 0,
'params' => [],
'is_podgroup' => 0,
'is_check_req' => 0,
'is_check_client' => 0,
];
return $fields;
}
public function field_find($id){
$fieldFind = array();
$fields = $this->getFixFields();
foreach($fields as $field){
if($field['id'] == $id){
$fieldFind = $field;
break;
}
}
return $fieldFind;
}
public function getFixetForm(){
$types_form = $this->get_req_types(2);
$forms = array();
$forms[] = [
'id' => 'specifications_object',
'title' => 'Характеристики объекта',
'dop_selector' => '',
'req_type' => json_encode($types_form),
'is_check_req' => 0,
'is_check_client' => 0,
'is_client' => 0,
'is_req' => 1,
];
$forms[] = [
'id' => 'contract_form',
'title' => 'Добавить договор',
'dop_selector' => '',
'req_type' => 0,
'is_check_req' => 0,
'is_check_client' => 0,
'is_client' => 1,
'is_req' => 1,
];
return $forms;
}
}