Joywork/engine/classes/Clients.php
2026-05-22 21:21:54 +03:00

5622 lines
280 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
class Clients {
public $activities;
public $errors = [];
private $db = null;
private $steps = array(
0 => 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', 'Передан в воронку &laquo;".$funnelName."&raquo;', '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.= "<br>";
$nazv_obj = trim($obj_res['nazv'].' '.$obj_res['adres']);
$dop_text .= "Удален объект ID {$obj_res['id']} &laquo;".$nazv_obj."&raquo;";
$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.= "<br>";
$nazv_obj = trim($obj_res['nazv'].' '.$obj_res['adres']);
$dop_text .= "Добавлен объект ID {$obj_res['id']} &laquo;".$nazv_obj."&raquo;";
$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 = "<p>Клиент с указанной электронной почтой или телефоном уже привязан к агенту $user[fio]!</p>";
if ($need_req_link)
$error .= "<p><a class='double_client_req' href='javascript:{}' data-id='".$user['client_id']."'>Добавить новую заявку по данному клиенту?</a></p>";
$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 .= "Изменено имя клиента с &laquo;".$r_prev['fio']."&raquo; на &laquo;".$post[fio]."&raquo;";
if(!$skipContactsLog && $r_prev['phone'] !== $post['phone']){
if($dop_text != '') $dop_text .= "<br>";
$dop_text .= "Изменен телефон клиента с &laquo;".$r_prev['phone']."&raquo; на &laquo;".$post[phone]."&raquo;";
}
if((int)$r_prev['budget'] !== (int)$post['budget']){
if($dop_text != '') $dop_text .= "<br>";
if(empty($r_prev['budget'])){
$dop_text .= "Добавлен бюджет ".$post['budget'];
} else if(empty($post['budget'])){
$dop_text .= "Удален бюджет ".$r_prev['budget'];
} else {
$dop_text .= "Изменен бюджет клиента с &laquo;".$r_prev['budget']."&raquo; на &laquo;".$post[budget]."&raquo;";
}
}
if(!$skipContactsLog && $r_prev['email'] !== $post['email']){
if($dop_text != '') $dop_text .= "<br>";
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 клиента с &laquo;".$r_prev['email']."&raquo; на &laquo;".$post[email]."&raquo;";
}
}
if($post['type'] !== $r_prev['type']){
if($dop_text != '') $dop_text .= "<br>";
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 .= "<br>";
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 .= "<br>";
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 .= "<br>";
if(empty($post['opis']) || $post['opis'] === ''){
$dop_text .= "Удален комментарий ".$r_prev['opis'];
} else if(empty($r_prev['opis']) || $r_prev['opis'] === ''){
$dop_text .= "Добавлен комментарий &laquo;".$post['opis']."&raquo;";
} else {
$dop_text .= "Изменен комментарий с &laquo;".$r_prev['opis']."&raquo; на &laquo;".$post['opis']."&raquo;";
}
}
if((int)$post['source'] !== (int)$r_prev['source']){
if($dop_text != '') $dop_text .= "<br>";
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 .= "Удален источник &laquo;".$prev_source."&raquo;";
} 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 .= "Добавлен источник &laquo;".$source."&raquo;";
} 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 .= "Изменен источник с &laquo;".$prev_source."&raquo; на &laquo;".$source."&raquo;";
}
}
if((int)$post['employee'] !== (int)$r_prev['employee_id']) {
if ($dop_text != '')
$dop_text .= "<br>";
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 .= "Сотрудник партнёра &laquo;$prev_employee&raquo; был отвязан от клиента";
} 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 .= "Сотрудник партнёра &laquo;$new_employee&raquo; был привязан к клиенту";
} 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 .= "У клиента был изменен сотрудник партнёра с &laquo;$prev_employee&raquo; на &laquo;$new_employee&raquo;";
}
}
if($post['birthday'] !== $r_prev['birthday']){
if($post['birthday'] != '-0001-11-30' ){
if($dop_text != '') $dop_text .= "<br>";
if(empty($post['birthday']) || $post['birthday'] === '' || $post['birthday'] == 'undefined-undefined-') {
if($r_prev['birthday'] != '0000-00-00'){
$dop_text .= "Удалена дата дня рождения &laquo;".$r_prev['birthday']."&raquo;";
}
} else if(empty($r_prev['birthday']) || $r_prev['birthday'] === '0000-00-00'){
$dop_text .= "Добавлена дата дня рождения &laquo;".$post['birthday']."&raquo;";
} else {
$dop_text .= "Изменена дата дня рождения с &laquo;".$r_prev['birthday']."&raquo; на &laquo;".$post['birthday']."&raquo;";
}
}
}
$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 .= "<br>";
$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 .= "<br>";
$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 .= "<br>";
$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 .= "<br>";
$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 .= "Удален объект &laquo;".$nazv_obj."&raquo;";
}
}
foreach($objects_arr as $obj){
if(!in_array($obj, $prevobjects_arr)){
if($dop_text != '') $dop_text .= "<br>";
$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 .= "Добавлен объект &laquo;".$nazv_obj."&raquo;";
}
}
}*/
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 .= "Изменено имя клиента с &laquo;".$r_prev['fio']."&raquo; на &laquo;".$post[fio]."&raquo;";
if(!$skipContactsLog && $r_prev['phone'] !== $post['phone']){
if($dop_text != '') $dop_text .= " ";
$dop_text .= "Изменен телефон клиента с &laquo;".$r_prev['phone']."&raquo; на &laquo;".$post[phone]."&raquo;";
}
if((int)$r_prev['budget'] !== (int)$post['budget']){
if($dop_text != '') $dop_text .= "<br>";
if(empty($r_prev['budget'])){
$dop_text .= "Добавлен бюджет ".$post['budget'];
} else if(empty($post['budget'])){
$dop_text .= "Удален бюджет ".$r_prev['budget'];
} else {
$dop_text .= "Изменен бюджет клиента с &laquo;".$r_prev['budget']."&raquo; на &laquo;".$post[budget]."&raquo;";
}
}
if(!$skipContactsLog && $r_prev['email'] !== $post['email']){
if($dop_text != '') $dop_text .= "<br>";
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 клиента с &laquo;".$r_prev['email']."&raquo; на &laquo;".$post[email]."&raquo;";
}
}
if($post['type'] !== $r_prev['type']){
if($dop_text != '') $dop_text .= "<br>";
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 .= "<br>";
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 .= "<br>";
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 .= "<br>";
if(empty($post['opis']) || $post['opis'] === ''){
$dop_text .= "Удален комментарий ".$r_prev['opis'];
} else if(empty($r_prev['opis']) || $r_prev['opis'] === ''){
$dop_text .= "Добавлен комментарий &laquo;".$post['opis']."&raquo;";
} else {
$dop_text .= "Изменен комментарий с &laquo;".$r_prev['opis']."&raquo; на &laquo;".$post['opis']."&raquo;";
}
}
if((int)$post['source'] !== (int)$r_prev['source']){
if($dop_text != '') $dop_text .= "<br>";
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 .= "Удален источник &laquo;".$prev_source."&raquo;";
} 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 .= "Добавлен источник &laquo;".$source."&raquo;";
} 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 .= "Изменен источник с &laquo;".$prev_source."&raquo; на &laquo;".$source."&raquo;";
}
}
if((int)$post['employee'] !== (int)$r_prev['employee_id']) {
if ($dop_text != '')
$dop_text .= "<br>";
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 .= "Сотрудник партнёра &laquo;$prev_employee&raquo; был отвязан от клиента";
} 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 .= "Сотрудник партнёра &laquo;$new_employee&raquo; был привязан к клиенту";
} 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 .= "У клиента был изменен сотрудник партнёра с &laquo;$prev_employee&raquo; на &laquo;$new_employee&raquo;";
}
}
if($post['birthday'] !== $r_prev['birthday']){
if($post['birthday'] != '-0001-11-30' ){
if($dop_text != '') $dop_text .= "<br>";
if(empty($post['birthday']) || $post['birthday'] === '' || $post['birthday'] == 'undefined-undefined-'){
if($r_prev['birthday'] != '0000-00-00'){
$dop_text .= "Удалена дата дня рождения &laquo;".$r_prev['birthday']."&raquo;";
}
} else if(empty($r_prev['birthday']) || $r_prev['birthday'] === '0000-00-00'){
$dop_text .= "Добавлена дата дня рождения &laquo;".$post['birthday']."&raquo;";
} else {
$dop_text .= "Изменена дата дня рождения с &laquo;".$r_prev['birthday']."&raquo; на &laquo;".$post['birthday']."&raquo;";
}
}
}
$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 .= "<br>";
$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 .= "<br>";
$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 .= "<br>";
$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 .= "<br>";
$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 .= "Удален объект &laquo;".$nazv_obj."&raquo;";
}
}
foreach($objects_arr as $obj){
if(!in_array($obj, $prevobjects_arr)){
if($dop_text != '') $dop_text .= "<br>";
$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 .= "Добавлен объект &laquo;".$nazv_obj."&raquo;";
}
}
}*/
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 .= "<p><a class='double_client_req' href='javascript:{}' data-id='".$user['idc']."'>Добавить новую заявку по данному клиенту?</a></p>";
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 .= "Причина: &laquo;".$select_text.". ".$post['reason']."&raquo;";
if (isset($mes)) {
$text = $mes['text']."&lt;br&gt;Закрыт. ".$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']."&lt;br&gt;Закрыт. Совершена сделка на ".$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 = "<b class=\"jw__counter who_work\">".$rez."</b>";
}
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 = "<b class=\"jw__counter new\">".$rez."</b>";
}
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 = "<b class=\"jw__counter end\">".$rez."</b>";
}
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.'<br>';
} 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 '%&quot;".$post['emp']."&quot;%')";
}
//$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 '%&quot;".$agencyId."&quot;%')";
$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 '%&quot;{$typeCl}&quot;%'";
}
$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 '%&quot;{$typeCl}&quot;%'";
}
$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 '%&quot;{$roleCl}&quot;%'";
}
$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 '%&quot;".$_SESSION['id']."&quot;: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 = "<b class=\"jw__counter all\">".$vsego."</b>";
}
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.'<br>';
// находим ИД агентства и по нему ищем всех свободных клиентов
$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 = "<b class=\"jw__counter all\">".$vsego."</b>";
}
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'])) ? ' <span class="stagebar-title">(' . $partner['resident']. ')</span>' : '') : '';
$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 = "<b>".$post . " " . trim($user1['last_name'] . ' ' . $user1['first_name'] . ' ' . $user1['middle_name'])."</b><br>перевел(а) клиента на этап «".$r['name']."» ";
if($is_open_step){
$text .= "(этап открыт повторно) ";
}
$who_work = $req['who_work'];
$text .= "<br><i>Клиент: </i>".$client['phone'].' '.$client['fio']." ID: ".$client['id']."<br>";
}
$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);
}
}
}
?>