array('id'=>1, 'name'=>'Новый', 'title'=>'Новый клиент', 'classF' => 'stage-new'), 1 => array('id'=>2, 'name'=>'В работе', 'title'=>'В работе', 'classF' => 'stage-work'), 2 => array('id'=>3, 'name'=>'Презентация', 'title'=>'Презентация', 'classF' => 'stage-offer'), 3 => array('id'=>4, 'name'=>'Показ', 'title'=>'Показ', 'classF' => 'stage-showing'), 4 => array('id'=>5, 'name'=>'Бронь', 'title'=>'Бронь', 'classF' => 'stage-reservation'), 5 => array('id'=>6, 'name'=>'Подаем на ипотеку', 'title'=>'Подаем на ипотеку', 'classF' => 'stage-meet'), 6 => array('id'=>7, 'name'=>'Сделка', 'title'=>'Сделка', 'classF' => 'stage-deal'), 7 => array('id'=>8, 'name'=>'Закрыт', 'title'=>'Клиент закрыт', 'classF' => 'stage-end'), ); private $params_search = []; public function __construct($db = null){ if($db){ $this->db = $db; } else { $pdo = new MysqlPdo(hst, ndb, user, pass); $sql = "SET NAMES 'utf8'"; $pdo->query($sql); $this->db = $pdo; } } public function set_params_search($params){ $this->params_search = $params; } public function get($id) { $this->errors = []; $sql = "SELECT `clients`.*, `credit`.`bancks_credit`, `credit`.`summa_credit`, `credit`.`komissiya_credit`, `credit`.`cel_credit`, `credit`.`age_credit`, `credit`.`propiska_credit`, `credit`.`nagruzka_credit`, `credit`.`dohod_credit`, `credit`.`dava_ndfl_credit`, `credit`.`spravka_credit`, `credit`.`phone_credit`, `credit`.`podachi_credit`, `credit`.`not_own_credit`, `credit`.`yes_deduction_credit`, `credit`.`overdue_credit`, `credit`.`mfo_credit`, `credit`.`kvartira_credit`, `credit`.`dom_credit`, `credit`.`uchastok_credit`, `credit`.`car_credit`, `credit`.`kol_nagruzka_credit`, clients_dop_info.persone_no_ip, clients_dop_info.passport, clients_dop_info.date_of_issue_passport, clients_dop_info.passport_issued_by, clients_dop_info.birthplace, clients_dop_info.registration_address, clients_dop_info.post_address, clients_dop_info.persone_snils, clients_dop_info.persone_nationality, clients_dop_info.persone_gender, clients_dop_info.persone_full_name, clients_dop_info.persone_short_name, clients_dop_info.persone_ogrn, clients_dop_info.persone_inn, clients_dop_info.persone_kpp, clients_dop_info.persone_legal_address, clients_dop_info.persone_fact_address, clients_dop_info.persone_info_bank, clients_dop_info.persone_name_bank, clients_dop_info.persone_bik_bank, clients_dop_info.persone_rs_bank, clients_dop_info.persone_kors_bank, clients_dop_info.persone_fio_rukovod, clients_dop_info.persone_powers, clients_dop_info.persone_kod_podrazdelenia FROM `clients` LEFT JOIN `credit` ON `clients`.`id` = `credit`.`client_id` LEFT JOIN `clients_dop_info` ON `clients`.`id` = `clients_dop_info`.`client_id` WHERE `clients`.`id` = '$id'"; if ($rez = mysql_query($sql)) { if (mysql_num_rows($rez)) { $cl = mysql_fetch_assoc($rez); $sql_req = "SELECT `id` FROM `requisitions` WHERE `client_id` = '$id'"; $q_req = mysql_query($sql_req); $req = ''; if (mysql_num_rows($q_req) > 0) { while ($r_req = mysql_fetch_assoc($q_req)) { if ($req != '') $req .= ','; $req .= $r_req['id']; } } $cl['req'] = $req; $objects = array(); $sql_objects = "SELECT object_id FROM client_objects WHERE client_id = {$id}"; $q_objects = mysql_query($sql_objects); while($r_objects = mysql_fetch_assoc($q_objects)){ $objects[] = (int)$r_objects['object_id']; } $cl['objects'] = ''; if(!empty($objects)){ $cl['objects'] = json_encode($objects); } foreach ($cl as $k => $v) { if ($k == 'birthday') { if (empty($v) || $v == '0000-00-00') $v = ''; else $v = date('d.m.Y', strtotime($v)); } $this->$k = html_entity_decode($v); } $activities = []; $sqlAddInfo = "SELECT `activity_id` FROM `clients_activities` WHERE `client_id` = '$id'"; if ($rezAddInfo = mysql_query($sqlAddInfo)) { if (mysql_num_rows($rezAddInfo) > 0) { while ($row = mysql_fetch_array($rezAddInfo)) { $activities[] = $row['activity_id']; } } } else { $this->errors[] = mysql_error(); } $this->source_see = 1; if($cl['source'] > 0){ $sql_source = "SELECT * FROM advertising_sources WHERE id = $cl[source]"; //$this->source = $sql_source; $q_source = mysql_query($sql_source); if (mysql_num_rows($q_source) > 0) { $r_source = mysql_fetch_assoc($q_source); if(is_see($r_source['is_no_see'], $r_source['users_no_see']) === false){ $this->source_see = 0; } } } $this->activities = json_encode($activities); } } else { $this->errors[] = mysql_error(); } if (count($this->errors)) return false; else return $this; } public function del($id) { /* $sql = "SELECT * FROM `clients` WHERE id = ".$id; $q = mysql_query($sql); $r = mysql_fetch_assoc($q); $sql_i = "INSERT INTO clients_arhiv (`fio`, `phone`, `email`, `birthday`, `type`, `opis`, `id_agent`, `date_add`, `deleted`, `reason`, `status`, `budget`, `summa`, `who_work`, `confirm`, `who_delete`, `work_type`, `role`, `objects`, `source`, `stage`, `hot`, `priority`, `turn`, `turntime`) VALUES ('{$r['fio']}', '{$r['phone']}', '{$r['email']}', '{$r['birthday']}', '{$r['type']}', '{$r['opis']}', '{$r['id_agent']}', '{$r['date_add']}', '{$r['deleted']}', '{$r['reason']}', '{$r['status']}', '{$r['budget']}', '{$r['summa']}', '{$r['who_work']}', '{$r['confirm']}', '{$r['who_delete']}', '{$r['work_type']}', '{$r['role']}', '{$r['objects']}', '{$r['source']}', '{$r['stage']}', '{$r['hot']}', '{$r['priority']}', '{$r['turn']}', '{$r['turntime']}')"; // echo $sql_i; mysql_query($sql_i);*/ $sql_del = "UPDATE clients SET cancel = 1, objects='' WHERE id = {$id}"; mysql_query($sql_del); $sql="DELETE FROM client_objects WHERE client_id=$id"; $rez=mysql_query($sql); $sql="DELETE FROM user_client_events WHERE client_id=$id"; $rez=mysql_query($sql); $sql = "DELETE FROM clients_phone2 WHERE client_id = {$id}"; $rez=mysql_query($sql); //Удаление заявок этого клиента $pdo = new MysqlPdo(hst, ndb, user, pass); $req = new Requisitions($pdo); $req->cancelReqsClient($id); } public static function updateFunnel($post) { $errors = []; if ($post['id']) { $funnel = null; $sqlSelFun = "select funnel_id from clients WHERE id=$post[id]"; if (!($resSelFun = mysql_query($sqlSelFun))) { $errors[] = mysql_error(); } else { $rowSelFun = mysql_fetch_assoc($resSelFun); $funnel = $rowSelFun['funnel_id']; } if(isset($post['new_funnel_id'])) { $newFunnel = (int)$post['new_funnel_id']; } else { $newFunnel = 0; } if ($funnel != $newFunnel) { $funnelName = "Обычные"; if ($newFunnel > 0) { $sqlFunnel = "SELECT name FROM funnel WHERE id = $newFunnel"; $resFunnel = mysql_query($sqlFunnel); $phRow = mysql_fetch_assoc($resFunnel); $funnelName = $phRow['name']; } $sql = "UPDATE clients SET funnel_id = '$newFunnel', `stage`='1' WHERE id=$post[id]"; if (!mysql_query($sql)) { $errors[] = mysql_error(); } $sqlDeleteOldFunnel = "DELETE FROM clients_funnel_step WHERE client_id = $post[id]"; if (!mysql_query($sqlDeleteOldFunnel)) { $errors[] = mysql_error(); } self::get_class_etap($post['id'], $newFunnel); $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$post['id'].", '0', 'update', 'Передан в воронку «".$funnelName."»', '1')"; if (!mysql_query($sql_conf)) { $errors[] = mysql_error(); } } } if (count($errors)) return $errors; else return false; } public function update_objects($client_id, $post_objects = null, $objects = array()){ /*error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1);*/ $pdo = new MysqlPdo(hst, ndb, user, pass); $sql = "SET NAMES 'utf8'"; $pdo->query($sql); if($client_id > 0){ $old_objects = array(); $add_objects = array(); $del_objects = array(); $sql_o = "SELECT * FROM client_objects WHERE client_id = {$client_id}"; $q_o = $pdo->query($sql_o); while($r_o = $pdo->fetch_assoc($q_o)){ $old_objects[] = (int)$r_o['object_id']; } //$pdo->query("DELETE FROM client_objects WHERE client_id = {$client_id}"); if(!empty($post_objects)){ $temp_objects = json_decode(html_entity_decode($post_objects), true); if(!empty($temp_objects)){ $objects = $temp_objects; } } foreach($old_objects as $old_obj_id){ if(!in_array($old_obj_id, $objects)){ $del_objects[] = $old_obj_id; } } foreach($objects as $obj_id){ if(!in_array($obj_id, $old_objects)){ $add_objects[] = (int)$obj_id; } } if(!empty($del_objects)){ $sql_del = "DELETE FROM client_objects WHERE client_id = {$client_id} AND object_id in (".implode(',', $del_objects).")"; $pdo->query($sql_del); $dop_text = ''; $sql_obj = "SELECT `id`, `adres` `nazv` FROM `objects` WHERE `id` in (".implode(',', $del_objects).")"; $q_obj = $pdo->query($sql_obj); while($obj_res = $pdo->fetch_assoc($q_obj)){ if($dop_text != '') $dop_text.= "
"; $nazv_obj = trim($obj_res['nazv'].' '.$obj_res['adres']); $dop_text .= "Удален объект ID {$obj_res['id']} «".$nazv_obj."»"; $com = 'Объект отвязан от собственника ID '.$client_id; $sql = "INSERT INTO user_object_events(user_id, object_id, create_date, type, address, sum, schedule_date, comment, calendar_view) VALUES('$_SESSION[id]', '{$obj_res['id']}', NOW(), 'comment', NULL, NULL, NULL, '$com', '1')"; $pdo->query($sql); } if($dop_text != ''){ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$client_id.", '0', 'update', '".$dop_text."', '1')"; $pdo->query($sql_conf); } } if(!empty($add_objects)){ $sql_insert = "INSERT INTO client_objects (client_id, object_id) values"; foreach($add_objects as $object_id){ if($sql_insert != "INSERT INTO client_objects (client_id, object_id) values") $sql_insert .= ", "; $sql_insert .= "({$client_id}, {$object_id})"; } $pdo->query($sql_insert); $dop_text = ''; $sql_obj = "SELECT `id`, `adres` `nazv` FROM `objects` WHERE `id` in (".implode(',', $add_objects).")"; $q_obj = $pdo->query($sql_obj); while($obj_res = $pdo->fetch_assoc($q_obj)){ if($dop_text != '') $dop_text.= "
"; $nazv_obj = trim($obj_res['nazv'].' '.$obj_res['adres']); $dop_text .= "Добавлен объект ID {$obj_res['id']} «".$nazv_obj."»"; $com = 'К объекту был привязан собственник ID '.$client_id; $sql = "INSERT INTO user_object_events(user_id, object_id, create_date, type, address, sum, schedule_date, comment, calendar_view) VALUES('$_SESSION[id]', '{$obj_res['id']}', NOW(), 'comment', NULL, NULL, NULL, '$com', '1')"; // file_put_contents(__DIR__.'/log_obj.txt', $sql. "\n", FILE_APPEND); $pdo->query($sql); } if($dop_text != ''){ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$client_id.", '0', 'update', '".$dop_text."', '1')"; $pdo->query($sql_conf); } } } } //Дополнительные телефоны public function update_phone2($client_id, $post_phone2 = null, $phones2 = array()){ $pdo = new MysqlPdo(hst, ndb, user, pass); $sql = "SET NAMES 'utf8'"; $pdo->query($sql); if($client_id > 0){ $pdo->query("DELETE FROM clients_phone2 WHERE client_id = {$client_id}"); if(!empty($post_phone2)){ $phones2 = json_decode(html_entity_decode($post_phone2), true); } if(!empty($phones2)){ foreach($phones2 as $phone){ $sql_in = "INSERT INTO `clients_phone2` (client_id, phone) VALUES"; if($sql_in != "INSERT INTO `clients_phone2` (client_id, phone) VALUES") $sql_in .= ", "; $sql_in .= "({$client_id}, '{$phone}')"; $pdo->query($sql_in); } } } } public function addEdit($post, $need_req_link = true, $use_redirect = true, $id_agent = false) { /*error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1);*/ $depClass = new Department(); // hide_client_contacts: защита от перезаписи замаскированных значений. // Если у текущего пользователя скрыты контакты и это РЕДАКТИРОВАНИЕ существующего клиента, // принудительно берём оригинальные phone/email/national_phone/phone2 из БД и игнорируем форму. if (function_exists('should_hide_contacts_for_current_user') && should_hide_contacts_for_current_user() && !empty($post['id']) ) { $cidSafe = (int)$post['id']; if ($cidSafe > 0) { $qSrc = mysql_query("SELECT phone, email, national_phone, phone2 FROM clients WHERE id = $cidSafe LIMIT 1"); if ($qSrc && ($rSrc = mysql_fetch_assoc($qSrc))) { $post['phone'] = $rSrc['phone']; $post['email'] = $rSrc['email']; $post['national_phone'] = $rSrc['national_phone']; $post['phone2'] = $rSrc['phone2']; } } } //Проверка на право редактирования /*if($post['id']){ $sql = "SELECT id, who_work FROM clients WHERE id=$post[id]"; $q = mysql_query($sql); if(mysql_num_rows($q) > 0){ $r = mysql_fetch_assoc($q); $who = $r['who_work']; if($who > 0){ $error = "У вас нет прав для редактирования данного клиента"; $user = (int)$_SESSION['id']; if ($_SESSION['users_admin']) { $agency = new User; $agency->checkPermissions(); $user = $agency->agencyId; } $sql_users = "SELECT id FROM users WHERE id in (select id from users where id=$user or id_manager=$user or id_manager in (select id from users where id_manager=$user or id_manager in (select id from users where id_manager=$user)))"; //echo $sql_users; $q_users = mysql_query($sql_users); while($r_users = mysql_fetch_assoc($q_users)){ if($who == $r_users['id']){ $error = ''; break; } } if($error != ''){ return $error; } } } }*/ if (($post['id'] && (!isset($post['phone']) || !$post['phone']))) { $sqlPhone = "SELECT phone FROM clients WHERE id = $post[id]"; $resPhone = mysql_query($sqlPhone); $phRow = mysql_fetch_assoc($resPhone); $post['phone'] = $phRow['phone']; } //$sql = "SELECT users.id, users.fio FROM users WHERE id IN (SELECT DISTINCT CASE WHEN clients.who_work = 0 THEN clients.id_agent ELSE clients.who_work END FROM clients WHERE clients.phone='$post[phone]')"; // echo $_POST[objects]; //$post[phone2] $phone2_where_arr = array(); $phone2_where_arr[] = "'".$post['phone']."'"; $phone2_arr = json_decode(html_entity_decode($post['phone2']), ENT_QUOTES); foreach($phone2_arr as $phone_2){ $phone2_where_arr[] .= "'".$phone_2."'"; } $phone2_where = ''; $phone_where = ''; if(!empty($phone2_where_arr)){ if(count($phone2_where_arr) == 1){ $phone_where = "clients.phone='$post[phone]'"; } else { $phone_where = "clients.phone in (".implode(',', $phone2_where_arr).")"; } $phone2_where = " or clients.id in (SELECT client_id FROM clients_phone2 WHERE phone in (".implode(',', $phone2_where_arr)."))"; } $sql = "select id as client_id, phone, if(who_work = 0, id_agent, who_work) as id, (SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as fio from users WHERE id = if(clients.who_work = 0, clients.id_agent, clients.who_work)) as fio from clients WHERE cancel=0 AND ($phone_where $phone2_where)"; //echo $sql; if ($post['id']) { $sql = $sql." and clients.id != $post[id]"; } //добавляем ограничение на воронку, ищем повторы внутри воронки if(isset($post['funnel_id'])) { $funnelForCheck = (int)$post['funnel_id']; } else { $funnelForCheck = 0; } //если у нас редактирование, то нужно проверить, что переносить можно в новую воронку if ($post['id']) { if(isset($post['new_funnel_id'])) { $funnelForCheck = (int)$post['new_funnel_id']; } else { $funnelForCheck = 0; } } $user_ses = new User; $user_ses->get($_SESSION['id']); if($user_ses->agencyId != 21951){ $sql = $sql." and clients.funnel_id = $funnelForCheck"; } if (empty($post['confirm'])) $post['confirm'] = 0; if ($post['confirm'] || $post['confirm'] == 0) { if($post['who_work'] == $_SESSION['id'] && isset($_SESSION['id'])) { $post['confirm'] = 1; } } // $workType = 0; //if (isset($post['work_type']) && $post['work_type'] > 0) { $workType = $post['work_type']; //} $rez = mysql_query($sql); $count = mysql_num_rows($rez); if ($id_agent == false) $id_agent = (int)$_SESSION['id']; $error = ''; if(!empty($post['opis'])){ $post['opis'] = mysql_real_escape_string(htmlspecialchars($post['opis'])); } if ($count > 0) { $agencyId = null; if($user_ses->id_manager == 0 && $user_ses->agency == 0){ //Не агентство $agencyId = $_SESSION['id']; } else if ($_SESSION['agency']) { $agencyId = $_SESSION['id']; } else { if ($_SESSION['manager']) { $user = new User; $user->checkPermissions($id_agent, $use_redirect); $agencyId = $user->id_manager; } else { $user = new User; $user->checkPermissions($id_agent, $use_redirect); if ($user->id_manager > 0) { $agency = new User; $agency->get($user->id_manager); if($agency->id_manager) { $agency->get($agency->id_manager); } $agencyId = $agency->id; } } } if ($agencyId != null) { $idsFromAgency = array(); $idsFromAgency[] = $agencyId; $agency = new User(); $managers = $agency->getAllManagers($agencyId); if($managers) { foreach ($managers as $i => $manager) { $idsFromAgency[] = $manager['id']; if((int)$manager['role_id'] > 0 && (int)$manager['department_id'] > 0){ $role_user = $depClass->getRole((int)$manager['role_id']); if($role_user['role'] == 'admin_department'){ $menagerDep = User::getDepManagers($role_user['department_id']); foreach($menagerDep as $md){ if(!in_array($md['id'], $idsFromAgency)){ $idsFromAgency[] = $md['id']; } $thisAgents = User::getAgentsOfAgency($md['id'], true); foreach($thisAgents as $da){ if (!in_array($da['id'], $idsFromAgency)) { $idsFromAgency[] = $da['id']; } } } } } } } $agents = $agency->getAllAgents($agencyId); if($agents) { foreach ($agents as $i => $agent) { $idsFromAgency[] = $agent['id']; } } // список пользователей, у которых есть похожие клиенты if($agencyId == 7945 || $agencyId == 7441 || $agencyId == 12061){ } else if ($agencyId == 7384 && ($post['source'] == 498 || $post['source'] == 589 || $post['source'] == 677)){ } else { while ($user = mysql_fetch_assoc($rez)) { if (in_array($user['id'], $idsFromAgency)) { $error = "

Клиент с указанной электронной почтой или телефоном уже привязан к агенту $user[fio]!

"; if ($need_req_link) $error .= "

Добавить новую заявку по данному клиенту?

"; $mstr = mysql_fetch_assoc(mysql_query("SELECT agency, manager, fio FROM users WHERE id=".$_SESSION[id])); if($mstr['agency']) $master = "агентством $mstr[fio]"; elseif($mstr['manager']) $master = "менеджером $mstr[fio]"; else $master = "агентом $mstr[fio]"; $dop_text = " - попытка добавить клиента ".$master; if($post['source']){ $source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$post['source']))['source']; $dop_text .= " с источника ".$source; } $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$user['client_id'].", '0', 'double_client', '".$dop_text."', '1')"; mysql_query($sql_conf); } } } } if($error != ''){ return $error; } if (!isset($post['stage']) || !$post['stage']) { $post['stage'] = '1'; } // прошли проверку - добавляем if ($post['id']) { $sql_prev = "SELECT `email`, `phone`, `phone2`, `type`, `work_type`, `role`, `opis`, `objects`, `birthday`, `source`, `employee_id`, `budget`, `fio` FROM `clients` WHERE id=$post[id]"; $q_prev = mysql_query($sql_prev); $r_prev = mysql_fetch_assoc($q_prev); $opis = mysql_real_escape_string($post['opis']); // hide_client_contacts: жёсткая защита прямо перед UPDATE. // Если у юзера скрыты контакты, ИЛИ если в $post проскочила маска (есть `*` либо // <4 цифр в телефоне, либо `*` в email) — берём из $r_prev (только что прочитанные // оригинальные значения). Это последний рубеж: даже если выше защиты не сработали, // в БД попадёт оригинал. $isHideUser = function_exists('should_hide_contacts_for_current_user') && should_hide_contacts_for_current_user(); $postPhoneStr = isset($post['phone']) ? (string)$post['phone'] : ''; $postEmailStr = isset($post['email']) ? (string)$post['email'] : ''; $phoneLooksMasked = (strpos($postPhoneStr, '*') !== false) || (preg_match_all('/\d/', $postPhoneStr) < 4); $emailLooksMasked = (strpos($postEmailStr, '*') !== false); if ($isHideUser || $phoneLooksMasked) { $post['phone'] = $r_prev['phone']; } if ($isHideUser || $emailLooksMasked) { $post['email'] = $r_prev['email']; } if ($isHideUser) { $post['phone2'] = $r_prev['phone2']; } $sql = "UPDATE clients SET fio='$post[fio]', email='".trim($post['email'])."', phone='$post[phone]', phone2='$post[phone2]', `type`='$post[type]', work_type='$workType', opis='$opis', status='$post[status]', budget='$post[budget]', who_work='$post[who_work]', confirm='$post[confirm]', `role`='$post[role]', `objects`='$post[objects]', `source`='$post[source]', `employee_id`='$post[employee]', `birthday`='$post[birthday]', `stage`='$post[stage]', `hot`='$post[hot]', `priority`='$post[priority]' WHERE id=$post[id]"; self::update_objects($post['id'], $post['objects']); self::update_phone2($post['id'], $post['phone2']); /*if(empty($post[objects]) || $post[objects] == 'null'){ $sql = "UPDATE clients SET fio='$post[fio]', email='".trim($post['email'])."', phone='$post[phone]', phone2='$post[phone2]', `type`='$post[type]', work_type='$workType', opis='$post[opis]', status='$post[status]', budget='$post[budget]', who_work='$post[who_work]', confirm='$post[confirm]', `role`='$post[role]', `source`='$post[source]', `birthday`='$post[birthday]', `stage`='$post[stage]', `hot`='$post[hot]' WHERE id=$post[id]"; }*/ //Проверяем запись в ипотеке $sql_i = "SELECT `id` from `ipoteka` WHERE `client_id` = ".$post['id']; $q_i = mysql_query($sql_i); if(mysql_num_rows($q_i) > 0){ $r_i = mysql_fetch_assoc($q_i); $sql_u_i = "UPDATE `ipoteka` SET " . "`client_id`=$post[id]," . "`rynok`='$post[rynok]'," . "`yes_object`=".(int)$post[yes_object]."," . "`jc`='$post[jc]'," . "`ante_pr`='$post[ante_pr]'," . "`ante_rub`='$post[ante_rub]'," . "`comment`='$post[comment_ipoteka]'," . "`yes_doc`=".(int)$post[yes_doc]."," . "`number_doc`='$post[number_doc]'," . "`date_doc`='$post[date_doc]'," . "`doc_komis_pr`='$post[doc_komis_pr]'," . "`doc_komis`='$post[doc_komis]'," . "`yes_bank`=".(int)$post[yes_bank]."," . "`date_bank`='$post[date_bank]'," . "`employee_bank`='$post[employee_bank]'," . "`banks`='$post[banks]'," . "`yes_resolve`=".(int)$post[yes_resolve]."," . "`resolve`='$post[resolve]'," . "`comment_resolve`='$post[comment_resolve]'," . "`yes_issue`=".(int)$post[yes_issue]."," . "`bank_issue`='$post[bank_issue]'," . "`rate_issue`='$post[rate_issue]'," . "`term_issue`='$post[term_issue]'," . "`yes_brak`='$post[yes_brak]'," . "`relationship`='$post[relationship]'," . "`summa_object`='$post[summa_object]'," . "`age`='$post[age]'," . "`co_borrower_fio`='$post[co_borrower_fio]'," . "`co_borrower_age`='$post[co_borrower_age]'," . "`contacts`='$post[contacts]'," . "`co_borrower_dohod`='$post[co_borrower_dohod]'," . "`income`='$post[income]'," . "`credit_load`='$post[credit_load]'" . " WHERE `id` = ".$r_i['id']; //echo $sql_u_i; mysql_query($sql_u_i); } else { $sql_ipoteka = "INSERT INTO " ."`ipoteka` SET " . "`client_id`=$post[id]," . "`rynok`='$post[rynok]'," . "`yes_object`=".(int)$post[yes_object]."," . "`jc`='$post[jc]'," . "`ante_pr`='$post[ante_pr]'," . "`ante_rub`='$post[ante_rub]'," . "`comment`='$post[comment_ipoteka]'," . "`yes_doc`=".(int)$post[yes_doc]."," . "`number_doc`='$post[number_doc]'," . "`date_doc`='$post[date_doc]'," . "`doc_komis_pr`='$post[doc_komis_pr]'," . "`doc_komis`='$post[doc_komis]'," . "`yes_bank`=".(int)$post[yes_bank]."," . "`date_bank`='$post[date_bank]'," . "`employee_bank`='$post[employee_bank]'," . "`banks`='$post[banks]'," . "`yes_resolve`=".(int)$post[yes_resolve]."," . "`resolve`='$post[resolve]'," . "`comment_resolve`='$post[comment_resolve]'," . "`yes_issue`=".(int)$post[yes_issue]."," . "`bank_issue`='$post[bank_issue]'," . "`rate_issue`='$post[rate_issue]'," . "`term_issue`='$post[term_issue]'," . "`yes_brak`='$post[yes_brak]'," . "`relationship`='$post[relationship]'," . "`summa_object`='$post[summa_object]'," . "`age`='$post[age]'," . "`co_borrower_fio`='$post[co_borrower_fio]'," . "`co_borrower_age`='$post[co_borrower_age]'," . "`contacts`='$post[contacts]'," . "`co_borrower_dohod`='$post[co_borrower_dohod]'," . "`income`='$post[income]'," . "`credit_load`='$post[credit_load]'"; mysql_query($sql_ipoteka); } //Проверяем информацию о кредите $sql_c = "SELECT `id` FROM `credit` WHERE client_id = ".$post['id']; $q_c = mysql_query($sql_c); if(mysql_num_rows($q_c) > 0){ $sql_u_c = "UPDATE `credit` SET `bancks_credit` = '$post[bancks_credit]', `summa_credit` = '$post[summa_credit]', `komissiya_credit` = '$post[komissiya_credit]', `cel_credit` = '$post[cel_credit]', `age_credit` = '$post[age_credit]', `propiska_credit` = '$post[propiska_credit]', `nagruzka_credit` = '$post[nagruzka_credit]', `dohod_credit` = '$post[dohod_credit]', `dava_ndfl_credit` = '$post[dava_ndfl_credit]', `spravka_credit` = '$post[spravka_credit]', `phone_credit` = '$post[phone_credit]', `podachi_credit` = '$post[podachi_credit]', `not_own_credit` = '$post[not_own_credit]', `yes_deduction_credit` = '$post[yes_deduction_credit]', `overdue_credit` = '$post[overdue_credit]', `mfo_credit` = '$post[mfo_credit]', `kvartira_credit` = '$post[kvartira_credit]', `dom_credit` = '$post[dom_credit]', `uchastok_credit` = '$post[uchastok_credit]', `car_credit` = '$post[car_credit]', `kol_nagruzka_credit` = '$post[kol_nagruzka_credit]' WHERE `client_id` = ".$post['id']; mysql_query($sql_u_c); } else { /* Инфа по кредитам */ $sql_credit = "INSERT INTO `credit` (`client_id`, `bancks_credit`, `summa_credit`, `komissiya_credit`, `cel_credit`, `age_credit`, `propiska_credit`, `nagruzka_credit`, `dohod_credit`, `dava_ndfl_credit`, `spravka_credit`, `phone_credit`, `podachi_credit`, `not_own_credit`, `yes_deduction_credit`, `overdue_credit`, `mfo_credit`, `kvartira_credit`, `dom_credit`, `uchastok_credit`, `car_credit`, `kol_nagruzka_credit`) VALUES ({$post['id']}, '$post[bancks_credit]', '$post[summa_credit]', '$post[komissiya_credit]', '$post[cel_credit]', '$post[age_credit]', '$post[propiska_credit]', '$post[nagruzka_credit]', '$post[dohod_credit]', '$post[dava_ndfl_credit]', '$post[spravka_credit]', '$post[phone_credit]', '$post[podachi_credit]', '$post[not_own_credit]', '$post[yes_deduction_credit]', '$post[overdue_credit]', '$post[mfo_credit]', '$post[kvartira_credit]', '$post[dom_credit]', '$post[uchastok_credit]', '$post[car_credit]', '$post[kol_nagruzka_credit]' ); "; //echo $sql_credit; mysql_query($sql_credit); } if($post['who_work'] != $_SESSION['id'] && $post['confirm'] == 0){ // Получаем ID клиента и нового владельца $client_id_check_event = intval($post['id']); $new_owner_id_check_event = intval($post['who_work']); if ($client_id_check_event > 0 && $new_owner_id_check_event > 0) { // Помечаем как прочитанные все события по этому клиенту, кроме нового владельца $sql_clear = "UPDATE events_clients SET `read` = 1, date_update = NOW() WHERE client_id = $client_id_check_event AND event = 'transmitted' AND user_id != $new_owner_id_check_event"; mysql_query($sql_clear); } //Добавляем событие передачи $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$_SESSION['id'].", ".$post['id'].", ".$post['who_work'].", 'transmitted')"; mysql_query($sql_conf); if($post['who_work'] == 0){ //Если передача в общие то восстанавливаем клиента mysql_query("UPDATE clients SET deleted=0 WHERE id={$post['id']}"); $dop_text_ev = "Переведен в общие"; $sql_ev = "INSERT INTO events_clients (client_id, event, dop_text, user_id) VALUES ({$post['id']}, 'update', '{$dop_text_ev}', {$_SESSION['id']})"; mysql_query($sql_ev); } $agent = new User; $agent->get($_SESSION['id']); if(((int)$agent->agencyId == 8353 || (int)$agent->agencyId == 16001) && $post[who_work] != 0){ $sql = "UPDATE clients SET confirm=1, who_work=$post[who_work] WHERE id=$post[id]"; mysql_query($sql); $sql="UPDATE user_client_events SET user_id=$post[who_work] WHERE client_id=$post[id]"; mysql_query($sql); // if(isset($_GET['event'])){ $sql = "UPDATE `events_clients` set `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE client_id=$post[id]"; // echo $sql; mysql_query($sql); // } $sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ('".$post[who_work]."', '".$post[id]."', '".$post[who_work]."', 'accepted', '1')"; mysql_query($sql); $sqlUser = "SELECT `agency_name`, `last_name`, `middle_name`, `phone` FROM `users` where id=".$post[who_work]; $qUser = mysql_query($sqlUser); $rUser = mysql_fetch_assoc($qUser); $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']); if ($rUser['agency']) { $sobstv = $sobstv . ", агентство " . $rUser['agency_name']; } else { $agency = new User; $agency->get($post[who_work]); if (isset($agency->agencyName)) { $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . ", агентство " . $agency->agencyName; } else { $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']); } } $num_search = num_search($rUser['phone']); $sql_confirm_obj = "SELECT * FROM client_confirm_objects WHERE client_id = $post[id] AND status = 0"; $q_confirm_obj = mysql_query($sql_confirm_obj); $is_confirm_obj = false; if(mysql_num_rows($q_confirm_obj) > 0){ $r_confirm_obj = mysql_fetch_assoc($q_confirm_obj); $is_confirm_obj = (bool)$r_confirm_obj['confirm_objects']; } if($is_confirm_obj){ $db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306'); //Передача объекта $sql_client = "SELECT * FROM `client_objects` WHERE client_id = $post[id]"; $q_client = mysql_query($sql_client); while($object = mysql_fetch_assoc($q_client)){ $sql_up = "UPDATE objects SET id_add_user = '".$post[who_work]."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object['object_id']; //echo $sql_up; mysql_query($sql_up); // перенос Зипал $sql = "UPDATE zipal_objects SET user_id=$post[who_work], send_to_update=1 WHERE object_id={$object['object_id']}"; mysql_query($sql); $sqlPack = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id={$object['object_id']}"; mysql_query($sqlPack); $sql_sph = "UPDATE objects SET id_add_user = {$_SESSION['id']} WHERE id = ".$object['object_id']; $db_sphinx->query($sql_sph); } } mysql_query("UPDATE client_confirm_objects SET status = 1 WHERE client_id = $post[id] AND status = 0"); } } else { if($post[who_work] == $_SESSION[id]){ $agent = new User; $agent->get($_SESSION['id']); if(((int)$agent->agencyId == 8353 || (int)$agent->agencyId == 16001) && $post[who_work] != 0){ $sqlUser = "SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `phone` FROM `users` where id=".$post[who_work]; $qUser = mysql_query($sqlUser); $rUser = mysql_fetch_assoc($qUser); $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']); if ($rUser['agency']) { $sobstv = $sobstv . ", агентство " . $rUser['agency_name']; } else { $agency = new User; $agency->get($post[who_work]); if (isset($agency->agencyName)) { $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . ", агентство " . $agency->agencyName; } else { $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']); } } $num_search = num_search($rUser['phone']); //Передача объекта $sql_confirm_obj = "SELECT * FROM client_confirm_objects WHERE client_id = $post[id] AND status = 0"; $q_confirm_obj = mysql_query($sql_confirm_obj); $is_confirm_obj = false; if(mysql_num_rows($q_confirm_obj) > 0){ $r_confirm_obj = mysql_fetch_assoc($q_confirm_obj); $is_confirm_obj = (bool)$r_confirm_obj['confirm_objects']; } if($is_confirm_obj){ $db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306'); $sql_client = "SELECT * FROM `client_objects` WHERE client_id = $post[id]"; $q_client = mysql_query($sql_client); while($object = mysql_fetch_assoc($q_client)){ $sql_up = "UPDATE objects SET id_add_user = '".$post[who_work]."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object['object_id']; //echo $sql_up; mysql_query($sql_up); // перенос Зипал $sql = "UPDATE zipal_objects SET user_id=$post[who_work], send_to_update=1 WHERE object_id={$object['object_id']}"; mysql_query($sql); $sqlPack = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id={$object['object_id']}"; mysql_query($sqlPack); $sql_sph = "UPDATE objects SET id_add_user = {$_SESSION['id']} WHERE id = ".$object['object_id']; $db_sphinx->query($sql_sph); } } mysql_query("UPDATE client_confirm_objects SET status = 1 WHERE client_id = $post[id] AND status = 0"); } } //Событие изменений $dop_text = ''; // hide_client_contacts: для таких юзеров мы не записываем изменения телефона // и email в журнал событий — иначе либо ничего не поменялось (моя защита уже // вернула оригинал из БД), либо в лог утечёт маска "+X *** ..." как "новое значение". $skipContactsLog = function_exists('should_hide_contacts_for_current_user') && should_hide_contacts_for_current_user(); if((string)$r_prev['fio'] !== $post['fio']) $dop_text .= "Изменено имя клиента с «".$r_prev['fio']."» на «".$post[fio]."»"; if(!$skipContactsLog && $r_prev['phone'] !== $post['phone']){ if($dop_text != '') $dop_text .= "
"; $dop_text .= "Изменен телефон клиента с «".$r_prev['phone']."» на «".$post[phone]."»"; } if((int)$r_prev['budget'] !== (int)$post['budget']){ if($dop_text != '') $dop_text .= "
"; if(empty($r_prev['budget'])){ $dop_text .= "Добавлен бюджет ".$post['budget']; } else if(empty($post['budget'])){ $dop_text .= "Удален бюджет ".$r_prev['budget']; } else { $dop_text .= "Изменен бюджет клиента с «".$r_prev['budget']."» на «".$post[budget]."»"; } } if(!$skipContactsLog && $r_prev['email'] !== $post['email']){ if($dop_text != '') $dop_text .= "
"; if(empty($r_prev['email'])){ $dop_text .= "Добавлен email ".$post['email']; } else if(empty($post['email'])){ $dop_text .= "Удален email ".$r_prev['email']; } else { $dop_text .= "Изменен email клиента с «".$r_prev['email']."» на «".$post[email]."»"; } } if($post['type'] !== $r_prev['type']){ if($dop_text != '') $dop_text .= "
"; if(empty($post['type']) || $post['type'] === 'null'){ $dop_text .= "Удален тип недвижимости ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$r_prev['type']); } else if(empty($r_prev['type']) || $r_prev['type'] === 'null'){ $dop_text .= "Добавлен тип недвижимости ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$post['type']); } else { $dop_text .= "Изменен тип недвижимости с ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$r_prev['type'])." на ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$post['type']); } } if($post['work_type'] !== $r_prev['work_type']){ if($dop_text != '') $dop_text .= "
"; if(empty($post['work_type']) || $post['work_type'] === 'null'){ $dop_text .= "Удален тип клиента ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['work_type']); } else if(empty($r_prev['work_type']) || $r_prev['work_type'] === 'null'){ $dop_text .= "Добавлен тип клиента ".str_replace(['[',']','_',','],['','',' ',', '],$post['work_type']); } else { $dop_text .= "Изменен тип клиента с ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['work_type'])." на ".str_replace(['[',']','_',','],['','',' ',', '],$post['work_type']); } } if($post['role'] !== $r_prev['role']){ if($dop_text != '') $dop_text .= "
"; if(empty($post['role']) || $post['role'] === 'null'){ $dop_text .= "Удалена роль клиента ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['role']); } else if(empty($r_prev['role']) || $r_prev['role'] === 'null'){ $dop_text .= "Добавлена роль клиента ".str_replace(['[',']','_',','],['','',' ',', '],$post['role']); } else { $dop_text .= "Изменена роль клиента с ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['role'])." на ".str_replace(['[',']','_',','],['','',' ',', '],$post['role']); } } if($post['opis'] !== $r_prev['opis']){ if($dop_text != '') $dop_text .= "
"; if(empty($post['opis']) || $post['opis'] === ''){ $dop_text .= "Удален комментарий ".$r_prev['opis']; } else if(empty($r_prev['opis']) || $r_prev['opis'] === ''){ $dop_text .= "Добавлен комментарий «".$post['opis']."»"; } else { $dop_text .= "Изменен комментарий с «".$r_prev['opis']."» на «".$post['opis']."»"; } } if((int)$post['source'] !== (int)$r_prev['source']){ if($dop_text != '') $dop_text .= "
"; if((int)$post['source'] == 0){ $prev_source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$r_prev['source']))['source']; $dop_text .= "Удален источник «".$prev_source."»"; } else if((int)$r_prev['source'] == 0){ $source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$post['source']))['source']; $dop_text .= "Добавлен источник «".$source."»"; } else { $source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$post['source']))['source']; $prev_source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$r_prev['source']))['source']; $dop_text .= "Изменен источник с «".$prev_source."» на «".$source."»"; } } if((int)$post['employee'] !== (int)$r_prev['employee_id']) { if ($dop_text != '') $dop_text .= "
"; if ((int)$post['employee'] == 0) { $prev_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$r_prev['employee_id']))['name']; $dop_text .= "Сотрудник партнёра «$prev_employee» был отвязан от клиента"; } else if((int)$r_prev['employee_id'] == 0) { $new_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$post['employee']))['name']; $dop_text .= "Сотрудник партнёра «$new_employee» был привязан к клиенту"; } else { $prev_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$r_prev['employee_id']))['name']; $new_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$post['employee']))['name']; $dop_text .= "У клиента был изменен сотрудник партнёра с «$prev_employee» на «$new_employee»"; } } if($post['birthday'] !== $r_prev['birthday']){ if($post['birthday'] != '-0001-11-30' ){ if($dop_text != '') $dop_text .= "
"; if(empty($post['birthday']) || $post['birthday'] === '' || $post['birthday'] == 'undefined-undefined-') { if($r_prev['birthday'] != '0000-00-00'){ $dop_text .= "Удалена дата дня рождения «".$r_prev['birthday']."»"; } } else if(empty($r_prev['birthday']) || $r_prev['birthday'] === '0000-00-00'){ $dop_text .= "Добавлена дата дня рождения «".$post['birthday']."»"; } else { $dop_text .= "Изменена дата дня рождения с «".$r_prev['birthday']."» на «".$post['birthday']."»"; } } } $phone2_arr = json_decode(html_entity_decode($post['phone2']), ENT_QUOTES); $prevphone2_arr = json_decode(html_entity_decode($r_prev['phone2']), ENT_QUOTES); if(count($phone2_arr) != count($prevphone2_arr)){ if(count($phone2_arr) > count($prevphone2_arr)){ if($dop_text != '') $dop_text .= "
"; $dop_text .= "Добавлены доп. телефоны: "; foreach ($phone2_arr as $ph){ if(!in_array($ph, $prevphone2_arr)){ $dop_text .= $ph.", "; } } } else if(count($phone2_arr) < count($prevphone2_arr)){ if($dop_text != '') $dop_text .= "
"; $dop_text .= "Удалены доп. телефоны: "; foreach ($prevphone2_arr as $ph){ if(!in_array($ph, $phone2_arr)){ $dop_text .= $ph.", "; } } } } foreach ($phone2_arr as $key => $ph){ if(isset($prevphone2_arr[$key]) && $ph !== $prevphone2_arr[$key]){ if($dop_text != '') $dop_text .= "
"; $dop_text .= "Изменен номер с ".$prevphone2_arr[$key]." на ". $ph; } } $objects_arr = json_decode(html_entity_decode($post['objects']), ENT_QUOTES); $prevobjects_arr = json_decode(html_entity_decode($r_prev['objects']), ENT_QUOTES); /*if(count($objects_arr) == 0 && count($prevobjects_arr) == 0){} else{ foreach($prevobjects_arr as $obj){ if(!in_array($obj, $objects_arr)){ if($dop_text != '') $dop_text .= "
"; $obj_res = mysql_fetch_assoc(mysql_query("SELECT `adres` `nazv` FROM `objects` WHERE `id` = ".$obj)); $nazv_obj = $obj_res['nazv'].' '.$obj_res['adres']; $dop_text .= "Удален объект «".$nazv_obj."»"; } } foreach($objects_arr as $obj){ if(!in_array($obj, $prevobjects_arr)){ if($dop_text != '') $dop_text .= "
"; $obj_res = mysql_fetch_assoc(mysql_query("SELECT `adres` `nazv` FROM `objects` WHERE `id` = ".$obj)); $nazv_obj = $obj_res['nazv'].' '.$obj_res['adres']; $dop_text .= "Добавлен объект «".$nazv_obj."»"; } } }*/ if($dop_text != ''){ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$post['id'].", '0', 'update', '".$dop_text."', '1')"; mysql_query($sql_conf); } } } else { $funnel = 0; if($post['funnel_id']) $funnel = (int)$post['funnel_id']; $uId = $_SESSION['id']; /* if (session_status() == PHP_SESSION_ACTIVE) { $uId = $_SESSION['id']; }*/ if ($post['stage'] === 0 || $post['stage'] === '0') { $post['stage'] = 1; } $sql = "INSERT INTO clients(`fio`, `email`, `phone`, `phone2`, `type`, `work_type`, `opis`, `id_agent`, `date_add`, `status`, `budget`, `who_work`, `confirm`, `role`, `objects`, `source`, `employee_id`, `birthday`, `stage`, `hot`, `priority`,`of_objects`, `funnel_id`) VALUES('$post[fio]', '".trim($post['email'])."','$post[phone]','$post[phone2]','$post[type]', '$workType', '$post[opis]', '$uId', NOW(), '$post[status]', '$post[budget]', '$post[who_work]', '$post[confirm]', '$post[role]', '$post[objects]', '$post[source]', '$post[employee]', '$post[birthday]', '$post[stage]', '$post[hot]', '$post[priority]', '$post[of_objects]', '$funnel')"; $inserd_client = true; if($post['who_work'] != $_SESSION['id'] && $post['confirm'] == 0){ //Добавляем событие передачи $insert_sent = true; } } mysql_query($sql); $id_cl = $post['id']; if (isset($inserd_client)) { $id_cl = mysql_insert_id(); self::update_objects($id_cl, $post['objects']); self::update_phone2($id_cl, $post['phone2']); } if(isset($inserd_client)){ /**** Инфа по ипотеке***/ self::get_class_etap($id_cl, $funnel); $sql_ipoteka = "INSERT INTO " ."`ipoteka` SET " . "`client_id`=$id_cl," . "`rynok`='$post[rynok]'," . "`yes_object`=".(int)$post[yes_object]."," . "`jc`='$post[jc]'," . "`ante_pr`='$post[ante_pr]'," . "`ante_rub`='$post[ante_rub]'," . "`comment`='$post[comment_ipoteka]'," . "`yes_doc`=".(int)$post[yes_doc]."," . "`number_doc`='$post[number_doc]'," . "`date_doc`='$post[date_doc]'," . "`doc_komis_pr`='$post[doc_komis_pr]'," . "`doc_komis`='$post[doc_komis]'," . "`yes_bank`=".(int)$post[yes_bank]."," . "`date_bank`='$post[date_bank]'," . "`employee_bank`='$post[employee_bank]'," . "`banks`='$post[banks]'," . "`yes_resolve`=".(int)$post[yes_resolve]."," . "`resolve`='$post[resolve]'," . "`comment_resolve`='$post[comment_resolve]'," . "`yes_issue`=".(int)$post[yes_issue]."," . "`bank_issue`='$post[bank_issue]'," . "`rate_issue`='$post[rate_issue]'," . "`term_issue`='$post[term_issue]'," . "`yes_brak`='$post[yes_brak]'," . "`relationship`='$post[relationship]'," . "`summa_object`='$post[summa_object]'," . "`age`='$post[age]'," . "`co_borrower_fio`='$post[co_borrower_fio]'," . "`co_borrower_age`='$post[co_borrower_age]'," . "`contacts`='$post[contacts]'," . "`co_borrower_dohod`='$post[co_borrower_dohod]'," . "`income`='$post[income]'," . "`credit_load`='$post[credit_load]'"; //echo $sql_ipoteka. ' 1'; mysql_query($sql_ipoteka); /***********************/ /* Инфа по кредитам */ $sql_credit = "INSERT INTO `credit` (`client_id`, `bancks_credit`, `summa_credit`, `komissiya_credit`, `cel_credit`, `age_credit`, `propiska_credit`, `nagruzka_credit`, `dohod_credit`, `dava_ndfl_credit`, `spravka_credit`, `phone_credit`, `podachi_credit`, `not_own_credit`, `yes_deduction_credit`, `overdue_credit`, `mfo_credit`, `kvartira_credit`, `dom_credit`, `uchastok_credit`, `car_credit`, `kol_nagruzka_credit`) VALUES ({$id_cl}, '$post[bancks_credit]', '$post[summa_credit]', '$post[komissiya_credit]', '$post[cel_credit]', '$post[age_credit]', '$post[propiska_credit]', '$post[nagruzka_credit]', '$post[dohod_credit]', '$post[dava_ndfl_credit]', '$post[spravka_credit]', '$post[phone_credit]', '$post[podachi_credit]', '$post[not_own_credit]', '$post[yes_deduction_credit]', '$post[overdue_credit]', '$post[mfo_credit]', '$post[kvartira_credit]', '$post[dom_credit]', '$post[uchastok_credit]', '$post[car_credit]', '$post[kol_nagruzka_credit]' ); "; //echo $sql_credit; mysql_query($sql_credit); } if(isset($insert_sent)){ // Получаем ID клиента и нового владельца $client_id_check_event = intval($post['id']); $new_owner_id_check_event = intval($post['who_work']); if ($client_id_check_event > 0 && $new_owner_id_check_event > 0) { // Помечаем как прочитанные все события по этому клиенту, кроме нового владельца $sql_clear = "UPDATE events_clients SET `read` = 1, date_update = NOW() WHERE client_id = $client_id_check_event AND event = 'transmitted' AND user_id != $new_owner_id_check_event"; mysql_query($sql_clear); } //$id_cl = mysql_insert_id(); $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$_SESSION['id'].", ".$id_cl.", ".$post['who_work'].", 'transmitted')"; mysql_query($sql_conf); if($post['who_work'] == 0){ //Если передача в общие то восстанавливаем клиента mysql_query("UPDATE clients SET deleted=0 WHERE id={$id_cl}"); $dop_text_ev = "Переведен в общие"; $sql_ev = "INSERT INTO events_clients (client_id, event, dop_text, user_id) VALUES ({$id_cl}, 'update', '{$dop_text_ev}', {$_SESSION['id']})"; mysql_query($sql_ev); } $agent = new User; $agent->get($_SESSION['id']); if(((int)$agent->agencyId == 8353 || (int)$agent->agencyId == 16001) && $post[who_work] != 0){ $sql = "UPDATE clients SET confirm=1, who_work=$post[who_work] WHERE id=$id_cl"; mysql_query($sql); $sql="UPDATE user_client_events SET user_id=$post[who_work] WHERE client_id=$id_cl"; mysql_query($sql); // if(isset($_GET['event'])){ $sql = "UPDATE `events_clients` set `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE client_id=$id_cl"; // echo $sql; mysql_query($sql); // } $sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ('".$post[who_work]."', '".$id_cl."', '".$post[who_work]."', 'accepted', '1')"; mysql_query($sql); $sqlUser = "SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `phone` FROM `users` where id=".$post[who_work]; $qUser = mysql_query($sqlUser); $rUser = mysql_fetch_assoc($qUser); $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']); if ($rUser['agency']) { $sobstv = $sobstv . ", агентство " . $rUser['agency_name']; } else { $agency = new User; $agency->get($post[who_work]); if (isset($agency->agencyName)) { $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . ", агентство " . $agency->agencyName; } else { $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']); } } $num_search = num_search($rUser['phone']); //Передача объекта $sql_confirm_obj = "SELECT * FROM client_confirm_objects WHERE client_id = $id_cl AND status = 0"; $q_confirm_obj = mysql_query($sql_confirm_obj); $is_confirm_obj = false; if(mysql_num_rows($q_confirm_obj) > 0){ $r_confirm_obj = mysql_fetch_assoc($q_confirm_obj); $is_confirm_obj = (bool)$r_confirm_obj['confirm_objects']; } if($is_confirm_obj){ $db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306'); $sql_client = "SELECT * FROM `client_objects` WHERE client_id = $id_cl"; $q_client = mysql_query($sql_client); while($object = mysql_fetch_assoc($q_client)){ $sql_up = "UPDATE objects SET id_add_user = '".$post[who_work]."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object['object_id']; //echo $sql_up; mysql_query($sql_up); // перенос Зипал $sql = "UPDATE zipal_objects SET user_id=$post[who_work], send_to_update=1 WHERE object_id={$object['object_id']}"; mysql_query($sql); $sqlPack = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id={$object['object_id']}"; mysql_query($sqlPack); $sql_sph = "UPDATE objects SET id_add_user = {$_SESSION['id']} WHERE id = ".$object['object_id']; $db_sphinx->query($sql_sph); } } mysql_query("UPDATE client_confirm_objects SET status = 1 WHERE client_id = $id_cl AND status = 0"); } } $client_id = 0; if(isset($id_cl)){ $client_id = $id_cl; } else { $client_id = $post['id']; } // Добавляем теги по клиенту if (is_string($post['activities'])) $arr_activities = json_decode(html_entity_decode($post['activities']), ENT_QUOTES); else if (is_array($post['activities'])) $arr_activities = $post['activities']; else $arr_activities = (int)$post['activities']; if ($client_id) { $sql = "DELETE FROM `clients_activities` WHERE `client_id` = '".$client_id."'"; mysql_query($sql); if (!empty($arr_activities)) { if (is_array($arr_activities)) { $sql_a = []; foreach($arr_activities as $key => $activity_id) { $sql_a[] = "('$client_id', '$activity_id')"; } if (count($sql_a) > 0) { $sql = "INSERT INTO `clients_activities` (`client_id`, `activity_id`) VALUES " . implode(', ', $sql_a); mysql_query($sql); } } else if (is_numeric($arr_activities) && $arr_activities > 0) { $sql = "INSERT INTO `clients_activities` (`client_id`, `activity_id`) VALUES ('$client_id', '$arr_activities')"; mysql_query($sql); } } } // Сохраняем поля для интерактивных документов if ($client_id && !empty($post['variables'])) { if (is_array($post['variables'])) { $docs = new Docs(); $docs->saveDocFields($client_id, "clients", $post['variables']); } } if (isset($inserd_client) && $inserd_client) { //сохраняем данные wazzap Clients::createClientWazzapData($client_id, $post); } if($user_ses->agencyId == 5238 || $user_ses->agencyId == 13154){ if($post['send_web_hook']){ $webHook = new WebHookSend($user_ses->agencyId, 1, $client_id, 'client'); } } Clients::add_client_info($client_id, $post); return $client_id; } else { if ($post['id']) { $sql_prev = "SELECT `email`, `phone`, `phone2`, `type`, `work_type`, `role`, `opis`, `objects`, `birthday`, `source`, `employee_id`, `budget`, `fio` FROM `clients` WHERE id = $post[id]"; $q_prev = mysql_query($sql_prev); $r_prev = mysql_fetch_assoc($q_prev); // hide_client_contacts: тот же финальный rescue, что и в первой ветке выше. $isHideUser = function_exists('should_hide_contacts_for_current_user') && should_hide_contacts_for_current_user(); $postPhoneStr = isset($post['phone']) ? (string)$post['phone'] : ''; $postEmailStr = isset($post['email']) ? (string)$post['email'] : ''; $phoneLooksMasked = (strpos($postPhoneStr, '*') !== false) || (preg_match_all('/\d/', $postPhoneStr) < 4); $emailLooksMasked = (strpos($postEmailStr, '*') !== false); if ($isHideUser || $phoneLooksMasked) { $post['phone'] = $r_prev['phone']; } if ($isHideUser || $emailLooksMasked) { $post['email'] = $r_prev['email']; } if ($isHideUser) { $post['phone2'] = $r_prev['phone2']; } $opis = mysql_real_escape_string($post['opis']); $sql = "UPDATE clients SET fio='$post[fio]', email='".trim($post['email'])."', phone='$post[phone]', phone2='$post[phone2]', type='$post[type]', work_type='$workType', opis='$opis', status='$post[status]', budget='$post[budget]', who_work='$post[who_work]', confirm='$post[confirm]', `role`='$post[role]', `objects`='$post[objects]', `source`='$post[source]', `employee_id`='$post[employee]', `birthday`='$post[birthday]', `stage`='$post[stage]', `hot`='$post[hot]', `priority`='$post[priority]' WHERE id=$post[id]"; /* if(empty($post[objects] || $post[objects] == 'null')){ $sql = "UPDATE clients SET fio='$post[fio]', email='".trim($post['email'])."', phone='$post[phone]', phone2='$post[phone2]', type='$post[type]', work_type='$workType', opis='$post[opis]', status='$post[status]', budget='$post[budget]', who_work='$post[who_work]', confirm='$post[confirm]', `role`='$post[role]', `source`='$post[source]', `birthday`='$post[birthday]', `stage`='$post[stage]', `hot`='$post[hot]' WHERE id=$post[id]"; } */ self::update_objects($post['id'], $post['objects']); self::update_phone2($post['id'], $post['phone2']); //Проверяем запись в ипотеке $sql_i = "SELECT `id` from `ipoteka` WHERE `client_id` = ".$post['id']; //echo $sql_i; $q_i = mysql_query($sql_i); if(mysql_num_rows($q_i) > 0){ $r_i = mysql_fetch_assoc($q_i); $sql_u_i = "UPDATE `ipoteka` SET " . "`client_id`=$post[id]," . "`rynok`='$post[rynok]'," . "`yes_object`=".(int)$post[yes_object]."," . "`jc`='$post[jc]'," . "`ante_pr`='$post[ante_pr]'," . "`ante_rub`='$post[ante_rub]'," . "`comment`='$post[comment_ipoteka]'," . "`yes_doc`=".(int)$post[yes_doc]."," . "`number_doc`='$post[number_doc]'," . "`date_doc`='$post[date_doc]'," . "`doc_komis_pr`='$post[doc_komis_pr]'," . "`doc_komis`='$post[doc_komis]'," . "`yes_bank`=".(int)$post[yes_bank]."," . "`date_bank`='$post[date_bank]'," . "`employee_bank`='$post[employee_bank]'," . "`banks`='$post[banks]'," . "`yes_resolve`=".(int)$post[yes_resolve]."," . "`resolve`='$post[resolve]'," . "`denial`='$post[denial]'," . "`revisal`='$post[revisal]'," . "`comment_resolve`='$post[comment_resolve]'," . "`yes_issue`=".(int)$post[yes_issue]."," . "`bank_issue`='$post[bank_issue]'," . "`rate_issue`='$post[rate_issue]'," . "`term_issue`='$post[term_issue]'," . "`yes_brak`='$post[yes_brak]'," . "`relationship`='$post[relationship]'," . "`summa_object`='$post[summa_object]'," . "`age`='$post[age]'," . "`co_borrower_fio`='$post[co_borrower_fio]'," . "`co_borrower_age`='$post[co_borrower_age]'," . "`contacts`='$post[contacts]'," . "`co_borrower_dohod`='$post[co_borrower_dohod]'," . "`income`='$post[income]'," . "`credit_load`='$post[credit_load]'" . " WHERE `id` = ".$r_i['id']; /*if($_SESSION['id']==5238){ echo $sql_u_i; }*/ mysql_query($sql_u_i); } else { $sql_ipoteka = "INSERT INTO " ."`ipoteka` SET " . "`client_id`=$post[id]," . "`rynok`='$post[rynok]'," . "`yes_object`=".(int)$post[yes_object]."," . "`jc`='$post[jc]'," . "`ante_pr`='$post[ante_pr]'," . "`ante_rub`='$post[ante_rub]'," . "`comment`='$post[comment_ipoteka]'," . "`yes_doc`=".(int)$post[yes_doc]."," . "`number_doc`='$post[number_doc]'," . "`date_doc`='$post[date_doc]'," . "`doc_komis_pr`='$post[doc_komis_pr]'," . "`doc_komis`='$post[doc_komis]'," . "`yes_bank`=".(int)$post[yes_bank]."," . "`date_bank`='$post[date_bank]'," . "`employee_bank`='$post[employee_bank]'," . "`banks`='$post[banks]'," . "`yes_resolve`=".(int)$post[yes_resolve]."," . "`resolve`='$post[resolve]'," . "`denial`='$post[denial]'," . "`revisal`='$post[revisal]'," . "`comment_resolve`='$post[comment_resolve]'," . "`yes_issue`=".(int)$post[yes_issue]."," . "`bank_issue`='$post[bank_issue]'," . "`rate_issue`='$post[rate_issue]'," . "`term_issue`='$post[term_issue]'," . "`yes_brak`='$post[yes_brak]'," . "`relationship`='$post[relationship]'," . "`summa_object`='$post[summa_object]'," . "`age`='$post[age]'," . "`co_borrower_fio`='$post[co_borrower_fio]'," . "`co_borrower_age`='$post[co_borrower_age]'," . "`contacts`='$post[contacts]'," . "`co_borrower_dohod`='$post[co_borrower_dohod]'," . "`income`='$post[income]'," . "`credit_load`='$post[credit_load]'"; mysql_query($sql_ipoteka); } //Проверяем информацию о кредите $sql_c = "SELECT `id` FROM `credit` WHERE client_id = ".$post['id']; $q_c = mysql_query($sql_c); if(mysql_num_rows($q_c) > 0){ $sql_u_c = "UPDATE `credit` SET `bancks_credit` = '$post[bancks_credit]', `summa_credit` = '$post[summa_credit]', `komissiya_credit` = '$post[komissiya_credit]', `cel_credit` = '$post[cel_credit]', `age_credit` = '$post[age_credit]', `propiska_credit` = '$post[propiska_credit]', `nagruzka_credit` = '$post[nagruzka_credit]', `dohod_credit` = '$post[dohod_credit]', `dava_ndfl_credit` = '$post[dava_ndfl_credit]', `spravka_credit` = '$post[spravka_credit]', `phone_credit` = '$post[phone_credit]', `podachi_credit` = '$post[podachi_credit]', `not_own_credit` = '$post[not_own_credit]', `yes_deduction_credit` = '$post[yes_deduction_credit]', `overdue_credit` = '$post[overdue_credit]', `mfo_credit` = '$post[mfo_credit]', `kvartira_credit` = '$post[kvartira_credit]', `dom_credit` = '$post[dom_credit]', `uchastok_credit` = '$post[uchastok_credit]', `car_credit` = '$post[car_credit]', `kol_nagruzka_credit` = '$post[kol_nagruzka_credit]' WHERE `client_id` = ".$post['id']; mysql_query($sql_u_c); } else { /* Инфа по кредитам */ $sql_credit = "INSERT INTO `credit` (`client_id`, `bancks_credit`, `summa_credit`, `komissiya_credit`, `cel_credit`, `age_credit`, `propiska_credit`, `nagruzka_credit`, `dohod_credit`, `dava_ndfl_credit`, `spravka_credit`, `phone_credit`, `podachi_credit`, `not_own_credit`, `yes_deduction_credit`, `overdue_credit`, `mfo_credit`, `kvartira_credit`, `dom_credit`, `uchastok_credit`, `car_credit`, `kol_nagruzka_credit`) VALUES ({$post['id']}, '$post[bancks_credit]', '$post[summa_credit]', '$post[komissiya_credit]', '$post[cel_credit]', '$post[age_credit]', '$post[propiska_credit]', '$post[nagruzka_credit]', '$post[dohod_credit]', '$post[dava_ndfl_credit]', '$post[spravka_credit]', '$post[phone_credit]', '$post[podachi_credit]', '$post[not_own_credit]', '$post[yes_deduction_credit]', '$post[overdue_credit]', '$post[mfo_credit]', '$post[kvartira_credit]', '$post[dom_credit]', '$post[uchastok_credit]', '$post[car_credit]', '$post[kol_nagruzka_credit]' ); "; //echo $sql_credit; mysql_query($sql_credit); } if($post['who_work'] != $_SESSION['id'] && $post['confirm'] == 0){ // Получаем ID клиента и нового владельца $client_id_check_event = intval($post['id']); $new_owner_id_check_event = intval($post['who_work']); if ($client_id_check_event > 0 && $new_owner_id_check_event > 0) { // Помечаем как прочитанные все события по этому клиенту, кроме нового владельца $sql_clear = "UPDATE events_clients SET `read` = 1, date_update = NOW() WHERE client_id = $client_id_check_event AND event = 'transmitted' AND user_id != $new_owner_id_check_event"; mysql_query($sql_clear); } //Добавляем событие передачи $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$_SESSION['id'].", ".$post['id'].", ".$post['who_work'].", 'transmitted')"; mysql_query($sql_conf); if($post['who_work'] == 0){ //Если передача в общие то восстанавливаем клиента mysql_query("UPDATE clients SET deleted=0 WHERE id={$post['id']}"); $dop_text_ev = "Переведен в общие"; $sql_ev = "INSERT INTO events_clients (client_id, event, dop_text, user_id) VALUES ({$post['id']}, 'update', '{$dop_text_ev}', {$_SESSION['id']})"; mysql_query($sql_ev); } $agent = new User; $agent->get($_SESSION['id']); if(((int)$agent->agencyId == 8353 || (int)$agent->agencyId == 16001) && $post[who_work] != 0){ $sql = "UPDATE clients SET confirm=1, who_work=$post[who_work] WHERE id=$post[id]"; mysql_query($sql); $sql="UPDATE user_client_events SET user_id=$post[who_work] WHERE client_id=$post[id]"; mysql_query($sql); // if(isset($_GET['event'])){ $sql = "UPDATE `events_clients` set `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE client_id=$post[id]"; // echo $sql; mysql_query($sql); // } $sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ('".$post[who_work]."', '".$post[id]."', '".$post[who_work]."', 'accepted', '1')"; mysql_query($sql); $sqlUser = "SELECT `agency_id`, `first_name`, `last_name`, `middle_name`, `phone` FROM `users` where id=".$post[who_work]; $qUser = mysql_query($sqlUser); $rUser = mysql_fetch_assoc($qUser); $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']); if ($rUser['agency']) { $sobstv = $sobstv . ", агентство " . $rUser['agency_id']; } else { $agency = new User; $agency->get($post[who_work]); if (isset($agency->agencyName)) { $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . ", агентство " . $agency->agencyName; } else { $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']); } } $num_search = num_search($rUser['phone']); //Передача объекта $sql_confirm_obj = "SELECT * FROM client_confirm_objects WHERE client_id = $post[id] AND status = 0"; $q_confirm_obj = mysql_query($sql_confirm_obj); $is_confirm_obj = false; if(mysql_num_rows($q_confirm_obj) > 0){ $r_confirm_obj = mysql_fetch_assoc($q_confirm_obj); $is_confirm_obj = (bool)$r_confirm_obj['confirm_objects']; } if($is_confirm_obj){ $db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306'); $sql_client = "SELECT * FROM `client_objects` WHERE client_id = $post[id]"; $q_client = mysql_query($sql_client); while($object = mysql_fetch_assoc($q_client)){ $sql_up = "UPDATE objects SET id_add_user = '".$post[who_work]."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object['object_id']; //echo $sql_up; mysql_query($sql_up); // перенос Зипал $sql = "UPDATE zipal_objects SET user_id=$post[who_work], send_to_update=1 WHERE object_id={$object['object_id']}"; mysql_query($sql); $sqlPack = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id={$object['object_id']}"; mysql_query($sqlPack); $sql_sph = "UPDATE objects SET id_add_user = {$_SESSION['id']} WHERE id = ".$object['object_id']; $db_sphinx->query($sql_sph); } } mysql_query("UPDATE client_confirm_objects SET status = 1 WHERE client_id = $post[id] AND status = 0"); } } else { //Событие изменений $dop_text = ''; // hide_client_contacts: см. комментарий выше — не пишем contact-изменения в лог. $skipContactsLog = function_exists('should_hide_contacts_for_current_user') && should_hide_contacts_for_current_user(); if((string)$r_prev['fio'] !== $post['fio']) $dop_text .= "Изменено имя клиента с «".$r_prev['fio']."» на «".$post[fio]."»"; if(!$skipContactsLog && $r_prev['phone'] !== $post['phone']){ if($dop_text != '') $dop_text .= " "; $dop_text .= "Изменен телефон клиента с «".$r_prev['phone']."» на «".$post[phone]."»"; } if((int)$r_prev['budget'] !== (int)$post['budget']){ if($dop_text != '') $dop_text .= "
"; if(empty($r_prev['budget'])){ $dop_text .= "Добавлен бюджет ".$post['budget']; } else if(empty($post['budget'])){ $dop_text .= "Удален бюджет ".$r_prev['budget']; } else { $dop_text .= "Изменен бюджет клиента с «".$r_prev['budget']."» на «".$post[budget]."»"; } } if(!$skipContactsLog && $r_prev['email'] !== $post['email']){ if($dop_text != '') $dop_text .= "
"; if(empty($r_prev['email'])){ $dop_text .= "Добавлен email ".$post['email']; } else if(empty($post['email'])){ $dop_text .= "Удален email ".$r_prev['email']; } else { $dop_text .= "Изменен email клиента с «".$r_prev['email']."» на «".$post[email]."»"; } } if($post['type'] !== $r_prev['type']){ if($dop_text != '') $dop_text .= "
"; if(empty($post['type']) || $post['type'] === 'null'){ $dop_text .= "Удален тип недвижимости ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$r_prev['type']); } else if(empty($r_prev['type']) || $r_prev['type'] === 'null'){ $dop_text .= "Добавлен тип недвижимости ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$post['type']); } else { $dop_text .= "Изменен тип недвижимости с ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$r_prev['type'])." на ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$post['type']); } } if($post['work_type'] !== $r_prev['work_type']){ if($dop_text != '') $dop_text .= "
"; if(empty($post['work_type']) || $post['work_type'] === 'null'){ $dop_text .= "Удален тип клиента ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['work_type']); } else if(empty($r_prev['work_type']) || $r_prev['work_type'] === 'null'){ $dop_text .= "Добавлен тип клиента ".str_replace(['[',']','_',','],['','',' ',', '],$post['work_type']); } else { $dop_text .= "Изменен тип клиента с ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['work_type'])." на ".str_replace(['[',']','_',','],['','',' ',', '],$post['work_type']); } } if($post['role'] !== $r_prev['role']){ if($dop_text != '') $dop_text .= "
"; if(empty($post['role']) || $post['role'] === 'null'){ $dop_text .= "Удалена роль клиента ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['role']); } else if(empty($r_prev['role']) || $r_prev['role'] === 'null'){ $dop_text .= "Добавлена роль клиента ".str_replace(['[',']','_',','],['','',' ',', '],$post['role']); } else { $dop_text .= "Изменена роль клиента с ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['role'])." на ".str_replace(['[',']','_',','],['','',' ',', '],$post['role']); } } if($post['opis'] !== $r_prev['opis']){ if($dop_text != '') $dop_text .= "
"; if(empty($post['opis']) || $post['opis'] === ''){ $dop_text .= "Удален комментарий ".$r_prev['opis']; } else if(empty($r_prev['opis']) || $r_prev['opis'] === ''){ $dop_text .= "Добавлен комментарий «".$post['opis']."»"; } else { $dop_text .= "Изменен комментарий с «".$r_prev['opis']."» на «".$post['opis']."»"; } } if((int)$post['source'] !== (int)$r_prev['source']){ if($dop_text != '') $dop_text .= "
"; if((int)$post['source'] == 0){ $prev_source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$r_prev['source']))['source']; $dop_text .= "Удален источник «".$prev_source."»"; } else if((int)$r_prev['source'] == 0){ $source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$post['source']))['source']; $dop_text .= "Добавлен источник «".$source."»"; } else { $source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$post['source']))['source']; $prev_source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$r_prev['source']))['source']; $dop_text .= "Изменен источник с «".$prev_source."» на «".$source."»"; } } if((int)$post['employee'] !== (int)$r_prev['employee_id']) { if ($dop_text != '') $dop_text .= "
"; if (empty($post['employee']) || $post['employee'] === '') { $prev_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$r_prev['employee_id']))['name']; $dop_text .= "Сотрудник партнёра «$prev_employee» был отвязан от клиента"; } else if(!($r_prev['employee_id']) || $r_prev['employee_id'] === '') { $new_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$post['employee']))['name']; $dop_text .= "Сотрудник партнёра «$new_employee» был привязан к клиенту"; } else { $prev_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$r_prev['employee_id']))['name']; $new_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$post['employee']))['name']; $dop_text .= "У клиента был изменен сотрудник партнёра с «$prev_employee» на «$new_employee»"; } } if($post['birthday'] !== $r_prev['birthday']){ if($post['birthday'] != '-0001-11-30' ){ if($dop_text != '') $dop_text .= "
"; if(empty($post['birthday']) || $post['birthday'] === '' || $post['birthday'] == 'undefined-undefined-'){ if($r_prev['birthday'] != '0000-00-00'){ $dop_text .= "Удалена дата дня рождения «".$r_prev['birthday']."»"; } } else if(empty($r_prev['birthday']) || $r_prev['birthday'] === '0000-00-00'){ $dop_text .= "Добавлена дата дня рождения «".$post['birthday']."»"; } else { $dop_text .= "Изменена дата дня рождения с «".$r_prev['birthday']."» на «".$post['birthday']."»"; } } } $phone2_arr = json_decode(html_entity_decode($post['phone2']), ENT_QUOTES); $prevphone2_arr = json_decode(html_entity_decode($r_prev['phone2']), ENT_QUOTES); if(count($phone2_arr) != count($prevphone2_arr)){ if(count($phone2_arr) > count($prevphone2_arr)){ if($dop_text != '') $dop_text .= "
"; $dop_text .= "Добавлены доп. телефоны: "; foreach ($phone2_arr as $ph){ if(!in_array($ph, $prevphone2_arr)){ $dop_text .= $ph.", "; } } } else if(count($phone2_arr) < count($prevphone2_arr)){ if($dop_text != '') $dop_text .= "
"; $dop_text .= "Удалены доп. телефоны: "; foreach ($prevphone2_arr as $ph){ if(!in_array($ph, $phone2_arr)){ $dop_text .= $ph.", "; } } } } foreach ($phone2_arr as $key => $ph){ if(isset($prevphone2_arr[$key]) && $ph !== $prevphone2_arr[$key]){ if($dop_text != '') $dop_text .= "
"; $dop_text .= "Изменен номер с ".$prevphone2_arr[$key]." на ". $ph; } } $objects_arr = json_decode(html_entity_decode($post['objects']), ENT_QUOTES); $prevobjects_arr = json_decode(html_entity_decode($r_prev['objects']), ENT_QUOTES); /* if(count($objects_arr) == 0 && count($prevobjects_arr) == 0){ } else { foreach($prevobjects_arr as $obj){ if(!in_array($obj, $objects_arr)){ if($dop_text != '') $dop_text .= "
"; $obj_res = mysql_fetch_assoc(mysql_query("SELECT `adres` `nazv` FROM `objects` WHERE `id` = ".$obj)); $nazv_obj = $obj_res['nazv'].' '.$obj_res['adres']; $dop_text .= "Удален объект «".$nazv_obj."»"; } } foreach($objects_arr as $obj){ if(!in_array($obj, $prevobjects_arr)){ if($dop_text != '') $dop_text .= "
"; $obj_res = mysql_fetch_assoc(mysql_query("SELECT `adres` `nazv` FROM `objects` WHERE `id` = ".$obj)); $nazv_obj = $obj_res['nazv'].' '.$obj_res['adres']; $dop_text .= "Добавлен объект «".$nazv_obj."»"; } } }*/ if($dop_text != ''){ $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$post['id'].", '0', 'update', '".$dop_text."', '1')"; mysql_query($sql_conf); } } } else { $funnel = 0; if($post['funnel_id']) $funnel = (int)$post['funnel_id']; if ($post['stage'] === 0 || $post['stage'] === '0') { $post['stage'] = 1; } $opis = mysql_real_escape_string($post['opis']); $sql = "INSERT INTO clients(`fio`, `email`, `phone`, `phone2`, `type`, `work_type`, `opis`, `id_agent`, `date_add`, `status`, `budget`, `who_work`, `confirm`, `role`, `objects`, `source`, `employee_id`, `birthday`, `stage`, `hot`,`priority`, `of_objects`, `funnel_id`) VALUES('$post[fio]', '".trim($post['email'])."' ,'$post[phone]','$post[phone2]','$post[type]', '$workType', '$opis', '$_SESSION[id]', NOW(), '$post[status]', '$post[budget]', '$post[who_work]', '$post[confirm]', '$post[role]', '$post[objects]', '$post[source]', '$post[employee]', '$post[birthday]', '$post[stage]', '$post[hot]', '$post[priority]', '$post[of_objects]', '$funnel')"; $inserd_client = true; if($post['who_work'] != $_SESSION['id'] && $post['confirm'] == 0){ //Добавляем событие передачи $insert_sent = true; } } mysql_query($sql); //return var_export(mysql_errno()); if(isset($inserd_client)){ /**** Инфа по ипотеке***/ $id_cl = mysql_insert_id(); self::update_objects($id_cl, $post['objects']); self::update_phone2($id_cl, $post['phone2']); //Добавление договора if (isset($post['contracts'])) { $contracts = json_decode(html_entity_decode($post['contracts']), true); foreach($contracts as $contract) { $date_start = strtotime($contract['date_start']); $date_end = strtotime($contract['date_end']); $sql = "INSERT INTO contracts_client SET ". "client_id = {$id_cl}, ". "type = {$contract['type']}, ". "date_start = {$date_start}, ". "date_end = {$date_end}, ". "number = '{$contract['number']}', ". "days = {$contract['days_mes_end']}, ". "send = {$contract['no_mes_end']}"; if (!mysql_query($sql)) { echo mysql_error(); } } } self::get_class_etap($id_cl, $funnel); $sql_ipoteka = "INSERT INTO " ."`ipoteka` SET " . "`client_id`=$id_cl," . "`rynok`='$post[rynok]'," . "`yes_object`=".(int)$post[yes_object]."," . "`jc`='$post[jc]'," . "`ante_pr`='$post[ante_pr]'," . "`ante_rub`='$post[ante_rub]'," . "`comment`='$post[comment_ipoteka]'," . "`yes_doc`=".(int)$post[yes_doc]."," . "`number_doc`='$post[number_doc]'," . "`date_doc`='$post[date_doc]'," . "`doc_komis_pr`='$post[doc_komis_pr]'," . "`doc_komis`='$post[doc_komis]'," . "`yes_bank`=".(int)$post[yes_bank]."," . "`date_bank`='$post[date_bank]'," . "`employee_bank`='$post[employee_bank]'," . "`banks`='$post[banks]'," . "`yes_resolve`=".(int)$post[yes_resolve]."," . "`resolve`='$post[resolve]'," . "`comment_resolve`='$post[comment_resolve]'," . "`yes_issue`=".(int)$post[yes_issue]."," . "`bank_issue`='$post[bank_issue]'," . "`rate_issue`='$post[rate_issue]'," . "`term_issue`='$post[term_issue]'," . "`yes_brak`='$post[yes_brak]'," . "`relationship`='$post[relationship]'," . "`summa_object`='$post[summa_object]'," . "`age`='$post[age]'," . "`co_borrower_fio`='$post[co_borrower_fio]'," . "`co_borrower_age`='$post[co_borrower_age]'," . "`contacts`='$post[contacts]'," . "`co_borrower_dohod`='$post[co_borrower_dohod]'," . "`income`='$post[income]'," . "`credit_load`='$post[credit_load]'";//echo $sql_ipoteka. ' 2'; mysql_query($sql_ipoteka); /***********************/ /* Инфа по кредитам */ $sql_credit = "INSERT INTO `credit` (`client_id`, `bancks_credit`, `summa_credit`, `komissiya_credit`, `cel_credit`, `age_credit`, `propiska_credit`, `nagruzka_credit`, `dohod_credit`, `dava_ndfl_credit`, `spravka_credit`, `phone_credit`, `podachi_credit`, `not_own_credit`, `yes_deduction_credit`, `overdue_credit`, `mfo_credit`, `kvartira_credit`, `dom_credit`, `uchastok_credit`, `car_credit`, `kol_nagruzka_credit`) VALUES ({$id_cl}, '$post[bancks_credit]', '$post[summa_credit]', '$post[komissiya_credit]', '$post[cel_credit]', '$post[age_credit]', '$post[propiska_credit]', '$post[nagruzka_credit]', '$post[dohod_credit]', '$post[dava_ndfl_credit]', '$post[spravka_credit]', '$post[phone_credit]', '$post[podachi_credit]', '$post[not_own_credit]', '$post[yes_deduction_credit]', '$post[overdue_credit]', '$post[mfo_credit]', '$post[kvartira_credit]', '$post[dom_credit]', '$post[uchastok_credit]', '$post[car_credit]', '$post[kol_nagruzka_credit]' ); "; // echo $sql_credit; mysql_query($sql_credit); } if(isset($insert_sent)){ // Получаем ID клиента и нового владельца $client_id_check_event = intval($post['id']); $new_owner_id_check_event = intval($post['who_work']); if ($client_id_check_event > 0 && $new_owner_id_check_event > 0) { // Помечаем как прочитанные все события по этому клиенту, кроме нового владельца $sql_clear = "UPDATE events_clients SET `read` = 1, date_update = NOW() WHERE client_id = $client_id_check_event AND event = 'transmitted' AND user_id != $new_owner_id_check_event"; mysql_query($sql_clear); } //$id_cl = mysql_insert_id(); $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$_SESSION['id'].", ".$id_cl.", ".$post['who_work'].", 'transmitted')"; mysql_query($sql_conf); if($post['who_work'] == 0){ //Если передача в общие то восстанавливаем клиента mysql_query("UPDATE clients SET deleted=0 WHERE id={$id_cl}"); $dop_text_ev = "Переведен в общие"; $sql_ev = "INSERT INTO events_clients (client_id, event, dop_text, user_id) VALUES ({$id_cl}, 'update', '{$dop_text_ev}', {$_SESSION['id']})"; mysql_query($sql_ev); } $agent = new User; $agent->get($_SESSION['id']); if(((int)$agent->agencyId == 8353 || (int)$agent->agencyId == 16001) && $post[who_work] != 0){ $sql = "UPDATE clients SET confirm=1, who_work=$post[who_work] WHERE id=$id_cl"; mysql_query($sql); $sql="UPDATE user_client_events SET user_id=$post[who_work] WHERE client_id=$id_cl"; mysql_query($sql); // if(isset($_GET['event'])){ $sql = "UPDATE `events_clients` set `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE client_id=$id_cl"; // echo $sql; mysql_query($sql); // } $sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ('".$post[who_work]."', '".$id_cl."', '".$post[who_work]."', 'accepted', '1')"; mysql_query($sql); $sqlUser = "SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `phone`, `phone2` FROM `users` where id=".$post[who_work]; $qUser = mysql_query($sqlUser); $rUser = mysql_fetch_assoc($qUser); $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']); if ($rUser['agency']) { $sobstv = $rUser['agency_name']; } else { $agency = new User; $agency->get($post[who_work]); if (isset($agency->agencyName)) { $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . " Агентство " . $agency->agencyName; } else { $sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']); } } $num_search = num_search($rUser['phone']); //Передача объекта $sql_confirm_obj = "SELECT * FROM client_confirm_objects WHERE client_id = $id_cl AND status = 0"; $q_confirm_obj = mysql_query($sql_confirm_obj); $is_confirm_obj = false; if(mysql_num_rows($q_confirm_obj) > 0){ $r_confirm_obj = mysql_fetch_assoc($q_confirm_obj); $is_confirm_obj = (bool)$r_confirm_obj['confirm_objects']; } if($is_confirm_obj){ $db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306'); $sql_client = "SELECT * FROM `client_objects` WHERE client_id = $id_cl"; $q_client = mysql_query($sql_client); while($object = mysql_fetch_assoc($q_client)){ $sql_up = "UPDATE objects SET id_add_user = '".$post[who_work]."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object['object_id']; //echo $sql_up; mysql_query($sql_up); // перенос Зипал $sql = "UPDATE zipal_objects SET user_id=$post[who_work], send_to_update=1 WHERE object_id={$object['object_id']}"; mysql_query($sql); $sqlPack = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id={$object['object_id']}"; mysql_query($sqlPack); $sql_sph = "UPDATE objects SET id_add_user = {$_SESSION['id']} WHERE id = ".$object['object_id']; $db_sphinx->query($sql_sph); } } mysql_query("UPDATE client_confirm_objects SET status = 1 WHERE client_id = $id_cl AND status = 0"); } } $client_id = 0; if(isset($id_cl)){ $client_id = $id_cl; } else { $client_id = $post['id']; } // Добавляем теги по клиенту if (is_string($post['activities'])) $arr_activities = json_decode(html_entity_decode($post['activities']), ENT_QUOTES); else if (is_array($post['activities'])) $arr_activities = $post['activities']; else $arr_activities = (int)$post['activities']; if ($client_id) { $sql = "DELETE FROM `clients_activities` WHERE `client_id` = '".$client_id."'"; mysql_query($sql); if (!empty($arr_activities)) { if (is_array($arr_activities)) { $sql_a = []; foreach($arr_activities as $key => $activity_id) { $sql_a[] = "('$client_id', '$activity_id')"; } if (count($sql_a) > 0) { $sql = "INSERT INTO `clients_activities` (`client_id`, `activity_id`) VALUES " . implode(', ', $sql_a); mysql_query($sql); } } else if (is_numeric($arr_activities) && $arr_activities > 0) { $sql = "INSERT INTO `clients_activities` (`client_id`, `activity_id`) VALUES ('$client_id', '$arr_activities')"; mysql_query($sql); } } } // Сохраняем поля для интерактивных документов if ($client_id && !empty($post['variables'])) { if (is_array($post['variables'])) { $docs = new Docs(); $docs->saveDocFields($client_id, "clients", $post['variables']); } } if (isset($inserd_client) && $inserd_client) { //сохраняем данные wazzap Clients::createClientWazzapData($client_id, $post); } if($user_ses->agencyId == 5238 || $user_ses->agencyId == 13154){ if($post['send_web_hook']){ $webHook = new WebHookSend($user_ses->agencyId, 1, $client_id, 'client'); } } Clients::add_client_info($client_id, $post); return intval($client_id); } return false; } public static function createClientWazzapData($client_id, $post) { if ($client_id) { if (isset($post['wazzap_chat_type']) && $post['wazzap_chat_type'] && isset($post['wazzap_chat_id']) && $post['wazzap_chat_id'] && isset($post['wazzap_channel_id']) && $post['wazzap_channel_id']) { $wazzap_chat_type = $post['wazzap_chat_type']; $wazzap_chat_id = $post['wazzap_chat_id']; $wazzap_channel_id = $post['wazzap_channel_id']; $wazzap_user_id = $post['wazzap_user_id']; $wazzap_integration_id = $post['wazzap_integration_id']; //связываем клиента с чатом wazzap $sql = "INSERT INTO `client_data_wazzap` (`client_id`, `chat_type`, `chat_id`, `channel_id`, `user_id`, `integration_id`) VALUES ('$client_id', '$wazzap_chat_type', '$wazzap_chat_id', '$wazzap_channel_id', '$wazzap_user_id', '$wazzap_integration_id')"; mysql_query($sql); $pdo = new MysqlPdo(hst, ndb, user, pass); $sql = "SET NAMES 'utf8'"; $pdo->query($sql); $agency_id = User::getUserAgencyID(); $wazzap = new Wazzap($agency_id, $pdo); $wazzap->createWazzapContact($client_id, $wazzap_user_id, $post["fio"], $wazzap_chat_type, $wazzap_chat_id); } } } public function verifity_phone($post) { $user_ses = new User; $user_ses->get($_SESSION['id']); $depClass = new Department(); /*if (($post['id'] && (!isset($post['phone']) || !$post['phone']))) { $sqlPhone = "SELECT phone FROM clients WHERE id = $post[id]"; $resPhone = mysql_query($sqlPhone); $phRow = mysql_fetch_assoc($resPhone); $post['phone'] = $phRow['phone']; }*/ //$sql = "SELECT users.id, users.fio FROM users WHERE id IN (SELECT DISTINCT CASE WHEN clients.who_work = 0 THEN clients.id_agent ELSE clients.who_work END FROM clients WHERE clients.phone='$post[phone]')"; // echo $_POST[objects]; $sql = "select id as idc, phone, if(who_work = 0, id_agent, who_work) as id, (SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as fio from users WHERE id = if(clients.who_work = 0, clients.id_agent, clients.who_work)) as fio from clients WHERE cancel=0 AND (clients.phone='$post[verifity_phone]' OR id in (SELECT client_id FROM clients_phone2 WHERE phone = '$post[verifity_phone]'))"; if ($post['id']) { $sql = $sql." and clients.id != $post[id]"; } //добавляем ограничение на воронку, ищем повторы внутри воронки if(isset($post['funnel_id'])) { $funnelForCheck = (int)$post['funnel_id']; } else { $funnelForCheck = 0; } if($user_ses->agencyId != 21951){ $sql = $sql." and clients.funnel_id = $funnelForCheck"; } $rez = mysql_query($sql); $count = mysql_num_rows($rez); if ($count > 0) { $agencyId = null; if($user_ses->id_manager == 0 && $user_ses->agency == 0){ //Не агентство $agencyId = $_SESSION['id']; } else if ($_SESSION['agency']) { $agencyId = $_SESSION['id']; } else { if ($_SESSION['manager']) { $user = new User; $user->checkPermissions(); $agencyId = $user->id_manager; } else { $user = new User; $user->checkPermissions(); if ($user->id_manager > 0) { $agency = new User; $agency->get($user->id_manager); if($agency->id_manager) { $agency->get($agency->id_manager); } $agencyId = $agency->id; } } } if($agencyId == 7945 || $agencyId == 7441){ } else if ($agencyId == 7384 && ($post['source'] == 498 || $post['source'] == 589 || $post['source'] == 677)){ } else { $idsFromAgency = array(); $idsFromAgency[] = $agencyId; $agency = new User(); $managers = $agency->getAllManagers($agencyId); if($managers) { foreach ($managers as $i => $manager) { $idsFromAgency[] = $manager['id']; if((int)$manager['role_id'] > 0 && (int)$manager['department_id'] > 0){ $role_user = $depClass->getRole((int)$manager['role_id']); if($role_user['role'] == 'admin_department'){ $menagerDep = User::getDepManagers($role_user['department_id']); foreach($menagerDep as $md){ if(!in_array($md['id'], $idsFromAgency)){ $idsFromAgency[] = $md['id']; } $thisAgents = User::getAgentsOfAgency($md['id'], true); foreach($thisAgents as $da){ if (!in_array($da['id'], $idsFromAgency)) { $idsFromAgency[] = $da['id']; } } } } } } } $agents = $agency->getAllAgents($agencyId); if($agents) { foreach ($agents as $i => $agent) { $idsFromAgency[] = $agent['id']; } } // список пользователей, у которых есть похожие клиенты while ($user = mysql_fetch_assoc($rez)) { if (in_array($user['id'], $idsFromAgency)) { $fio = trim($user['fio']); $errorText = "Клиент с указанным телефоном уже привязан к агенту $fio! ID клиента ".$user['idc']; $errorText .= "

Добавить новую заявку по данному клиенту?

"; return $errorText; } } } } return 0; } public function delReason($post) { $errors = []; $dop_text = ""; $select_text = ""; if($post['note'] == 1){ // При закрытии отказом (denial) JS передаёт текущую дату в $post['datazakl'], // парсить её не нужно — используем текущее время напрямую. $t = date_create(); $formatted_date = date_format($t,"Y-m-d H:i:s"); $formatted_dateZajavki = date_format($t,"d.m.Y H:i:s"); }else{ $test = substr($post['datazakl'], 0, -3); $dateZajavki = date('d.m.Y', intval($test)); $phpdate = strtotime($dateZajavki); $formatted_d = date( 'Y-m-d', $phpdate ); $today = date('Y-m-d'); if($today == $formatted_d){ $formatted_date = date('Y-m-d H:i:s'); }else{ $formatted_date = date( 'Y-m-d H:i:s', $phpdate ); } $formatted_dateZajavki = date( 'd.m.Y', $phpdate ); } if ($post['denial']) { $sql_d = "SELECT * FROM denial_work WHERE id = ".$post['denial']; if ($q_d = mysql_query($sql_d)) { $r_d = mysql_fetch_assoc($q_d); $select_text = $r_d['name']; } else { $errors[] = mysql_error(); } } if ($post['tempid']) { $sql_mes = "SELECT * FROM step_notify_closure WHERE temp_id = {$post['tempid']}"; if ($q_mes = mysql_query($sql_mes)) { if (mysql_num_rows($q_mes) > 0) { $mes = mysql_fetch_assoc($q_mes); } } else { $errors[] = mysql_error(); } } if (!empty($post['reason']) || $select_text != "") { $dop_text .= "Причина: «".$select_text.". ".$post['reason']."»"; if (isset($mes)) { $text = $mes['text']."<br>Закрыт. ".$dop_text; if (mysql_query("UPDATE step_notify_closure SET text='{$text}', send=0 WHERE temp_id = {$post['tempid']}")) $errors[] = mysql_error(); } } if (!empty($select_text)) $sql = "UPDATE clients SET reason='".$select_text.". ".$post['reason']."', who_delete = '$_SESSION[id]', deleted=1, denial = '$post[denial]' WHERE id=$post[id_del_client]"; else $sql = "UPDATE clients SET reason='".$post['reason']."', who_delete = '$_SESSION[id]', deleted=1, denial = '$post[denial]' WHERE id=$post[id_del_client]"; if (isset($post['summa']) && !empty($post['luck'])) { if ($dop_text != '') $dop_text .= " "; $dop_text .= "$post[reason] Совершена сделка на ".$post['summa']." руб.".$formatted_dateZajavki; if (isset($mes)) { $text = $mes['text']."<br>Закрыт. Совершена сделка на ".$post['summa']." руб. ".$formatted_dateZajavki; if (mysql_query("UPDATE step_notify_closure SET text='{$text}', send=0 WHERE temp_id = {$post['tempid']}")) $errors[] = mysql_error(); } $sql = "UPDATE clients SET reason='$dop_text', who_delete = '$_SESSION[id]', deleted=1, summa='$post[summa]', confirm='$post[luck]' WHERE id=$post[id_del_client]"; } if (!mysql_query($sql)) $errors[] = mysql_error(); $sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`, `dop_text`, `date_update`) VALUES ('".$_SESSION['id']."', '".$post['id_del_client']."', '".$_SESSION['id']."', 'delete', '1', '".$dop_text."', '".$formatted_date."')"; if (!mysql_query($sql)) $errors[] = mysql_error(); if (count($errors)) return $errors; else return true; } public function restore($id) { $errors = []; $sql = "UPDATE `clients` SET reason='', confirm = 1, who_delete=NULL, deleted=0 WHERE id=$id"; $dop_text = "Восстановлен из закрытых."; $sql2 = "INSERT INTO `events_clients` ( user_id, client_id, from_id, event, `read`, `dop_text` ) VALUES ( '".$_SESSION['id']."', '".$id."', '".$_SESSION['id']."', 'restored', '1', '".$dop_text."' )"; if (!(mysql_query($sql) && mysql_query($sql2))) $errors[] = mysql_error(); if (count($errors)) return $errors; else return true; } public function getMyClients($id_agent) { $bd_usl = ""; if($_GET['new']) { $bd_usl = " AND confirm=0 AND status <>2 AND deleted<>1"; } if($_GET['work']) { $bd_usl = " AND confirm=1 AND status <>2 AND deleted<>1"; } //if($_GET['id_agent']) { $bd_usl = " AND confirm=1 AND status <>2 AND deleted<>1"; } //if($_GET['id_manager']) { $bd_usl = " AND confirm=1 AND status <>2 AND deleted<>1"; } if($_GET['end']) { $bd_usl = " AND status=2 AND deleted<>1"; } if (isset($_GET['workType'])) { $bd_usl.=" AND work_type = " . $_GET['workType']; } $bd_who_work = "who_work = $id_agent "; if ($_GET['new']) { $bd_who_work = " (who_work = $id_agent or (id_agent = $id_agent and who_work > 0)) "; } $result = array(); $sql_count = "SELECT COUNT(*) FROM clients WHERE cancel = 0 AND $bd_who_work $bd_usl"; $result['vsego'] = $vsego = mysql_result(mysql_query($sql_count),0); $sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add FROM clients WHERE cancel = 0 AND $bd_who_work AND deleted<>1 $bd_usl ORDER BY clients.id DESC"; if (isset($_GET['dev'])) { echo $sql; } $rez = mysql_query($sql); while($cl = mysql_fetch_assoc($rez)) { $result['clients'][] = $cl; } return $result; } public function getClients($id_agent) { // используется в footer.php $result = array(); $sql_count = "SELECT COUNT(*) FROM clients WHERE cancel = 0 AND who_work = $id_agent AND confirm=1 AND deleted<>1"; $result['vsego'] = $vsego = mysql_result(mysql_query($sql_count),0); $sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add FROM clients WHERE who_work = $id_agent AND confirm=1 AND deleted<>1 ORDER BY clients.id DESC"; $rez = mysql_query($sql); while($cl = mysql_fetch_assoc($rez)) { $result['clients'][] = $cl; } return $result; } public function getClientsWithCommon($id_agent, $agencyId) { // используется в footer.php $result = array(); $sql_count = "SELECT COUNT(*) FROM clients WHERE cancel = 0 AND ((who_work = $id_agent AND confirm=1) or (who_work=0 AND id_agent in (SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId))))) AND deleted<>1"; $result['vsego'] = $vsego = mysql_result(mysql_query($sql_count),0); $sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add FROM clients WHERE ((who_work = $id_agent AND confirm=1) or (who_work=0 AND id_agent in (SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId))))) AND deleted<>1 ORDER BY clients.id DESC"; $rez = mysql_query($sql); while($cl = mysql_fetch_assoc($rez)) { $result['clients'][] = $cl; } return $result; } public function getCountClients($deleted = false) { $mmid[] = "id_agent = $_SESSION[id]"; $rez = mysql_query("SELECT id FROM users WHERE id_manager=$_SESSION[id]"); while($mm = mysql_fetch_row($rez)) { $mmid[] = "id_agent = ".$mm[0]; $rez2 = mysql_query("SELECT id FROM users WHERE id_manager=$mm[0]"); while($mm2 = mysql_fetch_row($rez2)) { $mmid[] = "id_agent = ".$mm2[0]; } } if($deleted) $bd_usl_managers = "deleted=1"; else $bd_usl_managers = "1"; $bd_usl_managers .= " AND (".implode(" OR ",$mmid).") AND cancel = 0"; $sql_count = "SELECT COUNT(*) FROM clients WHERE $bd_usl_managers"; return mysql_result(mysql_query($sql_count),0); } public function getCountClientsWhoWork($id_user) { $sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND confirm=1 AND deleted<>1 AND cancel = 0"; $rez = mysql_result(mysql_query($sql_count),0); if($rez > 0) { $counter = "".$rez.""; } else { $counter = ""; } return $counter; } public function getCountNewClients($id_user) { //$sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work > 0)) AND confirm=0 AND deleted<>1"; $sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND confirm=0 AND deleted<>1 AND cancel = 0"; $rez = mysql_result(mysql_query($sql_count),0); if($rez > 0) { $counter = "".$rez.""; } else { $counter = ""; } return $counter; } public function getCountResClients($id_user) { //$sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work > 0)) AND confirm=0 AND deleted<>1"; $sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND confirm=0 AND deleted<>1 AND cancel = 0"; $rez = mysql_result(mysql_query($sql_count),0); $counter = $rez; return $counter; } public function getCountWorkTypeClientsNumber($id_user, $workType) { $sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work = 0)) AND deleted<>1 AND cancel = 0 AND work_type=$workType"; return mysql_result(mysql_query($sql_count),0); } public function getCountNewClientsNumber($id_user, $workType) { $sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work > 0)) AND confirm=0 AND deleted<>1 AND cancel = 0 AND work_type=$workType"; return mysql_result(mysql_query($sql_count),0); } public function getCountEndClientsNumber($id_user, $workType) { $sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work > 0)) AND status=2 AND deleted<>1 AND cancel = 0 AND work_type=$workType"; return mysql_result(mysql_query($sql_count),0); } public function getCountWorkClientsNumber($id_user, $workType) { $sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND and confirm= 1 AND status <> 2 AND deleted<>1 AND work_type=$workType AND cancel = 0"; return mysql_result(mysql_query($sql_count),0); } public function getCountEndClients($id_user) { $sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND status=2 AND deleted<>1 AND cancel = 0"; $rez = mysql_result(mysql_query($sql_count),0); if($rez > 0) { $counter = "".$rez.""; } else { $counter = ""; } return $counter; } public function getCountWorkClients($id_user) { $sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND deleted<>1 AND cancel = 0"; $rez = mysql_result(mysql_query($sql_count),0); return $rez; } //Получение id клиентов с просроченными этапами public function getIdExpiredStages($where){ $user = new User; $user->get($_SESSION['id']); $agency_id = $user->agencyId; $expiredStagesClients = array(); $stepIds = array(); $stepDays = array(); $funnelIds = array(); if($agency_id > 0){ //Этапы $sql_f = "SELECT id FROM `funnel` WHERE agency_id=$agency_id AND deleted = 0"; $q_f = mysql_query($sql_f); while($r_f = mysql_fetch_assoc($q_f)){ $funnelIds[] = (int)$r_f['id']; } $sql_st = "SELECT id, days_step FROM funnel_steps WHERE funnel_id in (".implode(',', $funnelIds).")"; $q_st = mysql_query($sql_st); while($r_st = mysql_fetch_assoc($q_st)){ $stepDays[(int)$r_st['id']] = $r_st['days_step']; } $sql = "SELECT id, step_id, date_add, (SELECT date_update FROM clients_funnel_step WHERE client_id=clients.id) as date_update FROM clients WHERE 1 $where AND funnel_id > 0 AND step_id > 0"; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ if($stepDays[(int)$r['step_id']] > 0){ $days_step = $stepDays[(int)$r['step_id']]; if(!empty($r['date_update'])){ $lostDate = $r['date_update']; $interval = date_diff(new DateTime(), new DateTime($lostDate))->days; if($interval > $days_step){ $expiredStagesClients[] = $r['id']; } } else { $lostDate = $r['date_add']; $interval = date_diff(new DateTime(), new DateTime($lostDate))->days; if($interval > $days_step){ $expiredStagesClients[] = $r['id']; } } } } } return $expiredStagesClients; } public function getAllClients() { $result = array(); $bd_usl_managers = ""; $bd_usl = ""; $p_sql = ""; $join = ""; $depClass = new Department(); $adminDep = false; $dep_user = $depClass->getDepartment((int)$_SESSION['id']); $searchCheckUserId = $_SESSION['id']; $sql_check_permissions = "SELECT `menu_all_clients`, `menu_all_clients_edit` FROM user_permissions WHERE user_id = $searchCheckUserId"; $q_check_permissions = mysql_query($sql_check_permissions); $r_check_permissions = mysql_fetch_assoc($q_check_permissions); $clientsIdsDop = []; if (!$_GET['all'] || !$_POST['all']) { $get = clearInputData($_GET); $post = clearInputData($_POST); $searchUserId = $_SESSION['id']; if ($_SESSION['users_admin']) { $currentUser = new User; $currentUser->checkPermissions(); $searchUserId = $currentUser->agencyId; } else if ($r_check_permissions['menu_all_clients'] == 1) { $currentUser = new User; $currentUser->checkPermissions(); $searchUserId = $currentUser->agencyId; } else if($dep_user['role'] == 'manager_office'){ $currentUser = new User; $currentUser->checkPermissions(); $searchUserId = $dep_user['admin']; $adminDep = true; } else if($dep_user['role'] == 'manager_office_menager') { //$currentUser = new User; //$$currentUser->checkPermissions(); //$currentUser->checkPermissions(); //$searchUserId = $currentUser->id_manager; $searchUserId = $_SESSION['id_manager']; $adminDep = true; } //$mmid[] = "id_agent = $searchUserId"; if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step'])){ $mmid[] = "id_agent = $searchUserId"; } else { $mmid[] = "who_work = $searchUserId"; $wid[] = $searchUserId; if($post['emp'] ){ $wid[] = $post['emp']; } } if ($_GET['deleted']) { $bd_usl = "AND deleted=1"; // если ищем по удаленным и под менеджером - пропускаем этот код - здесь идет добавление по агентству if (!($_GET['deleted'] && $_SESSION['manager'])) { $rez1 = mysql_query("SELECT id_manager FROM users WHERE id=$searchUserId"); while ($mm1 = mysql_fetch_row($rez1)) { $mmid[] = "id_agent = " . $mm1[0]; $rez01 = mysql_query("SELECT id_manager FROM users WHERE id=$mm1[0]"); while ($mm01 = mysql_fetch_row($rez01)) { $mmid[] = "id_agent = " . $mm01[0]; } $rez02 = mysql_query("SELECT id FROM users WHERE id_manager=$mm1[0] and id_manager<>0"); while ($mm02 = mysql_fetch_row($rez02)) { $mmid[] = "id_agent = " . $mm02[0]; } } } $rez2 = mysql_query("SELECT id FROM users WHERE id_manager=$searchUserId"); while ($mm2 = mysql_fetch_row($rez2)) { $mmid[] = "id_agent = " . $mm2[0]; $rez03 = mysql_query("SELECT id FROM users WHERE id_manager=$mm2[0]"); while ($mm03 = mysql_fetch_row($rez03)) { $mmid[] = "id_agent = " . $mm03[0]; } } } $arrWho_work = array(); $rez3 = mysql_query("SELECT id FROM users WHERE id_manager=$searchUserId"); while ($mm = mysql_fetch_row($rez3)) { if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step'])){ $mmid[] = "id_agent = " . $mm[0]; $wid[] = $mm[0]; } else { $mmid[] = "who_work = " . $mm[0]; $arrWho_work[] = $mm[0]; $wid[] = $mm[0]; } $rez04 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$mm[0]"); while ($mm2 = mysql_fetch_row($rez04)) { if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step'])){ $mmid[] = "id_agent = " . $mm2[0]; } else { $mmid[] = "who_work = " . $mm2[0]; $arrWho_work[] = $mm[0]; $wid[] = $mm[0]; if($mm2[1] > 0){ $rez004 = mysql_query("SELECT id FROM users WHERE id_manager=$mm2[0]"); while ($mm04 = mysql_fetch_row($rez004)){ if(!in_array($mm04[0], $arrWho_work)){ $arrWho_work[] = $mm04[0]; $mmid[] = "who_work = " . $mm04[0]; $wid[] = $mm04[0]; } } } } } } $bd_usl_managers = " AND (".implode(" OR ",$mmid).")"; if(!empty($wid)){ $sql_doer = "SELECT * FROM clients_doers WHERE user_id in (".implode(',', $wid).") AND confirm = 1"; $q_doer = mysql_query($sql_doer); while($r_doer = mysql_fetch_assoc($q_doer)){ $clientsIdsDop[] = $r_doer['client_id']; } $bd_usl_managers = " AND ((".implode(" OR ",$mmid).")"; if(!empty($clientsIdsDop)){ $bd_usl_managers .= " OR clients.id in (".implode(',', $clientsIdsDop).")"; } $bd_usl_managers .= ")"; } // echo $bd_usl_managers.'
'; } else { // находим ИД агентства и по нему ищем всех свободных клиентов $agencyId = -1; if ($_SESSION['agency']) { $agencyId = $_SESSION['id']; } else if ($r_check_permissions['menu_all_clients'] == 1) { $currentUser = new User; $currentUser->checkPermissions(); $searchUserId = $dep_user['admin']; } else { if ($_SESSION['users_admin']) { $currentUser = new User; $currentUser->checkPermissions(); $agencyId = $currentUser->agencyId; // } else if($dep_user['role'] == 'manager_office'){ // $currentUser = new User; // $currentUser->checkPermissions(); // $searchUserId = $dep_user['admin']; // $adminDep = true; } else if($dep_user['role'] == 'manager_office_menager') { //$currentUser = new User; //$currentUser->checkPermissions(); $searchUserId = $_SESSION['id_manager']; } else { if ($_SESSION['manager']) { $user = new User; $user->checkPermissions(); $agencyId = $user->id_manager; } else { $user = new User; $user->checkPermissions(); if ($user->id_manager > 0) { $agency = new User; $agency->get($user->id_manager); if ($agency->id_manager) { $agency->get($agency->id_manager); } $agencyId = $agency->id; } } } } $bd_usl = "AND deleted=0 AND who_work=0 AND id_agent in (SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))"; } $get = clearInputData($_GET); $post = clearInputData($_POST); if(!empty($this->params_search)){ $post = $this->params_search; } if (isset($get['workType'])) { $bd_usl.=" AND work_type = " .$get['workType']; } if($get['search']) { $phone = preg_replace('/[+\-\(\)\/\?,.;:%№!\s]/', '', $get['search']); $bd_usl.=" AND (fio LIKE '%$get[search]%' OR phone LIKE '%$phone%' OR phone2 LIKE '%$phone%' OR email LIKE '%$get[search]%')"; $result['str_url_add'] = "search=".$get['search']; } if($post['search']) { $phone = preg_replace('/[+\-\(\)\/\?,.;:%№!\s]/', '', $post['search']); $_SESSION['client_search'] = $post['search']; $post['search'] = mb_strtolower(trim($post['search']), "UTF-8"); $bd_usl.=" AND (fio LIKE '%$post[search]%' OR phone LIKE '%$phone%' OR id in (SELECT client_id FROM clients_phone2 WHERE phone LIKE '%$phone%') OR email LIKE '%$post[search]%'"; if (preg_match('/^\d+$/', $post['search'])) $bd_usl .= " or id = ".$post['search']; $bd_usl.=")"; $result['str_url_add'] = "search=".$post['search']; } else { unset($_SESSION['client_search']); } if($post['id']){ $bd_usl.=" AND id = {$post['id']}"; } if($post['fio']){ $bd_usl.=" AND fio LIKE '%$post[fio]%'"; } if($post['phone']){ $bd_usl.=" AND (phone LIKE '%$post[phone]%' OR id in (SELECT client_id FROM clients_phone2 WHERE phone LIKE '%$post[phone]%'))"; } if($post['period']){ if($post['accepted'] || $post['transmitted']){ $dates = getPeriod($post['period'],$post['onDate'], $post['offDate']); $date_between = $dates['between']; $whereTasks = $dates['whereTasks']; } else if($post['step'] || $post['source']){ $dates = getPeriod($post['period'], $post['onDate'], $post['offDate']); $date_between = $dates['between']; $bd_usl.= " AND `date_add` $date_between"; } else if($post['filter_stage_close'] || $post['filter_stage_hit']){ $dates = getPeriod($post['period'], $post['onDate'], $post['offDate']); $date_between = $dates['between']; if($post['filter_stage_close'] && (int)$post['date_tasks'] == 11){ $bd_usl.= " AND `date_add` $date_between"; } else { $bd_usl .= " AND (if((SELECT count(*) FROM `events_clients` WHERE client_id=clients.id and event='delete' and user_id=clients.who_delete order by id desc limit 1)>0, " . "(SELECT date_update FROM `events_clients` WHERE client_id=clients.id and event='delete' and user_id=clients.who_delete order by id desc limit 1) $date_between, " . "clients.date_add $date_between))"; } } else { if($post['period'] == 'period'){ $onDate = date('Y-m-d 00:00:00', strtotime($post['onDate'])); if(empty($onDate)) $onDate = '1970-01-01 00:00:00'; if(!empty($post['offDate'])) { $offDate = date('Y-m-d 23:59:59', strtotime($post['offDate'])); } else { $offDate = date('Y-m-d 23:59:59'); } if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_all_do'){ $bd_usl.= " AND `date_add` < '{$onDate}'"; } else { $bd_usl.= " AND `date_add` between '{$onDate}' AND '{$offDate}'"; } $_SESSION['on_date'] = date('d.m.Y', strtotime($onDate)); $_SESSION['off_date'] = date('d.m.Y', strtotime($offDate)); } else { unset($_SESSION['on_date']); unset($_SESSION['off_date']); $dates = getPeriod($post['period'], $post['onDate'], $post['offDate']); $date_between = $dates['between']; //$arrPeriod = ['today' => '-0 day', 'week' => '-6 day', 'month' => '-30 day', 'quarter' => '-120 day', 'year' => '-365']; //$days = date('Y-m-d', strtotime($arrPeriod[$post['period']])); if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_all_do'){ $bd_usl.= " AND `date_add` < '{$dates['dateStart']}'"; } else { $bd_usl.= " AND `date_add` $date_between"; } } } $_SESSION['client_period'] = $post['period']; } else { unset($_SESSION['client_period']); } $bd_stage = ""; if($post['filter_stage_work']){ if($post['filter_confirm'] || $post['filter_stage_send']){ $bd_stage = " and deleted <> '1'"; } else { $bd_stage = " and deleted <> '1' and confirm > 0"; } $_SESSION['filter_stage_work'] = 1; } else { unset($_SESSION['filter_stage_work']); } if($post['filter_stage_close']){ $bd_stage .= " and deleted = '1' AND confirm <> '10'"; $_SESSION['filter_stage_close'] = 1; } else { unset($_SESSION['filter_stage_close']); } if(isset($post['denial'])){ $bd_stage .= " and denial = '".$post['denial']."'"; } if($post['filter_stage_hit']){ $bd_stage .= " AND deleted = '1' AND confirm = 10"; $_SESSION['filter_stage_hit'] = 1; } else { unset($_SESSION['filter_stage_hit']); } /* if($bd_stage != ""){ $bd_stage = " AND".$bd_stage.")"; }*/ if($post['filter_stage_send']){ if($post['filter_stage_work']){ //$bd_usl.= " AND deleted <> '1' AND (confirm = 0 or confirm = 1) AND who_work != " . $_SESSION['id'] ; } else { $bd_usl.= " AND deleted <> '1' AND confirm = 0 AND who_work != " . $_SESSION['id'] ; } $_SESSION['filter_stage_send'] = 1; } else { unset($_SESSION['filter_stage_send']); } if($post['filter_stage_hot']){ if($post['filter_stage_work']){ $bd_usl.= " or `hot` = 1"; } else { $bd_usl.= " AND `hot` = 1"; } $_SESSION['filter_stage_hot'] = 1; } else { unset($_SESSION['filter_stage_hot']); } $funnel_id = 0; if($post['funnel']){ if($post['funnel'] != 'all'){ $bd_usl.= " AND `funnel_id` in (".$post['funnel'].")"; } $funnel_id = $post['funnel']; } else if(!empty($this->params_search)) { //$bd_usl.= " AND `funnel_id` = 0"; } else { $bd_usl.= " AND `funnel_id` = 0"; } if($post['step']){ if($post['step'] != 'all'){ $bd_usl.= " AND `step_id` = ".$post['step']; } } if($post['source']){ $sourcesArr = explode(",", $post['source']); $sourceArr = array(); if(!empty($sourcesArr )){ foreach($sourcesArr as $sourceCl){ if(strpos($sourceCl, 'all_') !== false){ $source_group = (int)str_replace('all_','',$sourceCl); if($source_group > 0){ $sql_adv = "SELECT * FROM `advertising_sources` WHERE group_id = {$source_group}"; $q_adv = $this->db->query($sql_adv); while($r_adv = $this->db->fetch_assoc($q_adv)){ $sourceArr[] = "`source` = '{$r_adv['id']}'"; } } else if($source_group == 0){ $users_ids_this = array(); $CallEvents = new CallEvents(); $user_this = new User; $user_this->get($_SESSION['id']); $users_ids_this = array_keys($CallEvents->getAllUserAgency($user_this->agencyId, $users_ids_this)); $sql_adv = "SELECT * FROM `advertising_sources` WHERE group_id = {$source_group} AND (user_id in (".implode(',', $users_ids_this).") or manager_id in (".implode(',', $users_ids_this)."))"; $q_adv = $this->db->query($sql_adv); while($r_adv = $this->db->fetch_assoc($q_adv)){ $sourceArr[] = "`source` = '{$r_adv['id']}'"; } } } else { if($sourceCl == -1){ $sourceArr[] = "`source` is null"; $sourceArr[] = "`source` = ''"; $sourceArr[] = "`source` = 'null'"; $sourceArr[] = "`source` = '0'"; } else { $sourceArr[] = "`source` = '{$sourceCl}'"; } } } $bd_usl .= " AND (".implode(" OR ",$sourceArr).")"; } } if($post['filter_emp']){ $doers_who = array(); $clientsIdsDop = array(); $empwho = array(); $empArr = json_decode(html_entity_decode($post['filter_emp']), ENT_QUOTES); foreach($empArr as $empId){ $temp_where = ''; //$empwho[] = "id_agent = $empId"; if(strpos($empId, "all_") !== false){ $agencyId = str_replace('all_', '', $empId); $sql_user = "SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId))"; $q_user = mysql_query($sql_user); while($r_user = mysql_fetch_assoc($q_user)){ if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step']) && !isset($post['source'])){ $empwho[] = "id_agent =".$r_user['id']; } else { $empwho[] = "who_work =".$r_user['id']; $doers_who[] = (int)$r_user['id']; } } if($post['emp']){ $doers_who[] = $post['emp']; // $stremp .= $stremp .= " or (doers like '%"".$post['emp'].""%')"; } //$empwho[] = $stremp .= ")"; } else if(strpos($empId, "I_") !== false){ if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step']) && !isset($post['source'])){ $empwho[] = "id_agent =".str_replace('I_', '', $empId); } else { $empwho[] = "who_work = ".str_replace('I_', '', $empId); $doers_who[] = (int)str_replace('I_', '', $empId); } } else if($empId == 'del_all'){ $user_agency = new User; $user_agency->get($_SESSION['id']); $agencyId = $user_agency->agencyId; $sqId = "SELECT id FROM `users` WHERE (id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId))) AND blocked=1"; $sqIdQuery = mysql_query($sqId); while ($idRow = mysql_fetch_array($sqIdQuery)) { if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step']) && !isset($post['source'])){ $empwho[] = "id_agent =".$idRow['id']; } else { $empwho[] = "who_work =".$idRow['id']; $doers_who[] = (int)$idRow['id']; } } $sqlDel = "SELECT user_id FROM users_delete WHERE agency_id = {$agencyId}"; $qDel = mysql_query($sqlDel); while($rDel = mysql_fetch_assoc($qDel)){ if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step']) && !isset($post['source'])){ $empwho[] = "id_agent =".intval($rDel['user_id']); } else { $empwho[] = "who_work =".intval($rDel['user_id']); $doers_who[] = intval($rDel['user_id']); } } } else { if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step']) && !isset($post['source'])){ $empwho[] = "id_agent = $empId"; } else { $empwho[] = "who_work = $empId"; $doers_who[] = (int)$empId; } } } if(!empty($empwho)){ $bd_usl_managers = " AND ((".implode(" OR ",$empwho).")"; if(!empty($doers_who)){ $sql_doer = "SELECT * FROM clients_doers WHERE user_id in (".implode(',', $doers_who).") AND confirm = 1"; $q_doer = mysql_query($sql_doer); while($r_doer = mysql_fetch_assoc($q_doer)){ $clientsIdsDop[] = $r_doer['client_id']; } if(!empty($clientsIdsDop)){ $bd_usl_managers .= ' OR clients.id in ('.implode(',', $clientsIdsDop).')'; } } $bd_usl_managers .= ")"; } $_SESSION['filter_emp'] = $post['filter_emp']; } else { unset($_SESSION['filter_emp']); } if($post['emp']){ $agencyId = $post['emp']; if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step'])){ $bd_usl_managers .= " AND id_agent in (SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))"; } else { if($post['accepted'] || $post['transmitted']){ } else { $bd_usl_managers .= " AND (who_work in (SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))"; if($post['isPartner']){ //$bd_usl_managers .= " or (doers like '%"".$agencyId.""%')"; $sql_doer = "SELECT * FROM clients_doers WHERE user_id = $agencyId AND confirm = 1"; $q_doer = mysql_query($sql_doer); while($r_doer = mysql_fetch_assoc($q_doer)){ $clientsIdsDop[] = $r_doer['client_id']; } if(!empty($clientsIdsDop)){ $bd_usl_managers .= ' OR clients.id in ('.implode(',', $clientsIdsDop).')'; } } $bd_usl_managers .= ")"; } } } if($post['filter_client_type']){ $typesArr = json_decode(html_entity_decode($post['filter_client_type']), ENT_QUOTES); $typeArr = array(); foreach($typesArr as $typeCl){ $typeArr[] = "work_type like '%"{$typeCl}"%'"; } $bd_usl .= " AND (".implode(" OR ",$typeArr).")"; $_SESSION['filter_client_type'] = $post['filter_client_type']; } else { unset($_SESSION['filter_client_type']); } if($post['filter_client_objects_type']){ $typesArr = json_decode(html_entity_decode($post['filter_client_objects_type']), ENT_QUOTES); $typeArr = array(); foreach($typesArr as $typeCl){ $typeArr[] = "`type` like '%"{$typeCl}"%'"; } $bd_usl .= " AND (".implode(" OR ",$typeArr).")"; $_SESSION['filter_client_objects_type'] = $post['filter_client_objects_type']; } else { unset($_SESSION['filter_client_objects_type']); } if($post['filter_source']){ $sourcesArr = json_decode(html_entity_decode($post['filter_source']), ENT_QUOTES); $sourceArr = array(); foreach($sourcesArr as $sourceCl){ if(strpos($sourceCl, 'all_') !== false){ $source_group = (int)str_replace('all_','',$sourceCl); if($source_group > 0){ $sql_adv = "SELECT * FROM `advertising_sources` WHERE group_id = {$source_group}"; $q_adv = $this->db->query($sql_adv); while($r_adv = $this->db->fetch_assoc($q_adv)){ $sourceArr[] = "`source` = '{$r_adv['id']}'"; } } else if($source_group == 0){ $users_ids_this = array(); $CallEvents = new CallEvents(); $user_this = new User; $user_this->get($_SESSION['id']); $users_ids_this = array_keys($CallEvents->getAllUserAgency($user_this->agencyId, $users_ids_this)); $sql_adv = "SELECT * FROM `advertising_sources` WHERE group_id = {$source_group} AND (user_id in (".implode(',', $users_ids_this).") or manager_id in (".implode(',', $users_ids_this)."))"; $q_adv = $this->db->query($sql_adv); while($r_adv = $this->db->fetch_assoc($q_adv)){ $sourceArr[] = "`source` = '{$r_adv['id']}'"; } } } else { if($sourceCl == 0){ $sourceArr[] = "`source` is null"; $sourceArr[] = "`source` = ''"; $sourceArr[] = "`source` = 'null'"; } else { $sourceArr[] = "`source` = '{$sourceCl}'"; } } } $bd_usl .= " AND (".implode(" OR ",$sourceArr).")"; $_SESSION['filter_source'] = $post['filter_source']; } else { unset($_SESSION['filter_source']); } $filter_partners = null; if ($post['filter_partner']) { $filter_partners = json_decode(html_entity_decode($post['filter_partner']), ENT_QUOTES); $_SESSION['filter_partner'] = $post['filter_partner']; } if ($filter_partners) { $employees_ids = []; $partners = new Partners(); foreach($filter_partners as $employee) { if (preg_match('/all_(\d+)/', $employee, $matches)) { if ($id = intval($matches[1])) { $employees = $partners->getEmployeesId($id, false); foreach($employees as $employee) { $employees_ids[] = "`employee_id` = '{$employee}'"; } } } else { if ($employee == 0) { $employees_ids[] = "`employee_id` IS NULL"; $employees_ids[] = "`employee_id` = ''"; $employees_ids[] = "`employee_id` = 'NULL'"; } else { $employees_ids[] = "`employee_id` = '{$employee}'"; } } } $bd_usl .= " AND (" . implode(" OR ", $employees_ids) . ")"; } else { unset($_SESSION['filter_partner']); } if ($post['filter_activities']) { $activitiesArr = json_decode(html_entity_decode($post['filter_activities']), ENT_QUOTES); $bd_usl .= " AND `id` IN ( SELECT client_id FROM clients_activities WHERE activity_id IN (" . implode(", ", $activitiesArr) . ") )"; $_SESSION['filter_activities'] = $post['filter_activities']; } else { unset($_SESSION['filter_activities']); } if(isset($post['is_contract']) && $post['is_contract']=='true'){ $part_where = " AND (SELECT count(id) FROM contracts_client WHERE client_id=clients.id"; if(isset($post['numder_contract']) && !empty($post['numder_contract'])){ $part_where .= " AND number like '%{$post['numder_contract']}%'"; } if(isset($post['type_contract']) && !empty($post['type_contract'])){ $part_where .= " AND type in (".implode(',',$post['type_contract']).")"; } if(isset($post['onDateContract']) && $post['onDateContract'] > 0){ $date_on = strtotime($post['onDateContract']." 00:00:00"); $part_where .= " AND date_end >= $date_on"; } if(isset($post['offDateContract']) && $post['offDateContract'] > 0){ $date_off = strtotime($post['offDateContract']." 23:59:59"); $part_where .= " AND date_end <= $date_off"; } $part_where .= ") > 0"; $bd_usl .= $part_where; } if($post['filter_client_rol']){ $rolesArr = json_decode(html_entity_decode($post['filter_client_rol']), ENT_QUOTES); $sroleArr = array(); foreach($rolesArr as $roleCl){ $roleArr[] = "`role` like '%"{$roleCl}"%'"; } $bd_usl .= " AND (".implode(" OR ",$roleArr).")"; $_SESSION['filter_client_rol'] = $post['filter_client_rol']; } else { unset($_SESSION['filter_client_rol']); } if($post['filter_denial_work']){ $denialsArr = json_decode(html_entity_decode($post['filter_denial_work']), ENT_QUOTES); $denialArr = array(); foreach($denialsArr as $denialCl){ $denialArr[] = "`denial` = {$denialCl}"; } $bd_usl .= " AND (".implode(" OR ",$denialArr).")"; $_SESSION['filter_denial_works'] = $post['filter_denial_work']; } else { unset($_SESSION['filter_denial_works']); } if($post['filter_etap']){ $etapsArr = json_decode(html_entity_decode($post['filter_etap']), ENT_QUOTES); $etapArr = array(); if ($funnel_id == 0) { foreach ($etapsArr as $etapCl) { $etapArr[] = "`stage` = '{$etapCl}'"; } $bd_usl .= " AND (" . implode(" OR ", $etapArr) . ") and deleted <> '1'"; } else { if (count($etapsArr) > 0) { $bd_usl .= " AND step_id in (" . implode(",", $etapsArr) . ")"; } } $_SESSION['filter_etap'] = $post['filter_etap']; } else { unset($_SESSION['filter_etap']); } if($post['objects']){ $bd_usl .= " AND of_objects > 0"; } if($post['filter_work_ahency']){ $bd_usl_managers = ''; if ($post['filter_emp']) { $join .= "LEFT JOIN events_clients ON events_clients.id = (SELECT id FROM events_clients WHERE client_id = clients.id ORDER BY id DESC LIMIT 1)"; $empwho = array(); $empArr = json_decode(html_entity_decode($post['filter_emp']), ENT_QUOTES); foreach ($empArr as $empId) { if(strpos($empId, "all_") !== false){ $agencyId = str_replace('all_', '', $empId); $sqId = "SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId))"; $sqIdQuery = mysql_query($sqId); while ($idRow = mysql_fetch_array($sqIdQuery)) { $empwho[] = intval($idRow['id']); } } else if(strpos($empId, "I_") !== false){ $empwho[] = str_replace('I_', '', $empId); } else { $empwho[] = intval($empId); } } if (!empty($empwho)) { $empwho = array_unique($empwho); $bd_usl_managers = " AND (events_clients.user_id IN (".implode(',', $empwho)."))"; } } $agencyId = User::getUserAgencyID(); $bd_usl .= " AND who_work=0 AND id_agent in (SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))"; $_SESSION['filter_work_ahency'] = $post['filter_work_ahency']; } else { unset($_SESSION['filter_work_ahency']); } if($post['filter_confirm']){ if($post['filter_stage_work']){ //$bd_usl .= " AND (`who_work` = ".$_SESSION['id']." OR `id_agent` = ".$_SESSION['id'].") AND (`confirm` = 0 or `confirm` = 1) or ((doers_confirm = 0 or doers_confirm = 1) AND doers like '%"".$_SESSION['id']."":0%' AND funnel_id={$funnel_id})"; } else { $bd_usl .= " AND ((`who_work` > 0) AND `confirm` = 0"; $sql_doer = "SELECT * FROM clients_doers WHERE user_id = {$_SESSION['id']} AND confirm = 1"; $q_doer = mysql_query($sql_doer); while($r_doer = mysql_fetch_assoc($q_doer)){ $clientsIdsDop[] = $r_doer['client_id']; } if(!empty($clientsIdsDop)){ $bd_usl .= ' OR clients.id in ('.implode(',', $clientsIdsDop).')'; } $bd_usl .= ")"; } $mmid[] = "id_agent = $searchUserId"; $_SESSION['filter_confirm'] = $post['filter_confirm']; } else { unset($_SESSION['filter_confirm']); } if($post['fields']){ $whereq=$this->queryField($post['fields']); $bd_usl .= $whereq; } // Массив для условий задач $tasksConditions = []; // Проверяем, выбраны ли оба фильтра "с задачами" и "без задач" одновременно $bothTasksSelected = !empty($post['order']) && !empty($post['noTasks']); // "С задачами" if (!empty($post['order']) && !$bothTasksSelected) { $tasksConditions[] = "(SELECT count(id) FROM user_client_events WHERE calendar_view = 0 AND schedule_date IS NOT NULL AND cancel = 0 AND client_id = clients.id AND schedule_date > '2001-03-10 17:16:18') > 0"; $_SESSION['order'] = 1; } else { unset($_SESSION['order']); } // "Без задач" if (!empty($post['noTasks']) && !$bothTasksSelected) { $tasksConditions[] = "NOT EXISTS (SELECT 1 FROM user_client_events WHERE calendar_view = 0 AND schedule_date IS NOT NULL AND cancel = 0 AND client_id = clients.id)"; $_SESSION['noTasks'] = 1; } else { unset($_SESSION['noTasks']); } // "Задачи на сегодня" if (!empty($post['todayTasks'])) { $tasksConditions[] = "(SELECT count(id) FROM user_client_events WHERE calendar_view = 0 AND schedule_date IS NOT NULL AND cancel = 0 AND client_id = clients.id AND DATE(schedule_date) = CURDATE()) > 0"; $_SESSION['todayTasks'] = 1; } else { unset($_SESSION['todayTasks']); } // "Просроченные задачи" if (!empty($post['overTasks'])) { $tasksConditions[] = "(SELECT count(id) FROM user_client_events WHERE calendar_view = 0 AND schedule_date IS NOT NULL AND cancel = 0 AND client_id = clients.id AND schedule_date <= '".date('Y-m-d H:i:s')."') > 0"; $_SESSION['overTasks'] = 1; } else { unset($_SESSION['overTasks']); } // Формируем SQL if (!empty($tasksConditions)) { if ($bothTasksSelected) { // Очищаем условия, чтобы показать всех клиентов $tasksConditions = []; } // Если есть оставшиеся условия if (!empty($tasksConditions)) { $combinedCondition = "(" . implode(" OR ", $tasksConditions) . ")"; $bd_usl .= " AND " . $combinedCondition; } } if ($post['priority1'] || $post['priority2'] || $post['priority3'] || $post['priority4']) { $p_sql .= " AND ("; for ($i = 1; $i <= 4; $i++) { if ($post['priority' . $i]) { $p_sql .= 'priority =' .$i. ' or '; } else { unset($_SESSION['priority'. $i]); } } $p_sql = substr($p_sql, 0, -4); $p_sql .= ")"; $bd_usl .= $p_sql; } if($post['transmitted']){ $bd_usl .= " AND (SELECT count(id) FROM events_clients WHERE event='transmitted' and user_id=".$post['emp']." and date $date_between and client_id=clients.id) > 0"; } if($post['accepted']){ $bd_usl .= " AND (SELECT count(id) FROM events_clients WHERE event='accepted' and user_id=".$post['emp']." and date $date_between and client_id=clients.id) > 0"; } if(isset($post['of_objects']) && $post['of_objects']) { $_SESSION['of_objects'] = $post['of_objects']; $bd_usl .= " AND of_objects = $post[of_objects]"; } else { unset($_SESSION['of_objects']); } if($post['isPartner']){ $bd_usl .= " AND doer_clients = 1"; // $_SESSION['isPartner'] = 1; } else { unset($_SESSION['isPartner']); } $one_page_clients = 10; if ($_SESSION['id'] == 93) { $one_page_clients = 5; } $limit = ' limit '.$one_page_clients; if($post['page'] && $post['page'] > 1){ $page = $post['page']; } else { $page = 1; } if($post['kanban']){ $one_page_clients = 4; $page = $post['kanban_page']; } if(isset($post['expired_stages']) && $post['expired_stages'] > 0){ $idExpiredStages = $this->getIdExpiredStages($bd_usl_managers.$bd_usl); if(!empty($idExpiredStages)){ $bd_usl = " AND clients.id in(".implode(',', $idExpiredStages).")"; } } $bd_usl .= " AND cancel = 0"; $limit = ' limit '.(($page-1)*$one_page_clients).', '.$one_page_clients; if($post['kanban']) { //$limit = ''; $_SESSION['kanban'] = 1; } else { unset($_SESSION['kanban']); } if($post['list_view']) { //$limit = ''; $_SESSION['clients_list_view'] = 1; } else { unset($_SESSION['clients_list_view']); } if($post['table_view']) { //$limit = ''; $_SESSION['clients_table_view'] = 1; } else { unset($_SESSION['clients_table_view']); } $order = null; $sortOrder = (isset($_GET['sort_order'])) ? $_GET['sort_order'] : ((isset($_POST['sort_order'])) ? $_POST['sort_order'] : null); if (!$sortOrder && isset($_SESSION['clients_sort_order'])) $sortOrder = $_SESSION['clients_sort_order']; if ($sortOrder) { $_SESSION['clients_sort_order'] = $sortOrder; switch (intval($sortOrder)) { case 1: { $order = ' clients.date_add ASC '; if($post['filter_stage_close']){ $order = " (SELECT date_update FROM `events_clients` WHERE client_id = clients.id and event='delete' order by id desc limit 1) ASC"; if((int)$post['date_tasks'] == 11){ $order = " clients.date_add ASC"; } } break; } case 2:{ $order = 'clients.date_add DESC '; if($post['filter_stage_close']){ $order = " (SELECT date_update FROM `events_clients` WHERE client_id = clients.id and event='delete' order by id desc limit 1) DESC"; if((int)$post['date_tasks'] == 11){ $order = " clients.date_add DESC"; } } break; } } } if($post['kanban']) { //if (!$hasFilterStage) { $n_user_id = (int)$_SESSION['agency_id']; $n_agents = "SELECT id FROM users WHERE id IN ( SELECT id FROM users WHERE id = $n_user_id OR id_manager = $n_user_id OR id_manager IN ( SELECT id FROM users WHERE id_manager = $n_user_id OR id_manager IN ( SELECT id FROM users WHERE id_manager = $n_user_id ) ) ) UNION SELECT user_id FROM users_delete WHERE agency_id = $n_user_id "; $n_agents_res = mysql_query($n_agents); $n_agent_ids = []; while ($row = mysql_fetch_assoc($n_agents_res)) { $n_agent_ids[] = $row['id']; } $n_agent_ids_sql = implode(', ', $n_agent_ids); $n_agent_ids_z = '(' . implode(',', array_merge([0], $n_agent_ids)) . ')'; $bd_usl_managers = preg_replace( '/\(\(who_work\s*=\s*(\d+)/', '((who_work = 0 OR who_work = $1', $bd_usl_managers, 1 ); $bd_usl_managers = preg_replace( '/\)\)(?!\s*AND\s+id_agent\s+IN)/i', ')) AND id_agent IN (' . $n_agent_ids_sql . ')', $bd_usl_managers, 1 ); // } $part_order = "clients.date_update_event desc"; $mounthArr = ["января", "февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]; $funnel_id = 0; if($post['funnel']){ $funnel_id = $post['funnel']; } $total = 0; if ($funnel_id == 0) { for($j = 1; $j <= 8; $j++){ if($j == 8){ $sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add FROM clients WHERE 1 AND deleted = '1' $bd_usl_managers $bd_usl $bd_stage ORDER BY " . (($order) ? $order : " turn, turntime desc,clients.date_update_event desc") . $limit; $countRes = mysql_query("SELECT COUNT(*) FROM clients WHERE 1 AND stage = $j AND deleted = '1' $bd_usl_managers $bd_usl $bd_stage"); $countRow = mysql_fetch_row($countRes); $result['count'][8] = $countRow[0]; $total += $countRow[0]; } else { $sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add FROM clients WHERE 1 AND stage = $j AND deleted <> '1' $bd_usl_managers $bd_usl $bd_stage ORDER BY " . (($order) ? $order : " turn, turntime desc,clients.date_update_event desc") . $limit; /*if($_SESSION['id'] == 4){ file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_sql_client.txt", date('d.m.y H:i:s').' '.$sql."\n", FILE_APPEND); }*/ $countRes = mysql_query("SELECT COUNT(*) FROM clients WHERE 1 AND stage = $j AND deleted <> '1' $bd_usl_managers $bd_usl $bd_stage"); $countRow = mysql_fetch_row($countRes); $result['count'][$j]= $countRow[0]; $total += $countRow[0]; } $rez = mysql_query($sql); while($client = mysql_fetch_assoc($rez)) { $data_add = date('d', strtotime($client['date_add'])); $mounth = $mounthArr[((int)date('m', strtotime($client['date_add'])) - 1)]; $data_add .= ' '.$mounth.' '.date('Y', strtotime($client['date_add'])); $client['add_date'] = $data_add; $client_id = (int)$client['id']; $tasks_sql = "SELECT schedule_date, comment, user_id, name, type FROM user_client_events WHERE client_id = $client_id AND type IN ('even', 'call', 'deal', 'show', 'meet') AND calendar_view = 0 ORDER BY schedule_date ASC"; $tasks_result = mysql_query($tasks_sql); if ($tasks_result) { while ($row = mysql_fetch_assoc($tasks_result)) { $sql_user = "SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio FROM users WHERE id = {$row['user_id']}"; $responsible = mysql_fetch_assoc(mysql_query($sql_user))['user_fio']; $client['tasks_data'][] = [ 'schedule_date' => $row['schedule_date'], 'comment' => $row['comment'], 'name' => $row['name'], 'responsible' => $responsible, 'type' => $row['type'], ]; } } $events = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0 and schedule_date is not null and client_id=" . $client['id'] . " and schedule_date < '" . date("Y-m-d H:i:s") . "' and cancel=0"; $events1 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0 and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') = '" . date("Y-m-d") . "' and cancel=0"; $events2 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0 and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') > '" . date("Y-m-d") . "' and cancel=0"; $phone = $client['phone']; if (strpos($phone, '+7') !== false) { $phone = substr($phone, 0, 2)."(".substr($phone, 2, 3).")".substr($phone, 5, 3)."-".substr($phone, 8, 2)."-".substr($phone, 10, 2); } $client['phone'] = $phone; $q_events = mysql_query($events); $events_res = (int)mysql_fetch_assoc($q_events)['res']; $client['events_res'] = $events_res; if ($client['events_res'] == 0) { $q_events1 = mysql_query($events1); $events_res1 = (int)mysql_fetch_assoc($q_events1)['res']; $client['events_res1'] = $events_res1; if ($client['events_res1'] == 0) { $q_events2 = mysql_query($events2); $events_res2 = (int)mysql_fetch_assoc($q_events2)['res']; $client['events_res2'] = $events_res2; } } $client['activities'] = array() ; $sql_a = "SELECT * FROM clients_activities WHERE client_id = {$client['id']}"; $q_a = mysql_query($sql_a); while($r_a = mysql_fetch_assoc($q_a)){ $sql_a_name = "SELECT * FROM activities WHERE id = {$r_a['activity_id']}"; $q_a_name = mysql_query($sql_a_name); $r_a_name = mysql_fetch_assoc($q_a_name); $client['activities'][] = $r_a_name; } $result['clients'][$j][] = $client; } } } else { // if($_SESSION['id'] == 5238){ $funnel_step = mysql_query("SELECT * FROM funnel_steps WHERE funnel_id = ".$funnel_id." and deleted=0 order by order_number, branch"); $isActive = true; $stage = null; if((int)$change_step['step_id'] == 0){ $isActive = false; } $arr_steps = array(); $lost_step = 0; while($step = mysql_fetch_assoc($funnel_step)){ $arr_steps[$step['id']] = $step; $lost_step = $step['id']; $sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add, date_add as date_create FROM clients WHERE step_id = ".$step['id']." $bd_usl_managers $bd_usl $bd_stage ORDER BY " . (($order) ? $order : " clients.date_update_event desc") . $limit; $sql_res = "SELECT COUNT(*) FROM clients WHERE step_id = ".$step['id']." $bd_usl_managers $bd_usl $bd_stage"; $countRes = mysql_query($sql_res); $countRow = mysql_fetch_row($countRes); $result['count'][$step['id']] = $countRow[0]; $total += $countRow[0]; $result['sql'] = $sql; $rez = mysql_query($sql); while ($client = mysql_fetch_assoc($rez)) { $data_add = date('d', strtotime($client['date_add'])); $mounth = $mounthArr[((int)date('m', strtotime($client['date_add'])) - 1)]; $data_add .= ' ' . $mounth . ' ' . date('Y', strtotime($client['date_add'])); $client['add_date'] = $data_add; $client_id = (int)$client['id']; $tasks_sql = "SELECT schedule_date, comment, user_id, name, type FROM user_client_events WHERE client_id = $client_id AND type IN ('even', 'call', 'deal', 'show', 'meet') AND calendar_view = 0 ORDER BY schedule_date ASC"; $tasks_result = mysql_query($tasks_sql); if ($tasks_result) { while ($row = mysql_fetch_assoc($tasks_result)) { $sql_user = "SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio FROM users WHERE id = {$row['user_id']}"; $responsible = mysql_fetch_assoc(mysql_query($sql_user))['user_fio']; $client['tasks_data'][] = [ 'schedule_date' => $row['schedule_date'], 'comment' => $row['comment'], 'name' => $row['name'], 'responsible' => $responsible, 'type' => $row['type'], ]; } } $events = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0 and schedule_date is not null and client_id=" . $client['id'] . " and schedule_date < '" . date("Y-m-d H:i:s") . "' and cancel=0"; $events1 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0 and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') = '" . date("Y-m-d") . "' and cancel=0"; $events2 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0 and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') > '" . date("Y-m-d") . "' and cancel=0"; $phone = $client['phone']; if (strpos($phone, '+7') !== false) { $phone = substr($phone, 0, 2) . "(" . substr($phone, 2, 3) . ")" . substr($phone, 5, 3) . "-" . substr($phone, 8, 2) . "-" . substr($phone, 10, 2); } $client['phone'] = $phone; $q_events = mysql_query($events); $events_res = (int)mysql_fetch_assoc($q_events)['res']; $client['events_res'] = $events_res; if ($client['events_res'] == 0) { $q_events1 = mysql_query($events1); $events_res1 = (int)mysql_fetch_assoc($q_events1)['res']; $client['events_res1'] = $events_res1; if ($client['events_res1'] == 0) { $q_events2 = mysql_query($events2); $events_res2 = (int)mysql_fetch_assoc($q_events2)['res']; $client['events_res2'] = $events_res2; } } $client['activities'] = array() ; $sql_a = "SELECT * FROM clients_activities WHERE client_id = {$client['id']}"; $q_a = mysql_query($sql_a); while($r_a = mysql_fetch_assoc($q_a)){ $sql_a_name = "SELECT * FROM activities WHERE id = {$r_a['activity_id']}"; $q_a_name = mysql_query($sql_a_name); $r_a_name = mysql_fetch_assoc($q_a_name); $client['activities'][] = $r_a_name; } //var_dump($next_id); $result['clients'][$step['id']][] = $client; } } $sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add, date_add as date_create FROM clients WHERE step_id = -1 $bd_usl_managers $bd_usl $bd_stage ORDER BY " . (($order) ? $order : "clients.date_update_event desc") . $limit; $result['sql'] = $sql; $rez = mysql_query($sql); while ($client = mysql_fetch_assoc($rez)) { $data_add = date('d', strtotime($client['date_add'])); $mounth = $mounthArr[((int)date('m', strtotime($client['date_add'])) - 1)]; $data_add .= ' ' . $mounth . ' ' . date('Y', strtotime($client['date_add'])); $client['add_date'] = $data_add; $client_id = (int)$client['id']; $tasks_sql = "SELECT schedule_date, comment, user_id, name, type FROM user_client_events WHERE client_id = $client_id AND type IN ('even', 'call', 'deal', 'show', 'meet') AND calendar_view = 0 ORDER BY schedule_date ASC"; $tasks_result = mysql_query($tasks_sql); if ($tasks_result) { while ($row = mysql_fetch_assoc($tasks_result)) { $sql_user = "SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio FROM users WHERE id = {$row['user_id']}"; $responsible = mysql_fetch_assoc(mysql_query($sql_user))['user_fio']; $client['tasks_data'][] = [ 'schedule_date' => $row['schedule_date'], 'comment' => $row['comment'], 'name' => $row['name'], 'responsible' => $responsible, 'type' => $row['type'], ]; } } $events = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0 and schedule_date is not null and client_id=" . $client['id'] . " and schedule_date < '" . date("Y-m-d H:i:s") . "' and cancel=0"; $events1 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0 and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') = '" . date("Y-m-d") . "' and cancel=0"; $events2 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0 and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') > '" . date("Y-m-d") . "' and cancel=0"; $phone = $client['phone']; if (strpos($phone, '+7') !== false) { $phone = substr($phone, 0, 2) . "(" . substr($phone, 2, 3) . ")" . substr($phone, 5, 3) . "-" . substr($phone, 8, 2) . "-" . substr($phone, 10, 2); } $client['phone'] = $phone; $q_events = mysql_query($events); $events_res = (int)mysql_fetch_assoc($q_events)['res']; $client['events_res'] = $events_res; if ($client['events_res'] == 0) { $q_events1 = mysql_query($events1); $events_res1 = (int)mysql_fetch_assoc($q_events1)['res']; $client['events_res1'] = $events_res1; if ($client['events_res1'] == 0) { $q_events2 = mysql_query($events2); $events_res2 = (int)mysql_fetch_assoc($q_events2)['res']; $client['events_res2'] = $events_res2; } } $client['activities'] = array() ; $sql_a = "SELECT * FROM clients_activities WHERE client_id = {$client['id']}"; $q_a = mysql_query($sql_a); while($r_a = mysql_fetch_assoc($q_a)){ $sql_a_name = "SELECT * FROM activities WHERE id = {$r_a['activity_id']}"; $q_a_name = mysql_query($sql_a_name); $r_a_name = mysql_fetch_assoc($q_a_name); $client['activities'][] = $r_a_name; } //var_dump($next_id); $result['clients'][$lost_step][] = $client; } $result['arr_steps'] = $arr_steps; } /*$sql = "SELECT id FROM clients WHERE 1 $bd_usl_managers $bd_usl $bd_stage"; $rez = mysql_query($sql); $total = mysql_num_rows($rez);*/ $result['total'] = $total; } else { if (!$hasFilterStage) { $n_user_id = (int)$_SESSION['agency_id']; $n_agents = "SELECT id FROM users WHERE id IN ( SELECT id FROM users WHERE id = $n_user_id OR id_manager = $n_user_id OR id_manager IN ( SELECT id FROM users WHERE id_manager = $n_user_id OR id_manager IN ( SELECT id FROM users WHERE id_manager = $n_user_id ) ) ) UNION SELECT user_id FROM users_delete WHERE agency_id = $n_user_id "; $n_agents_res = mysql_query($n_agents); $n_agent_ids = []; while ($row = mysql_fetch_assoc($n_agents_res)) { $n_agent_ids[] = $row['id']; } $n_agent_ids_sql = implode(', ', $n_agent_ids); $n_agent_ids_z = '(' . implode(',', array_merge([0], $n_agent_ids)) . ')'; $bd_usl_managers = preg_replace( '/\(\(who_work\s*=\s*(\d+)/', '((who_work = 0 OR who_work = $1', $bd_usl_managers, 1 ); $bd_usl_managers = preg_replace( '/\)\)(?!\s*AND\s+id_agent\s+IN)/i', ')) AND id_agent IN (' . $n_agent_ids_sql . ')', $bd_usl_managers, 1 ); } $sql = "SELECT count(id) as total FROM clients $join WHERE 1 $bd_usl_managers $bd_usl $bd_stage"; $rez = mysql_query($sql); $total = mysql_fetch_assoc($rez)['total']; $all_pages = ceil($total/$one_page_clients); $part_order = " clients.date_update_event DESC"; $hasFilterStage = false; foreach (array_keys($post) as $key) { if (strpos($key, 'filter_stage_') === 0) { $hasFilterStage = true; break; } } if($post['filter_stage_close']){ $part_order = " (SELECT date_update FROM `events_clients` WHERE client_id = clients.id and event='delete' order by id desc limit 1) DESC"; if((int)$post['date_tasks'] == 11){ $part_order = " clients.date_add DESC"; } } if (!$hasFilterStage) { if (strpos($bd_usl_managers, 'who_work') !== false) { // Расширяем первое условие: who_work = 0 OR ... $n_user_id = (int)$_SESSION['agency_id']; $n_agents = "SELECT id FROM users WHERE id IN ( SELECT id FROM users WHERE id = $n_user_id OR id_manager = $n_user_id OR id_manager IN ( SELECT id FROM users WHERE id_manager = $n_user_id OR id_manager IN ( SELECT id FROM users WHERE id_manager = $n_user_id ) ) ) UNION SELECT user_id FROM users_delete WHERE agency_id = $n_user_id "; $n_agents_res = mysql_query($n_agents); $n_agent_ids = []; while ($row = mysql_fetch_assoc($n_agents_res)) { $n_agent_ids[] = $row['id']; } $n_agent_ids_sql = implode(', ', $n_agent_ids); $bd_usl_managers = preg_replace( '/\(\(who_work\s*=/', '((who_work = 0 OR who_work =', $bd_usl_managers, 1 ); // Заменяем )))) в конце на нужную конструкцию $bd_usl_managers = preg_replace( '/\)\)$/', ')) AND clients.id_agent IN (' . $n_agent_ids_sql . ')', $bd_usl_managers, 1 ); } } $sql = "SELECT clients.*, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add, date_add as date_create FROM clients $join WHERE 1 $bd_usl_managers $bd_usl $bd_stage ORDER BY " . (($order) ? $order : $part_order) . $limit; $rez = mysql_query($sql); $clientIds = []; while($cl = mysql_fetch_assoc($rez)) { $clientIds[] = $cl['id']; $cl['eventDate'] = null; $cl['activities'] = null; $cl['is_show_dop'] = false; $result['clients'][] = $cl; } //только для таблицы if ($post['table_view']) { $eventDateSql = "SELECT DATE_FORMAT(schedule_date, '%d.%m.%Y %H:%i') AS schedule_date, client_id FROM user_client_events WHERE calendar_view = 0 and schedule_date is not null and client_id in (" . implode(", ", $clientIds) . ") and schedule_date >= '" . date("Y-m-d H:i:s") . "'"; $q_events = mysql_query($eventDateSql); while ($task = mysql_fetch_assoc($q_events)) { foreach ($result['clients'] as $key => $clnt) { if ($clnt['id'] == $task['client_id']) { $result['clients'][$key]['eventDate'] = $task['schedule_date']; } } } } $sqlAddInfoAct = "SELECT activity_id, client_id FROM clients_activities WHERE client_id in (" . implode(", ", $clientIds) . ")"; $rezAddInfoRes = mysql_query($sqlAddInfoAct); if (mysql_num_rows($rezAddInfoRes) > 0) { while($row = mysql_fetch_array($rezAddInfoRes)) { foreach ($result['clients'] as $key => $clnt) { if ($clnt['id'] == $row['client_id']) { if ($result['clients'][$key]['activities'] == null) { $result['clients'][$key]['activities'] = array(); } $result['clients'][$key]['activities'][] = $row['activity_id']; } } } } $result['all_pages'] = $all_pages; $result['total'] = $total; } $_SESSION['where_clients'] = "$bd_usl_managers $bd_usl $bd_stage ORDER BY " . (($order) ? $order : $part_order); $_SESSION['where_campaigns'] = "$bd_usl_managers $bd_usl $bd_stage"; /*if($_SESSION['id'] == 16964){ echo $sql; //file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_sql_client.txt", date('d.m.y H:i:s').' '.$sql."\n", FILE_APPEND); }*/ //echo $sql;die(); return $result; } public function queryField($fields){ $query = ""; $user = new User; $user->get($_SESSION['id']); $agencyId = $user->agencyId; $agencyFielsds =array(); $sql = "SELECT * FROM client_req_fields WHERE `agency_id`=$agencyId order by id desc"; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $agencyFielsds[$r['id']] = $r; } $agencyFielsdsP =array(); $sql = "SELECT * FROM client_req_fields_podgroup WHERE `agency_id`=$agencyId order by id desc"; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $agencyFielsdsP[$r['id']] = $r; } $fieldsJson = array(); $fieldsInt = array(); $fieldsString = array(); $fieldsPod = array(); $search = false; if(!empty($agencyFielsds)) { foreach($fields as $key => $field){ $arrField = explode("_", $key); $typeField = 1; if($arrField[0] == 'modelp'){ $typeField = 2; } $field_id = (int)$arrField[1]; $res = null; if (is_array($field)) { $res = array(); foreach($field as $k => $v){ //пробуем привести к числу, так как в БД хранится как массив чисел if (is_numeric($v)) { $res[] = (int) $v; } else { $res[] = $v; } } } else { $res = $field; } $value = trim(json_encode($res, JSON_UNESCAPED_UNICODE), '"'); $fids = array(); $sql = "SELECT id, field_id FROM client_data WHERE field_id = $field_id AND type = $typeField"; $q = mysql_query($sql); while ($r = mysql_fetch_assoc($q)){ $type = -1; if($typeField == 1){ if($agencyFielsds[$r['field_id']]['is_podgroup'] == 0){ $type = $agencyFielsds[$r['field_id']]['type']; } else { $type = 10; } } else if ($typeField == 2){ $type = $agencyFielsdsP[$r['field_id']]['type']; } if($type == 0 || $type == 5){ $fieldsString[] = array('data_id'=>$r['id'], 'value'=>$value); } else if($type == 3){ $fieldsJson[] = array('data_id'=>$r['id'], 'value'=>$value); } else if($type == 1 || $type == 2 || $type == 4){ $fieldsInt[] = array('data_id'=>$r['id'], 'value'=>$value); } else if($type == 10){ $fieldsPod[] = array('data_id'=>$r['id'], 'value'=>$value); } } } } $client_ids = array(); $client_ids_temp = array(); if(!empty($fieldsPod)){ $ids = array(); $values = array(); foreach($fieldsPod as $fi){ $ids[] = $fi['data_id']; $arrVal = json_decode($fi['value'], true); if(is_array($arrVal)){ foreach ($arrVal as $val) { if(!in_array($val, $values)) $values[] = $val; } } else { if(!in_array($fi['value'], $values)) $values[] = $fi['value']; } } $sql = "SELECT client_id FROM client_data WHERE id in (".implode(',', $ids).") AND value in (".implode(',', $values).")"; //echo $sql; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $client_ids_temp[] = $r['client_id']; } } if(!empty($fieldsInt)){ $ids = array(); $values = array(); foreach($fieldsInt as $fi){ $ids[] = $fi['data_id']; $arrVal = json_decode($fi['value'], true); if(is_array($arrVal)){ foreach ($arrVal as $val) { if(!in_array($val, $values)) $values[] = $val; } } else { if(!in_array($fi['value'], $values)) $values[] = $fi['value']; } } $sql = "SELECT client_id FROM client_data WHERE id in (".implode(',', $ids).") AND value in (".implode(',', $values).")"; if(!empty($client_ids_temp)){ $sql .= " AND client_id in (".implode(',', $client_ids_temp).")"; } //echo $sql; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $client_ids[] = $r['client_id']; } } if(!empty($fieldsString)){ $ids = array(); $values = ''; foreach($fieldsString as $fi){ $ids[] = $fi['data_id']; if($values != ''){ $values .= ' OR '; } $values .= "value like '%".$fi['value']."%'"; } $sql = "SELECT client_id FROM client_data WHERE id in (".implode(',', $ids).") AND ($values)"; if(!empty($client_ids_temp)){ $sql .= " AND client_id in (".implode(',', $client_ids_temp).")"; } $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $client_ids[] = $r['client_id']; } } if(!empty($fieldsJson)){ $ids = array(); $values = ''; foreach($fieldsJson as $fi){ $ids[] = $fi['data_id']; if($values != ''){ $values .= ' OR '; } $values .= "JSON_CONTAINS(`value`, '".$fi['value']."') > 0"; } $sql = "SELECT client_id FROM client_data WHERE id in (".implode(',', $ids).") AND ($values)"; if(!empty($client_ids_temp)){ $sql .= " AND client_id in (".implode(',', $client_ids_temp).")"; } $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $client_ids[] = $r['client_id']; } } if(!empty($client_ids)){ $query = " AND id in (".implode(',',$client_ids).")"; } else if((empty($fieldsJson) && empty($fieldsInt) && empty($fieldsString)) && !empty($client_ids_temp)){ $query = " AND id in (".implode(',',$client_ids_temp).")"; } else { $query = " AND id in (0)"; } return $query; } public function getCountAllClients() { // находим ИД агентства и по нему ищем всех свободных клиентов $agencyId = -1; if ($_SESSION['agency']) { $agencyId = $_SESSION['id']; } else { if ($_SESSION['manager']) { $user = new User; $user->checkPermissions(); $agencyId = $user->id_manager; } else { $user = new User; $user->checkPermissions(); if ($user->id_manager > 0) { $agency = new User; $agency->get($user->id_manager); if($agency->id_manager) { $agency->get($agency->id_manager); } $agencyId = $agency->id; } } } $bd_usl = " deleted=0 AND who_work=0 AND id_agent in (SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))"; $sql_count = "SELECT COUNT(*) FROM clients WHERE $bd_usl"; $vsego = mysql_result(mysql_query($sql_count),0); if($vsego > 0) { $counter = "".$vsego.""; } else { $counter = ""; } return $counter; } public function getCountAllClientsSend($funnelId = 0) { $bd_usl_managers = ""; $bd_usl = ""; // if (!$_GET['all'] || !$_POST['all']) { $searchUserId = $_SESSION['id']; if ($_SESSION['users_admin']) { $currentUser = new User; $currentUser->checkPermissions(); $searchUserId = $currentUser->agencyId; } //$mmid[] = "id_agent = $searchUserId"; $mmid[] = "who_work = $searchUserId"; if ($_GET['deleted']) { $bd_usl = "AND deleted=1"; // если ищем по удаленным и под менеджером - пропускаем этот код - здесь идет добавление по агентству if (!($_GET['deleted'] && $_SESSION['manager'])) { $rez1 = mysql_query("SELECT id_manager FROM users WHERE id=$searchUserId"); while ($mm1 = mysql_fetch_row($rez1)) { $mmid[] = "id_agent = " . $mm1[0]; $rez01 = mysql_query("SELECT id_manager FROM users WHERE id=$mm1[0]"); while ($mm01 = mysql_fetch_row($rez01)) { $mmid[] = "id_agent = " . $mm01[0]; } $rez02 = mysql_query("SELECT id FROM users WHERE id_manager=$mm1[0] and id_manager<>0"); while ($mm02 = mysql_fetch_row($rez02)) { $mmid[] = "id_agent = " . $mm02[0]; } } } $rez2 = mysql_query("SELECT id FROM users WHERE id_manager=$searchUserId"); while ($mm2 = mysql_fetch_row($rez2)) { $mmid[] = "id_agent = " . $mm2[0]; $rez03 = mysql_query("SELECT id FROM users WHERE id_manager=$mm2[0]"); while ($mm03 = mysql_fetch_row($rez03)) { $mmid[] = "id_agent = " . $mm03[0]; } } } $rez3 = mysql_query("SELECT id FROM users WHERE id_manager=$searchUserId"); while ($mm = mysql_fetch_row($rez3)) { $mmid[] = "who_work = " . $mm[0]; $rez04 = mysql_query("SELECT id FROM users WHERE id_manager=$mm[0]"); while ($mm2 = mysql_fetch_row($rez04)) { $mmid[] = "who_work = " . $mm2[0]; } } $bd_usl_managers = " AND (".implode(" OR ",$mmid).")"; // echo $bd_usl_managers.'
'; // находим ИД агентства и по нему ищем всех свободных клиентов $agencyId = -1; if ($_SESSION['agency']) { $agencyId = $_SESSION['id']; } else { if ($_SESSION['manager']) { $user = new User; $user->checkPermissions(); $agencyId = $user->id_manager; } else { $user = new User; $user->checkPermissions(); if ($user->id_manager > 0) { $agency = new User; $agency->get($user->id_manager); if($agency->id_manager) { $agency->get($agency->id_manager); } $agencyId = $agency->id; } } } $bd_usl = " funnel_id=$funnelId AND deleted=0 AND confirm = 0 ".$bd_usl_managers." AND who_work != " . $_SESSION['id']; $sql_count = "SELECT COUNT(*) FROM clients WHERE $bd_usl"; // echo $sql_count; $vsego = mysql_result(mysql_query($sql_count),0); $counter = $vsego; return $counter; } public function getCountChartsClients() { // находим ИД агентства и по нему ищем всех свободных клиентов $agencyId = -1; if ($_SESSION['agency']) { $agencyId = $_SESSION['id']; } else { if ($_SESSION['manager']) { $user = new User; $user->checkPermissions(); $agencyId = $user->id_manager; } else { $user = new User; $user->checkPermissions(); if ($user->id_manager > 0) { $agency = new User; $agency->get($user->id_manager); if($agency->id_manager) { $agency->get($agency->id_manager); } $agencyId = $agency->id; } } } $bd_usl = " deleted=0 AND who_work in (SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))"; $sql_count = "SELECT COUNT(*) FROM clients WHERE $bd_usl"; $vsego = mysql_result(mysql_query($sql_count),0); if($vsego > 0) { $counter = "".$vsego.""; } else { $counter = ""; } return $counter; } public function getCountAllClientsNumber($workType) { // находим ИД агентства и по нему ищем всех свободных клиентов $agencyId = -1; if ($_SESSION['agency']) { $agencyId = $_SESSION['id']; } else { if ($_SESSION['manager']) { $user = new User; $user->checkPermissions(); $agencyId = $user->id_manager; } else { $user = new User; $user->checkPermissions(); if ($user->id_manager > 0) { $agency = new User; $agency->get($user->id_manager); if($agency->id_manager) { $agency->get($agency->id_manager); } $agencyId = $agency->id; } } } $bd_usl = " deleted=0 AND who_work=0 AND work_type = $workType AND id_agent in (SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))"; $sql_count = "SELECT COUNT(*) FROM clients WHERE $bd_usl"; return mysql_result(mysql_query($sql_count),0); } public function getUsersFilter($usersArr, $sessionUserId = false, $sessionUserAdmin = false){ if(count($usersArr) == 0) { $userId = $sessionUserId; if ($sessionUserAdmin) { $currentUser = new User; $currentUser->checkPermissions($userId, false); $userId = $currentUser->agencyId; } $user = new User; $user->get($userId); $usersId[] = (int)$userId; if(strpos($userId, 'allagency_') !== false){ $user->agency = 1; $usersId[] = (int)str_replace("allagency_", "", $userId); } else if(strpos($userId, 'all_') !== false){ $user->manager = 1; $usersId[] = (int)str_replace("all_", "", $userId); } if($user->agency){ $rez3 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$userId"); while ($mm = mysql_fetch_row($rez3)) { if(!in_array((int)$mm[0], $usersId)){ $usersId[] = (int)$mm[0]; } if($mm[1] == 1){ $rez04 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$mm[0]"); while ($mm2 = mysql_fetch_row($rez04)) { if(!in_array((int)$mm2[0], $usersId)){ $usersId[] = (int)$mm2[0]; } if($mm2[1] == 1){ $rez004 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$mm2[0]"); while ($mm02 = mysql_fetch_row($rez004)) { if(!in_array((int)$mm02[0], $usersId)){ $usersId[] = (int)$mm02[0]; } } } } } } } else if($user->manager){ $rez04 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$userId"); while ($mm2 = mysql_fetch_row($rez04)) { if(!in_array((int)$mm2[0], $usersId)){ $usersId[] = (int)$mm2[0]; } if($mm2[1] == 1){ $rez004 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$mm2[0]"); while ($mm02 = mysql_fetch_row($rez004)) { if(!in_array((int)$mm02[0], $usersId)){ $usersId[] = (int)$mm02[0]; } } } } } } else { foreach($usersArr as $userId){ if(strpos($userId, 'allagency_') !== false){ $user->agency = 1; $userId = (int)str_replace("allagency_", "", $userId); if(!in_array($userId, $usersId)){ $usersId[] = $userId; } } else if(strpos($userId, 'all_') !== false){ $user->manager = 1; $userId = (int)str_replace('all_', '', $userId); if(!in_array($userId, $usersId)){ $usersId[] = $userId; } } else { if(!in_array((int)$userId, $usersId)){ $usersId[] = $userId; } } if($user->agency){ $rez3 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$userId"); while ($mm = mysql_fetch_row($rez3)) { if(!in_array((int)$mm[0], $usersId)){ $usersId[] = (int)$mm[0]; } if($mm[1] == 1){ $rez04 = mysql_query("SELECT id FROM users WHERE id_manager=$mm[0]"); while ($mm2 = mysql_fetch_row($rez04)) { if(!in_array((int)$mm2[0], $usersId)){ $usersId[] = (int)$mm2[0]; } } } } } else if($user->manager){ $rez04 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$userId"); while ($mm2 = mysql_fetch_row($rez04)) { if(!in_array((int)$mm2[0], $usersId)){ $usersId[] = (int)$mm2[0]; } if($mm2[1] == 1){ $rez004 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$mm2[0]"); while ($mm02 = mysql_fetch_row($rez004)) { if(!in_array((int)$mm02[0], $usersId)){ $usersId[] = (int)$mm02[0]; } } } } } } } return $usersId; } public static function get_class_etap($clientId, $funnelId) { $change_step_query = mysql_query("SELECT * FROM clients_funnel_step WHERE client_id = " . $clientId); $next_id = 0; $change_step = array('step_id' => 0); //$lostDate = $client['date_create']; if (mysql_num_rows($change_step_query) > 0) { $change_step = mysql_fetch_assoc($change_step_query); $next_id = $change_step['next_id']; $lostDate = $change_step['date_update']; } $next_steps = array(); $funnel_sql = "SELECT * FROM funnel_steps WHERE funnel_id = " . $funnelId . " and deleted=0 order by order_number, branch"; $funnel_step = mysql_query($funnel_sql); $isActive = true; $classF = ' active'; $stage = ''; $stageId = 0; if ((int)$change_step['step_id'] == 0) { $isActive = false; } $arr_steps = array(); $countStep = mysql_num_rows($funnel_step); while ($step = mysql_fetch_assoc($funnel_step)) { $step['isActive'] = (int)$isActive; $step['nextStep'] = false; if ($step['main'] == 1 && !$isActive) { $next_steps[] = $step['id']; } if ($step['id'] == (int)$change_step['step_id']) { //$stage = $step['name']; $next_steps = json_decode(htmlspecialchars_decode($step['next_step'])); if ($next_id == 0) { //$stage = $step['name']; //$next_steps = json_decode( htmlspecialchars_decode($step['next_step'])); //if($step['branch'] < $branch){ $isActive = false; // } } } else if ($step['id'] == (int)$next_id) { $isActive = false; } $arr_steps[$step['id']] = $step; } if ($next_id != 0 && !empty($next_steps)) { foreach ($next_steps as $key => $st) { if ($st != $next_id) { unset($next_steps[$key]); } } } foreach ($arr_steps as $idstep => $step) { $arr_steps[$idstep]['isNext'] = 0; if (in_array($idstep, $next_steps)) { $stage = $step['name']; $stageId = $step['id']; $arr_steps[$idstep]['isNext'] = 1; } } $isActive = true; foreach ($arr_steps as $idstep => $step) { $classF = ''; if ($isActive) $classF = ' active'; if ($step['isNext'] == 1) { $classF = ' nextStep'; $isActive = false; } // Покажет сколько мне дней if(!isset($lostDate)) $lostDate = date('d.m.Y H:i:s'); $interval = date_diff(new DateTime(), new DateTime($lostDate))->days; if ($interval >= $step['days_step']) { $classF .= ' expired'; } $res[$idstep ] = $classF; $res['stage'] = $stage; $res['stageId'] = $stageId; } if($stageId == 0) $stageId = -1; $sql = "UPDATE clients SET step_id = {$stageId} WHERE id = {$clientId}"; mysql_query($sql); $res['sql'] = $sql; //var_dump($res); //return $res; } private function get_bar_etap($clientId, $funnelId, $stageId){ $res = array('bar'=>array()); $res['client_id'] = $clientId; if($funnelId == 0){ $steps = $this->steps; $stage = "Новый"; foreach($steps as $step){ if($step['id'] == $stageId){ $stage = $step['name']; } } $res['bar'] = $steps; $res['stage'] = $stage; $res['stageId'] = $stageId; return $res; } else { $change_step_query = $this->db->query("SELECT * FROM clients_funnel_step WHERE client_id = " . $clientId); $next_id = 0; $change_step = array('step_id' => 0); //$lostDate = $client['date_create']; if ($this->db->num_rows($change_step_query) > 0) { $change_step = $this->db->fetch_assoc($change_step_query); $next_id = $change_step['next_id']; $lostDate = $change_step['date_update']; } else { $sql_client = "SELECT date_add FROM clients WHERE id = $clientId"; $q_client = $this->db->query($sql_client); $r_client = $this->db->fetch_assoc($q_client); $lostDate = $r_client['date_add']; } $next_steps = array(); $funnel_sql = "SELECT * FROM funnel_steps WHERE funnel_id = " . $funnelId . " and deleted=0 order by order_number, branch"; $funnel_step = $this->db->query($funnel_sql); $isActive = true; $classF = ' active'; $stage = ''; $stageId = 0; if ((int)$change_step['step_id'] == 0) { $isActive = false; } $arr_steps = array(); $countStep = $this->db->num_rows($funnel_step); while ($step = $this->db->fetch_assoc($funnel_step)) { $step['isActive'] = (int)$isActive; $step['nextStep'] = false; if ($step['main'] == 1 && !$isActive) { $next_steps[] = $step['id']; } if ($step['id'] == (int)$change_step['step_id']) { //$stage = $step['name']; $next_steps = json_decode(htmlspecialchars_decode($step['next_step'])); if ($next_id == 0) { //$stage = $step['name']; //$next_steps = json_decode( htmlspecialchars_decode($step['next_step'])); //if($step['branch'] < $branch){ $isActive = false; // } } } else if ($step['id'] == (int)$next_id) { $isActive = false; } $arr_steps[$step['id']] = $step; } if ($next_id != 0 && !empty($next_steps)) { foreach ($next_steps as $key => $st) { if ($st != $next_id) { unset($next_steps[$key]); } } } foreach ($arr_steps as $idstep => $step) { $arr_steps[$idstep]['isNext'] = 0; if (in_array($idstep, $next_steps)) { $stage = $step['name']; $stageId = $step['id']; $arr_steps[$idstep]['isNext'] = 1; } } $isActive = true; foreach ($arr_steps as $idstep => $step) { $classF = ''; if ($isActive) $classF = ' active'; if ($step['isNext'] == 1) { $classF = ' nextStep'; $isActive = false; } // Покажет сколько мне дней if(!isset($lostDate)) $lostDate = date('d.m.Y H:i:s'); $interval = date_diff(new DateTime(), new DateTime($lostDate))->days; if ($interval >= $step['days_step']) { $classF .= ' expired'; } $step['classF'] = $classF; $res['bar'][] = $step; $res['stage'] = $stage; $res['stageId'] = $stageId; } if($stageId == 0) $stageId = -1; // $sql = "UPDATE requisitions SET step_id = {$stageId} WHERE id = {$reqId}"; //$this->db->query($sql); //$res['sql'] = $sql; return $res; } } public function get_client_id($id, $agency_id){ $sql = "SELECT * FROM clients WHERE id = {$id}"; $q = mysql_query($sql); $r = mysql_fetch_assoc($q); //Название воронки if($r['funnel_id'] == 0){ $r['name_funnel'] = "Обычные"; } else { $sql_fun = "SELECT name FROM funnel WHERE id = ".$r['funnel_id']; $r['name_funnel'] = $this->db->fetch_assoc($this->db->query($sql_fun))['name']; } $r['steps'] = $this->get_bar_etap($r['id'], $r['funnel_id'], $r['stage']); $r['work_type'] = str_replace(['[',']','_',','],['','',' ',', '],$r['work_type']); $r['role_name'] = str_replace(['[',']','_',','],['','',' ',', '],$r['role']); $r['type_name'] = str_replace(['[',']','_',','],['','',' ',', '], $r['type']); $r['activities'] = array() ; $r['activities_name'] = ''; $sql_a = "SELECT * FROM clients_activities WHERE client_id = {$r['id']}"; $q_a = $this->db->query($sql_a); while($r_a = $this->db->fetch_assoc($q_a)){ $r['activities'][] = $r_a['activity_id']; $sql_a_name = "SELECT * FROM activities WHERE id = {$r_a['activity_id']}"; $q_a_name = $this->db->query($sql_a_name); $r_a_name = $this->db->fetch_assoc($q_a_name); if($r['activities_name'] != '') $r['activities_name'] .= ", "; $r['activities_name'] .= $r_a_name['name']; } $contract = new Contract($this->db); $contract->setAgencyId($agency_id); $typesContracs = $contract->getTypesName(); $r['contracts'] = array(); $r['contracts_name'] = ''; $sql_a = "SELECT * FROM contracts_client WHERE client_id = {$r['id']}"; $q_a = $this->db->query($sql_a); while($r_a = $this->db->fetch_assoc($q_a)){ $expired = false; $diff_date = ($r_a['date_end'] - time())/86400; if($diff_date < (int)$r_a['days']){ $expired = true; } $name = $typesContracs[$r_a['type']]['type']." №".$r_a['number']." от ".date('d.m.Y',$r_a['date_start']). " по ".date('d.m.Y', $r_a['date_end']); $r['contracts'][] = array('id'=>$r_a['id'], 'name'=>$name, 'expired'=>$expired); if($r['contracts_name'] != '') $r['contracts_name'] .= ", "; $r['contracts_name'] .= $name; } $r['objects'] = json_decode(html_entity_decode($r['objects']), true); $who_work = $r['who_work']; $master_work = ''; if ((int)$who_work > 0) { if (isset($usersToUse) && isset($usersToUse[$who_work])) { $mstr = $usersToUse[$who_work]; } else { $mstr = $this->db->fetch_assoc($this->db->query("SELECT agency, manager, agency_name, first_name, last_name, middle_name, role_id, phone, 0 as del FROM users WHERE id=$who_work UNION SELECT agency, manager, agency_name, first_name, last_name, middle_name, role_id, phone, 1 as del FROM users_delete WHERE user_id=$who_work")); } $master_phone = $mstr['phone']; $master_work = trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']); } else { $master_work = 'Все агентство'; } $r['master_work'] = $master_work; $partner = ""; if (isset($r['employee_id']) && $r['employee_id'] > 0) { $partners = new Partners; $partner = $partners->getPartnerByEmployee(intval($r['employee_id'])); } // $r['source_name'] .= ($partner) ? ((isset($source)) ? " | " : '') . $partner['name'] . ((!empty($partner['resident'])) ? ' (' . $partner['resident']. ')' : '') : ''; $r['employe_name'] = $partner['fullname']; if(!empty($partner['position'])){ $r['employe_name'] .= ", ".$partner['position']; } return $r; } public function prev_step_event($clientId, $stepId, $is_open_step = false){ $sql = "SELECT * FROM funnel_steps WHERE id = $stepId"; // echo $sql."\n"; $q = $this->db->query($sql); $r = $this->db->fetch_assoc($q); $sql_client = "SELECT * FROM clients WHERE id=$clientId"; $q_client = $this->db->query($sql_client); $client = $this->db->fetch_assoc($q_client); if(!empty($r['pole_prev'])){ $pole_prev = json_decode(htmlspecialchars_decode($r['pole_prev'])); // var_dump($pole_prev); foreach($pole_prev as $pole => $value_pole){ switch ($pole){ case 'tasks':{ if(!$is_open_step){ $name = ''; if($client['who_work'] > 0){ foreach($value_pole as $vp){ if(!empty($vp->type)){ $set = " SET client_id = {$clientId}"; if(!empty($vp->name)){ $name = $vp->name; } else if ($vp->type == 'even'){ $name = "Мероприятие"; } $date_time = date('Y-m-d H:i:s'); if(!empty($vp->time)){ $date_time = date('Y-m-d H:i:s', strtotime($vp->time)); } $set .= ", user_id = {$client['who_work']}, type = '{$vp->type}', comment='{$vp->comment}', schedule_date = '{$date_time}', from_id = {$client['who_work']}, open_step=1"; if(!empty($name)){ $set .= ", name='{$name}'"; } $insert_ev = "INSERT INTO user_client_events {$set}"; // echo $insert_ev; $this->db->query($insert_ev); } } } } break; } case 'tasks_all':{ if(!$is_open_step){ $name = ''; if($client['who_work'] > 0){ foreach($value_pole as $vp){ if(!empty($vp->type)){ $set = " SET client_id = {$clientId}"; if(!empty($vp->name)){ $name = $vp->name; } else if ($vp->type == 'even'){ $name = "Мероприятие"; } $date_time = date('Y-m-d H:i:s'); if(!empty($vp->time)){ $date_time = date('Y-m-d H:i:s', strtotime($vp->time)); } $set .= ", user_id = {$client['who_work']}, type = '{$vp->type}', comment='{$vp->comment}', schedule_date = '{$date_time}', from_id = {$client['who_work']}, open_step=1"; if(!empty($name)){ $set .= ", name='{$name}'"; } $insert_ev = "INSERT INTO user_client_events {$set}"; // echo $insert_ev; $this->db->query($insert_ev); } } } } break; } case 'comment':{ if(!$is_open_step){ if(!empty($value_pole)){ // $set .= ", user_id = {$req['who_work']}, type = '{$vp->type}', comment='{$vp->comment}', schedule_date = '{$date_time}', from_id = {$req['who_work']}, open_step=1"; $insert_ev = "INSERT INTO user_client_events SET client_id = {$clientId}, user_id = {$client['who_work']}, type = 'comment', comment='{$value_pole}', from_id = {$client['who_work']}, open_step=1"; //echo $insert_ev; $this->db->query($insert_ev); } } break; } case 'new_who_work':{ //Добавляем событие передачи if(!$is_open_step){ if($pole_prev->is_new_who_work != 0 && !empty($value_pole) && (int)$value_pole != 0){ $confirm = 0; if($client['who_work'] == $value_pole) { $confirm = 1; } if ($confirm == 0) { $sql_client_up = "UPDATE clients SET who_work={$value_pole}, confirm=0 WHERE id = {$clientId}"; $this->db->query($sql_client_up); $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `dop_text`, `event`) VALUES ({$client['who_work']}, {$clientId}, {$value_pole}, '(автоматическая передача при переходе на этап)', 'transmitted')"; $this->db->query($sql_conf); } } } break; } case 'new_doers':{ if(!$is_open_step) { if($pole_prev->is_new_doers > 0){ if(!empty($value_pole)){ $doers = array(); $doers_confirm = $client['doers_confirm']; //$doer_clients = $req['doer_clients']; if(!empty($client['doers'])){ $doers = json_decode(htmlspecialchars_decode($client['doers']), true); } foreach($value_pole as $doer_id){ if(!isset($doers[$doer_id]) && $doer_id != $client['who_work']){ $doers_confirm = 0; $doers[$doer_id] = 0; $sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `dop_text`, `event`) VALUES ({$client['who_work']}, {$clientId}, {$doer_id}, '(автоматически при переходе на этап)','transmitted_parallel')"; $this->db->query($sql_conf); } } if(!empty($doers)){ $sql_up_doer = "UPDATE clients SET doers_confirm = {$doers_confirm}, doers = '". clearInputElement(json_encode($doers))."' WHERE id = ".$clientId; $this->db->query($sql_up_doer); } } } } break; } case 'files_attach': { if(!$is_open_step){ if(!empty($value_pole)){ foreach($value_pole as $vp){ $sql_file = "SELECT * FROM files_steps_funnel_prev WHERE id = {$vp->id}"; $q_file = $this->db->query($sql_file); while($r_file = $this->db->fetch_assoc($q_file)){ $patch_new = $_SERVER['DOCUMENT_ROOT']."/upload/clients/".$clientId; //echo $patch_new; if(!file_exists($patch_new)){ mkdir($patch_new, 0777); } $patch = $_SERVER['DOCUMENT_ROOT']."/upload/funnels/prev_steps/".$r_file['funnel_id']; $name = $r_file['guid'].'.'.$r_file['type']; // Источник может быть только в Селектеле — локальную копию удаляет // cron clearFunnelPrevStepFilesExistsInSelectel.php после заливки в облако. $source_local = $patch."/".$name; $source_cdn = "https://uf.joywork.ru/upload/funnels/prev_steps/".$r_file['funnel_id']."/".$name; $source_content = false; if (file_exists($source_local)) { $source_content = @file_get_contents($source_local); } else { // Один HTTP-запрос вместо HEAD+GET. При 404/timeout — false. $ctx = stream_context_create(['http' => ['timeout' => 15]]); $source_content = @file_get_contents($source_cdn, false, $ctx); if ($source_content === '') { $source_content = false; } } if ($source_content !== false) { $name_new = md5(time().$name); @file_put_contents($patch_new."/".$name_new.".".$r_file['type'], $source_content); //отпарвляем файл в Селектел (токен получаем один раз на все файлы этапа) if (empty($token)) { $token = SelectelApi::getNewToken(); } $contType = "application/octet-stream"; $type = $r_file['type']; if ($type) { $type = strtolower($type); } if ($type === "doc") { $contType = "application/msword"; } if ($type === "docx") { $contType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; } if ($type === "xls") { $contType = "application/vnd.ms-excel"; } if ($type === "xlsx") { $contType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; } if ($type === "pdf") { $contType = "application/pdf"; } if ($type === "jpeg" || $type === "jpg") { $contType = "image/jpeg"; } if ($type === "gif") { $contType = "image/gif"; } if ($type === "png") { $contType = "image/png"; } if ($type === "mp3") { $contType = "audio/mpeg"; } if ($type === "zip") { $contType = "application/zip"; } if ($type === "rar") { $contType = "application/vnd.rar"; } $new_path = "/upload/clients/". $clientId . "/" . $name_new . '.' . $type; $r = SelectelApi::uploadUserFile($token, $patch_new."/".$name_new.".".$r_file['type'], $new_path, $contType); $sql_event_file = "INSERT INTO user_client_events SET client_id = {$clientId}, user_id = {$client['who_work']}, type = 'file', comment = '{$vp->comment}', from_id = {$client['who_work']}, open_step=1"; $this->db->query($sql_event_file); $event_id = $this->db->insert_id(); $sql_in_file = "INSERT INTO clients_files (guid, client_id, type, name, event_id) VALUES ('{$name_new}', '{$clientId}', '{$r_file['type']}', '{$r_file['name']}', '{$event_id}')"; $this->db->query($sql_in_file); $client_file_id = $this->db->insert_id(); if(!empty($vp->name)){ $sql = "INSERT INTO names_client_files SET name = '{$vp->name}'"; $this->db->query($sql); $id_name = $this->db->insert_id(); $sql = "UPDATE `clients_files` SET `name_id` = {$id_name} WHERE `id` = {$client_file_id}"; $this->db->query($sql); } } else { error_log("prev_step_event(client={$clientId}): files_attach source missing local={$source_local} cdn={$source_cdn}"); } } } } } break; } case 'list_users_select':{ if($pole_prev->is_mes > 0){ if(!empty($value_pole)){ $tempid = 0; $users_mes = $value_pole; $userId = (int)$_SESSION['id']; $who_work = 0; $user1 = $this->db->fetch_assoc($this->db->query("SELECT * FROM users WHERE id = {$userId}")); $post = "Сотрудник"; if ($user1['agency'] == 1) { $post = "Агенство"; } else if ($user1['manager'] == 1) { $post = "Менеджер"; } $text = "".$post . " " . trim($user1['last_name'] . ' ' . $user1['first_name'] . ' ' . $user1['middle_name'])."
перевел(а) клиента на этап «".$r['name']."» "; if($is_open_step){ $text .= "(этап открыт повторно) "; } $who_work = $req['who_work']; $text .= "
Клиент: ".$client['phone'].' '.$client['fio']." ID: ".$client['id']."
"; } $text = htmlspecialchars($text); $userMes = array(); $send = 0; if($close){ $tempid = time(); $send = 1; } // $user_id_mes = false; foreach ($users_mes as $key => $user_id_mes_) { unset($user_id_mes); if ($users_mes[$key] === 'manager') { $managerWhoWork = $this->db->fetch_assoc($this->db->query("SELECT * FROM users WHERE id = {$who_work}")); $user_id_mes = $managerWhoWork['id_manager']; } else if($users_mes[$key] == 0){ $user_id_mes = $who_work; } else { $user_id_mes = $user_id_mes_; } if(!in_array($user_id_mes, $userMes) && $user_id_mes != $_SESSION['id']){ $sqlMesIn = "INSERT INTO step_notify_closure SET user_id = {$user_id_mes}, from_id={$userId}, step_id={$stepId}, text='{$text}', send={$send}, temp_id={$tempid}"; $this->db->query($sqlMesIn); $userMes[] = $user_id_mes; } } } break; } case 'adjacent_funnels':{ if(!$is_open_step){ if($pole_prev->is_adjacent_funnels > 0){ if(!empty($value_pole)){ $adjacent_funnels=$value_pole; foreach($adjacent_funnels as $funnel){ $sql_a_f = "SELECT id FROM adjacent_funnels WHERE funnel_id = {$funnel} AND client_id = {$clientId}"; $row_a_f = $this->db->num_rows($this->db->query($sql_a_f)); if($row_a_f == 0){ $this->db->query("INSERT INTO adjacent_funnels (funnel_id, client_id, parent_funnel_id, parent_step_id) VALUES ({$funnel}, {$clientId}, {$client['funnel_id']}, {$client['step_id']})"); $comment = "Клиент переведен в смежную воронку "; $sql_funnel = "SELECT name FROM funnel WHERE id = {$funnel}"; $nameFunnel = "«".$this->db->fetch_assoc($this->db->query($sql_funnel))['name']."»"; $comment = $comment.' '.$nameFunnel; $sql_event_adj = "INSERT INTO user_client_events SET client_id = {$clientId}, user_id = {$client['who_work']}, type = 'comment', comment = '{$comment}', from_id = {$client['who_work']}, open_step=1"; $this->db->query($sql_event_adj); } } } } } break; } } } } } //Дополнительные поля private function add_client_info($client_id, $post){ $sql = "SELECT id FROM clients_dop_info WHERE client_id = {$client_id}"; $q = mysql_query($sql); $persone_no_ip = 0; if($post['persone_no_ip']){ $persone_no_ip = 1; } if(mysql_num_rows($q) > 0){ $sql_in = "UPDATE clients_dop_info SET persone_no_ip = {$persone_no_ip}, passport = '{$post['passport']}', date_of_issue_passport = '{$post['date_of_issue_passport']}', passport_issued_by = '{$post['passport_issued_by']}', birthplace = '{$post['birthplace']}', registration_address = '{$post['registration_address']}', post_address = '{$post['post_address']}', persone_snils = '{$post['persone_snils']}', persone_nationality = '{$post['persone_nationality']}', persone_gender = '{$post['persone_gender']}', persone_full_name = '{$post['persone_full_name']}', persone_short_name = '{$post['persone_short_name']}', persone_ogrn = '{$post['persone_ogrn']}', persone_inn = '{$post['persone_inn']}', persone_kpp = '{$post['persone_kpp']}', persone_legal_address = '{$post['persone_legal_address']}', persone_fact_address = '{$post['persone_fact_address']}', persone_info_bank = '{$post['persone_info_bank']}', persone_name_bank = '{$post['persone_name_bank']}', persone_bik_bank = '{$post['persone_bik_bank']}', persone_rs_bank = '{$post['persone_rs_bank']}', persone_kors_bank = '{$post['persone_kors_bank']}', persone_fio_rukovod = '{$post['persone_fio_rukovod']}', persone_powers = '{$post['persone_powers']}', persone_kod_podrazdelenia = '{$post['persone_kod_podrazdelenia']}' WHERE client_id = {$client_id} "; } else { $sql_in = "INSERT INTO clients_dop_info SET client_id = {$client_id}, persone_no_ip = {$persone_no_ip}, passport = '{$post['passport']}', date_of_issue_passport = '{$post['date_of_issue_passport']}', passport_issued_by = '{$post['passport_issued_by']}', birthplace = '{$post['birthplace']}', registration_address = '{$post['registration_address']}', post_address = '{$post['post_address']}', persone_snils = '{$post['persone_snils']}', persone_nationality = '{$post['persone_nationality']}', persone_gender = '{$post['persone_gender']}', persone_full_name = '{$post['persone_full_name']}', persone_short_name = '{$post['persone_short_name']}', persone_ogrn = '{$post['persone_ogrn']}', persone_inn = '{$post['persone_inn']}', persone_kpp = '{$post['persone_kpp']}', persone_legal_address = '{$post['persone_legal_address']}', persone_fact_address = '{$post['persone_fact_address']}', persone_name_bank = '{$post['persone_name_bank']}', persone_info_bank = '{$post['persone_info_bank']}', persone_bik_bank = '{$post['persone_bik_bank']}', persone_rs_bank = '{$post['persone_rs_bank']}', persone_kors_bank = '{$post['persone_kors_bank']}', persone_fio_rukovod = '{$post['persone_fio_rukovod']}', persone_powers = '{$post['persone_powers']}', persone_kod_podrazdelenia = '{$post['persone_kod_podrazdelenia']}'"; } mysql_query($sql_in); } //Объединение клиентов public function union_client($id, $ids, $user_id, $is_union_req){ if($id > 0 && !empty($ids) && $user_id > 0){ $phone_arr = []; $sql = "SELECT * FROM clients WHERE id = {$id}"; $q = $this->db->query($sql); $r = $this->db->fetch_assoc($q); if(!empty($r['phone2'])){ $phone_arr = json_decode(html_entity_decode($r['phone2']), ENT_QUOTES); } $reqs = array(); $sql_req = "SELECT * FROM requisitions WHERE client_id = {$id} AND deleted=0 and cancel=0"; $q_req = $this->db->query($sql_req); while($r_req = $this->db->fetch_assoc($q_req)){ $reqs[] = $r_req; } $phones = []; $text = "Объединен с клиентами: "; $sql_clients = "SELECT * FROM clients WHERE id in (".implode(',', $ids).")"; $q_clients = $this->db->query($sql_clients); while($r_clients = $this->db->fetch_assoc($q_clients)){ if($text != "Объединен с клиентами: ") $text .= ", "; $text .= $r_clients['phone']; $phone_arr[] = $r_clients['phone']; $sql_phone2 = "SELECT * FROM clients_phone2 WHERE client_id = {$r_clients['id']}"; $q_phone2 = $this->db->query($sql_phone2); while($r_phone2 = $this->db->fetch_assoc($q_phone2)){ $phone_arr[] = $r_phone2['phone']; } $sql_update_event = "UPDATE user_client_events SET client_id = {$id} WHERE client_id = {$r_clients['id']}"; //echo $sql_update_event; $this->db->query($sql_update_event); if($is_union_req > 0){ $sql_req_dop = "SELECT * FROM requisitions WHERE client_id = {$r_clients['id']} AND deleted=0 and cancel=0"; $q_req_dop = $this->db->query($sql_req_dop); while($r_req_dop = $this->db->fetch_assoc($q_req_dop)){ $is_union_req = false; foreach($reqs as $req){ // var_dump($r_req_dop['type_id'] == $req['type_id'] && $r_req_dop['who_work'] == $req['who_work']); if($r_req_dop['type_id'] == $req['type_id'] && $r_req_dop['who_work'] == $req['who_work']){ $is_union_req = true; $sql_update_event_req = "UPDATE user_client_events SET req_id = {$req['id']} WHERE req_id = {$r_req_dop['id']}"; $this->db->query($sql_update_event_req); $sql_cancel = "UPDATE requisitions SET cancel = 1 WHERE id = {$r_req_dop['id']}"; $this->db->query($sql_cancel); } } if(!$is_union_req){ $sql_update_req = "UPDATE requisitions SET client_id = {$id} WHERE client_id = {$r_clients['id']}"; //echo $sql_update_req; $this->db->query($sql_update_req); } } } else { $sql_update_req = "UPDATE requisitions SET client_id = {$id} WHERE client_id = {$r_clients['id']}"; //echo $sql_update_req; $this->db->query($sql_update_req); } //if($_SESSION['id'] == 6635){ $sql_update_client_obj = "UPDATE client_objects SET client_id = {$id} WHERE client_id = {$r_clients['id']}"; $this->db->query($sql_update_client_obj); //} $this->del($r_clients['id']); } if(!empty($phone_arr)){ $phones = htmlentities(json_encode($phone_arr)); $sql_up = "UPDATE clients SET phone2 = '{$phones}' WHERE id = {$id}"; $this->db->query($sql_up); $this->update_phone2($id, null, $phone_arr); } $sql_ev = "INSERT INTO events_clients (user_id, client_id, `event`, dop_text, `read`) VALUES ({$user_id}, {$id}, 'update','{$text}', 1)"; //echo $sql_ev; $this->db->query($sql_ev); } } } ?>