array('id'=>1, 'name'=>'Новый', 'title'=>'Новый клиент', 'classF' => 'stage-new'),
1 => array('id'=>2, 'name'=>'В работе', 'title'=>'В работе', 'classF' => 'stage-work'),
2 => array('id'=>3, 'name'=>'Презентация', 'title'=>'Презентация', 'classF' => 'stage-offer'),
3 => array('id'=>4, 'name'=>'Показ', 'title'=>'Показ', 'classF' => 'stage-showing'),
4 => array('id'=>5, 'name'=>'Бронь', 'title'=>'Бронь', 'classF' => 'stage-reservation'),
5 => array('id'=>6, 'name'=>'Подаем на ипотеку', 'title'=>'Подаем на ипотеку', 'classF' => 'stage-meet'),
6 => array('id'=>7, 'name'=>'Сделка', 'title'=>'Сделка', 'classF' => 'stage-deal'),
7 => array('id'=>8, 'name'=>'Закрыт', 'title'=>'Клиент закрыт', 'classF' => 'stage-end'),
);
private $params_search = [];
public function __construct($db = null){
if($db){
$this->db = $db;
} else {
$pdo = new MysqlPdo(hst, ndb, user, pass);
$sql = "SET NAMES 'utf8'";
$pdo->query($sql);
$this->db = $pdo;
}
}
public function set_params_search($params){
$this->params_search = $params;
}
public function get($id)
{
$this->errors = [];
$sql = "SELECT `clients`.*,
`credit`.`bancks_credit`,
`credit`.`summa_credit`,
`credit`.`komissiya_credit`,
`credit`.`cel_credit`,
`credit`.`age_credit`,
`credit`.`propiska_credit`,
`credit`.`nagruzka_credit`,
`credit`.`dohod_credit`,
`credit`.`dava_ndfl_credit`,
`credit`.`spravka_credit`,
`credit`.`phone_credit`,
`credit`.`podachi_credit`,
`credit`.`not_own_credit`,
`credit`.`yes_deduction_credit`,
`credit`.`overdue_credit`,
`credit`.`mfo_credit`,
`credit`.`kvartira_credit`,
`credit`.`dom_credit`,
`credit`.`uchastok_credit`,
`credit`.`car_credit`,
`credit`.`kol_nagruzka_credit`,
clients_dop_info.persone_no_ip,
clients_dop_info.passport,
clients_dop_info.date_of_issue_passport,
clients_dop_info.passport_issued_by,
clients_dop_info.birthplace,
clients_dop_info.registration_address,
clients_dop_info.post_address,
clients_dop_info.persone_snils,
clients_dop_info.persone_nationality,
clients_dop_info.persone_gender,
clients_dop_info.persone_full_name,
clients_dop_info.persone_short_name,
clients_dop_info.persone_ogrn,
clients_dop_info.persone_inn,
clients_dop_info.persone_kpp,
clients_dop_info.persone_legal_address,
clients_dop_info.persone_fact_address,
clients_dop_info.persone_info_bank,
clients_dop_info.persone_name_bank,
clients_dop_info.persone_bik_bank,
clients_dop_info.persone_rs_bank,
clients_dop_info.persone_kors_bank,
clients_dop_info.persone_fio_rukovod,
clients_dop_info.persone_powers,
clients_dop_info.persone_kod_podrazdelenia
FROM `clients`
LEFT JOIN `credit` ON `clients`.`id` = `credit`.`client_id`
LEFT JOIN `clients_dop_info` ON `clients`.`id` = `clients_dop_info`.`client_id`
WHERE `clients`.`id` = '$id'";
if ($rez = mysql_query($sql)) {
if (mysql_num_rows($rez)) {
$cl = mysql_fetch_assoc($rez);
$sql_req = "SELECT `id` FROM `requisitions` WHERE `client_id` = '$id'";
$q_req = mysql_query($sql_req);
$req = '';
if (mysql_num_rows($q_req) > 0) {
while ($r_req = mysql_fetch_assoc($q_req)) {
if ($req != '')
$req .= ',';
$req .= $r_req['id'];
}
}
$cl['req'] = $req;
$objects = array();
$sql_objects = "SELECT object_id FROM client_objects WHERE client_id = {$id}";
$q_objects = mysql_query($sql_objects);
while($r_objects = mysql_fetch_assoc($q_objects)){
$objects[] = (int)$r_objects['object_id'];
}
$cl['objects'] = '';
if(!empty($objects)){
$cl['objects'] = json_encode($objects);
}
foreach ($cl as $k => $v) {
if ($k == 'birthday') {
if (empty($v) || $v == '0000-00-00')
$v = '';
else
$v = date('d.m.Y', strtotime($v));
}
$this->$k = html_entity_decode($v);
}
$activities = [];
$sqlAddInfo = "SELECT `activity_id` FROM `clients_activities` WHERE `client_id` = '$id'";
if ($rezAddInfo = mysql_query($sqlAddInfo)) {
if (mysql_num_rows($rezAddInfo) > 0) {
while ($row = mysql_fetch_array($rezAddInfo)) {
$activities[] = $row['activity_id'];
}
}
} else {
$this->errors[] = mysql_error();
}
$this->source_see = 1;
if($cl['source'] > 0){
$sql_source = "SELECT * FROM advertising_sources WHERE id = $cl[source]";
//$this->source = $sql_source;
$q_source = mysql_query($sql_source);
if (mysql_num_rows($q_source) > 0) {
$r_source = mysql_fetch_assoc($q_source);
if(is_see($r_source['is_no_see'], $r_source['users_no_see']) === false){
$this->source_see = 0;
}
}
}
$this->activities = json_encode($activities);
}
} else {
$this->errors[] = mysql_error();
}
if (count($this->errors))
return false;
else
return $this;
}
public function del($id) {
/* $sql = "SELECT * FROM `clients` WHERE id = ".$id;
$q = mysql_query($sql);
$r = mysql_fetch_assoc($q);
$sql_i = "INSERT INTO clients_arhiv (`fio`,
`phone`,
`email`,
`birthday`,
`type`,
`opis`,
`id_agent`,
`date_add`,
`deleted`,
`reason`,
`status`,
`budget`,
`summa`,
`who_work`,
`confirm`,
`who_delete`,
`work_type`,
`role`,
`objects`,
`source`,
`stage`,
`hot`,
`priority`,
`turn`,
`turntime`) VALUES ('{$r['fio']}',
'{$r['phone']}',
'{$r['email']}',
'{$r['birthday']}',
'{$r['type']}',
'{$r['opis']}',
'{$r['id_agent']}',
'{$r['date_add']}',
'{$r['deleted']}',
'{$r['reason']}',
'{$r['status']}',
'{$r['budget']}',
'{$r['summa']}',
'{$r['who_work']}',
'{$r['confirm']}',
'{$r['who_delete']}',
'{$r['work_type']}',
'{$r['role']}',
'{$r['objects']}',
'{$r['source']}',
'{$r['stage']}',
'{$r['hot']}',
'{$r['priority']}',
'{$r['turn']}',
'{$r['turntime']}')";
// echo $sql_i;
mysql_query($sql_i);*/
$sql_del = "UPDATE clients SET cancel = 1, objects='' WHERE id = {$id}";
mysql_query($sql_del);
$sql="DELETE FROM client_objects WHERE client_id=$id";
$rez=mysql_query($sql);
$sql="DELETE FROM user_client_events WHERE client_id=$id";
$rez=mysql_query($sql);
$sql = "DELETE FROM clients_phone2 WHERE client_id = {$id}";
$rez=mysql_query($sql);
//Удаление заявок этого клиента
$pdo = new MysqlPdo(hst, ndb, user, pass);
$req = new Requisitions($pdo);
$req->cancelReqsClient($id);
}
public static function updateFunnel($post) {
$errors = [];
if ($post['id']) {
$funnel = null;
$sqlSelFun = "select funnel_id from clients WHERE id=$post[id]";
if (!($resSelFun = mysql_query($sqlSelFun))) {
$errors[] = mysql_error();
} else {
$rowSelFun = mysql_fetch_assoc($resSelFun);
$funnel = $rowSelFun['funnel_id'];
}
if(isset($post['new_funnel_id'])) {
$newFunnel = (int)$post['new_funnel_id'];
} else {
$newFunnel = 0;
}
if ($funnel != $newFunnel) {
$funnelName = "Обычные";
if ($newFunnel > 0) {
$sqlFunnel = "SELECT name FROM funnel WHERE id = $newFunnel";
$resFunnel = mysql_query($sqlFunnel);
$phRow = mysql_fetch_assoc($resFunnel);
$funnelName = $phRow['name'];
}
$sql = "UPDATE clients SET funnel_id = '$newFunnel', `stage`='1' WHERE id=$post[id]";
if (!mysql_query($sql)) {
$errors[] = mysql_error();
}
$sqlDeleteOldFunnel = "DELETE FROM clients_funnel_step WHERE client_id = $post[id]";
if (!mysql_query($sqlDeleteOldFunnel)) {
$errors[] = mysql_error();
}
self::get_class_etap($post['id'], $newFunnel);
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$post['id'].", '0', 'update', 'Передан в воронку «".$funnelName."»', '1')";
if (!mysql_query($sql_conf)) {
$errors[] = mysql_error();
}
}
}
if (count($errors))
return $errors;
else
return false;
}
public function update_objects($client_id, $post_objects = null, $objects = array()){
/*error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);*/
$pdo = new MysqlPdo(hst, ndb, user, pass);
$sql = "SET NAMES 'utf8'";
$pdo->query($sql);
if($client_id > 0){
$old_objects = array();
$add_objects = array();
$del_objects = array();
$sql_o = "SELECT * FROM client_objects WHERE client_id = {$client_id}";
$q_o = $pdo->query($sql_o);
while($r_o = $pdo->fetch_assoc($q_o)){
$old_objects[] = (int)$r_o['object_id'];
}
//$pdo->query("DELETE FROM client_objects WHERE client_id = {$client_id}");
if(!empty($post_objects)){
$temp_objects = json_decode(html_entity_decode($post_objects), true);
if(!empty($temp_objects)){
$objects = $temp_objects;
}
}
foreach($old_objects as $old_obj_id){
if(!in_array($old_obj_id, $objects)){
$del_objects[] = $old_obj_id;
}
}
foreach($objects as $obj_id){
if(!in_array($obj_id, $old_objects)){
$add_objects[] = (int)$obj_id;
}
}
if(!empty($del_objects)){
$sql_del = "DELETE FROM client_objects WHERE client_id = {$client_id} AND object_id in (".implode(',', $del_objects).")";
$pdo->query($sql_del);
$dop_text = '';
$sql_obj = "SELECT `id`, `adres` `nazv` FROM `objects` WHERE `id` in (".implode(',', $del_objects).")";
$q_obj = $pdo->query($sql_obj);
while($obj_res = $pdo->fetch_assoc($q_obj)){
if($dop_text != '') $dop_text.= "
";
$nazv_obj = trim($obj_res['nazv'].' '.$obj_res['adres']);
$dop_text .= "Удален объект ID {$obj_res['id']} «".$nazv_obj."»";
$com = 'Объект отвязан от собственника ID '.$client_id;
$sql = "INSERT INTO user_object_events(user_id, object_id, create_date, type, address, sum, schedule_date, comment, calendar_view)
VALUES('$_SESSION[id]', '{$obj_res['id']}', NOW(), 'comment', NULL, NULL, NULL, '$com', '1')";
$pdo->query($sql);
}
if($dop_text != ''){
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$client_id.", '0', 'update', '".$dop_text."', '1')";
$pdo->query($sql_conf);
}
}
if(!empty($add_objects)){
$sql_insert = "INSERT INTO client_objects (client_id, object_id) values";
foreach($add_objects as $object_id){
if($sql_insert != "INSERT INTO client_objects (client_id, object_id) values") $sql_insert .= ", ";
$sql_insert .= "({$client_id}, {$object_id})";
}
$pdo->query($sql_insert);
$dop_text = '';
$sql_obj = "SELECT `id`, `adres` `nazv` FROM `objects` WHERE `id` in (".implode(',', $add_objects).")";
$q_obj = $pdo->query($sql_obj);
while($obj_res = $pdo->fetch_assoc($q_obj)){
if($dop_text != '') $dop_text.= "
";
$nazv_obj = trim($obj_res['nazv'].' '.$obj_res['adres']);
$dop_text .= "Добавлен объект ID {$obj_res['id']} «".$nazv_obj."»";
$com = 'К объекту был привязан собственник ID '.$client_id;
$sql = "INSERT INTO user_object_events(user_id, object_id, create_date, type, address, sum, schedule_date, comment, calendar_view)
VALUES('$_SESSION[id]', '{$obj_res['id']}', NOW(), 'comment', NULL, NULL, NULL, '$com', '1')";
// file_put_contents(__DIR__.'/log_obj.txt', $sql. "\n", FILE_APPEND);
$pdo->query($sql);
}
if($dop_text != ''){
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$client_id.", '0', 'update', '".$dop_text."', '1')";
$pdo->query($sql_conf);
}
}
}
}
//Дополнительные телефоны
public function update_phone2($client_id, $post_phone2 = null, $phones2 = array()){
$pdo = new MysqlPdo(hst, ndb, user, pass);
$sql = "SET NAMES 'utf8'";
$pdo->query($sql);
if($client_id > 0){
$pdo->query("DELETE FROM clients_phone2 WHERE client_id = {$client_id}");
if(!empty($post_phone2)){
$phones2 = json_decode(html_entity_decode($post_phone2), true);
}
if(!empty($phones2)){
foreach($phones2 as $phone){
$sql_in = "INSERT INTO `clients_phone2` (client_id, phone) VALUES";
if($sql_in != "INSERT INTO `clients_phone2` (client_id, phone) VALUES") $sql_in .= ", ";
$sql_in .= "({$client_id}, '{$phone}')";
$pdo->query($sql_in);
}
}
}
}
public function addEdit($post, $need_req_link = true, $use_redirect = true, $id_agent = false) {
/*error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);*/
$depClass = new Department();
// hide_client_contacts: защита от перезаписи замаскированных значений.
// Если у текущего пользователя скрыты контакты и это РЕДАКТИРОВАНИЕ существующего клиента,
// принудительно берём оригинальные phone/email/national_phone/phone2 из БД и игнорируем форму.
if (function_exists('should_hide_contacts_for_current_user')
&& should_hide_contacts_for_current_user()
&& !empty($post['id'])
) {
$cidSafe = (int)$post['id'];
if ($cidSafe > 0) {
$qSrc = mysql_query("SELECT phone, email, national_phone, phone2 FROM clients WHERE id = $cidSafe LIMIT 1");
if ($qSrc && ($rSrc = mysql_fetch_assoc($qSrc))) {
$post['phone'] = $rSrc['phone'];
$post['email'] = $rSrc['email'];
$post['national_phone'] = $rSrc['national_phone'];
$post['phone2'] = $rSrc['phone2'];
}
}
}
//Проверка на право редактирования
/*if($post['id']){
$sql = "SELECT id, who_work FROM clients WHERE id=$post[id]";
$q = mysql_query($sql);
if(mysql_num_rows($q) > 0){
$r = mysql_fetch_assoc($q);
$who = $r['who_work'];
if($who > 0){
$error = "У вас нет прав для редактирования данного клиента";
$user = (int)$_SESSION['id'];
if ($_SESSION['users_admin']) {
$agency = new User;
$agency->checkPermissions();
$user = $agency->agencyId;
}
$sql_users = "SELECT id FROM users WHERE id in (select id from users where id=$user or id_manager=$user or id_manager in
(select id from users where id_manager=$user or id_manager in
(select id from users where id_manager=$user)))";
//echo $sql_users;
$q_users = mysql_query($sql_users);
while($r_users = mysql_fetch_assoc($q_users)){
if($who == $r_users['id']){
$error = '';
break;
}
}
if($error != ''){
return $error;
}
}
}
}*/
if (($post['id'] && (!isset($post['phone']) || !$post['phone']))) {
$sqlPhone = "SELECT phone FROM clients WHERE id = $post[id]";
$resPhone = mysql_query($sqlPhone);
$phRow = mysql_fetch_assoc($resPhone);
$post['phone'] = $phRow['phone'];
}
//$sql = "SELECT users.id, users.fio FROM users WHERE id IN (SELECT DISTINCT CASE WHEN clients.who_work = 0 THEN clients.id_agent ELSE clients.who_work END FROM clients WHERE clients.phone='$post[phone]')";
// echo $_POST[objects];
//$post[phone2]
$phone2_where_arr = array();
$phone2_where_arr[] = "'".$post['phone']."'";
$phone2_arr = json_decode(html_entity_decode($post['phone2']), ENT_QUOTES);
foreach($phone2_arr as $phone_2){
$phone2_where_arr[] .= "'".$phone_2."'";
}
$phone2_where = '';
$phone_where = '';
if(!empty($phone2_where_arr)){
if(count($phone2_where_arr) == 1){
$phone_where = "clients.phone='$post[phone]'";
} else {
$phone_where = "clients.phone in (".implode(',', $phone2_where_arr).")";
}
$phone2_where = " or clients.id in (SELECT client_id FROM clients_phone2 WHERE phone in (".implode(',', $phone2_where_arr)."))";
}
$sql = "select id as client_id, phone, if(who_work = 0, id_agent, who_work) as id, (SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as fio from users WHERE id = if(clients.who_work = 0, clients.id_agent, clients.who_work)) as fio from clients WHERE cancel=0 AND ($phone_where $phone2_where)";
//echo $sql;
if ($post['id']) {
$sql = $sql." and clients.id != $post[id]";
}
//добавляем ограничение на воронку, ищем повторы внутри воронки
if(isset($post['funnel_id'])) {
$funnelForCheck = (int)$post['funnel_id'];
} else {
$funnelForCheck = 0;
}
//если у нас редактирование, то нужно проверить, что переносить можно в новую воронку
if ($post['id']) {
if(isset($post['new_funnel_id'])) {
$funnelForCheck = (int)$post['new_funnel_id'];
} else {
$funnelForCheck = 0;
}
}
$user_ses = new User;
$user_ses->get($_SESSION['id']);
if($user_ses->agencyId != 21951){
$sql = $sql." and clients.funnel_id = $funnelForCheck";
}
if (empty($post['confirm']))
$post['confirm'] = 0;
if ($post['confirm'] || $post['confirm'] == 0) {
if($post['who_work'] == $_SESSION['id'] && isset($_SESSION['id'])) {
$post['confirm'] = 1;
}
}
// $workType = 0;
//if (isset($post['work_type']) && $post['work_type'] > 0) {
$workType = $post['work_type'];
//}
$rez = mysql_query($sql);
$count = mysql_num_rows($rez);
if ($id_agent == false)
$id_agent = (int)$_SESSION['id'];
$error = '';
if(!empty($post['opis'])){
$post['opis'] = mysql_real_escape_string(htmlspecialchars($post['opis']));
}
if ($count > 0) {
$agencyId = null;
if($user_ses->id_manager == 0 && $user_ses->agency == 0){ //Не агентство
$agencyId = $_SESSION['id'];
} else
if ($_SESSION['agency']) {
$agencyId = $_SESSION['id'];
} else {
if ($_SESSION['manager']) {
$user = new User;
$user->checkPermissions($id_agent, $use_redirect);
$agencyId = $user->id_manager;
} else {
$user = new User;
$user->checkPermissions($id_agent, $use_redirect);
if ($user->id_manager > 0) {
$agency = new User;
$agency->get($user->id_manager);
if($agency->id_manager) {
$agency->get($agency->id_manager);
}
$agencyId = $agency->id;
}
}
}
if ($agencyId != null) {
$idsFromAgency = array();
$idsFromAgency[] = $agencyId;
$agency = new User();
$managers = $agency->getAllManagers($agencyId);
if($managers) {
foreach ($managers as $i => $manager) {
$idsFromAgency[] = $manager['id'];
if((int)$manager['role_id'] > 0 && (int)$manager['department_id'] > 0){
$role_user = $depClass->getRole((int)$manager['role_id']);
if($role_user['role'] == 'admin_department'){
$menagerDep = User::getDepManagers($role_user['department_id']);
foreach($menagerDep as $md){
if(!in_array($md['id'], $idsFromAgency)){
$idsFromAgency[] = $md['id'];
}
$thisAgents = User::getAgentsOfAgency($md['id'], true);
foreach($thisAgents as $da){
if (!in_array($da['id'], $idsFromAgency)) {
$idsFromAgency[] = $da['id'];
}
}
}
}
}
}
}
$agents = $agency->getAllAgents($agencyId);
if($agents) {
foreach ($agents as $i => $agent) {
$idsFromAgency[] = $agent['id'];
}
}
// список пользователей, у которых есть похожие клиенты
if($agencyId == 7945 || $agencyId == 7441 || $agencyId == 12061){
} else if ($agencyId == 7384 && ($post['source'] == 498 || $post['source'] == 589 || $post['source'] == 677)){
} else {
while ($user = mysql_fetch_assoc($rez)) {
if (in_array($user['id'], $idsFromAgency)) {
$error = "
Клиент с указанной электронной почтой или телефоном уже привязан к агенту $user[fio]!
";
if ($need_req_link)
$error .= "Добавить новую заявку по данному клиенту?
";
$mstr = mysql_fetch_assoc(mysql_query("SELECT agency, manager, fio FROM users WHERE id=".$_SESSION[id]));
if($mstr['agency']) $master = "агентством $mstr[fio]";
elseif($mstr['manager']) $master = "менеджером $mstr[fio]";
else $master = "агентом $mstr[fio]";
$dop_text = " - попытка добавить клиента ".$master;
if($post['source']){
$source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$post['source']))['source'];
$dop_text .= " с источника ".$source;
}
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$user['client_id'].", '0', 'double_client', '".$dop_text."', '1')";
mysql_query($sql_conf);
}
}
}
}
if($error != ''){
return $error;
}
if (!isset($post['stage']) || !$post['stage']) {
$post['stage'] = '1';
}
// прошли проверку - добавляем
if ($post['id']) {
$sql_prev = "SELECT `email`, `phone`, `phone2`, `type`, `work_type`, `role`, `opis`, `objects`, `birthday`, `source`, `employee_id`, `budget`, `fio` FROM `clients` WHERE id=$post[id]";
$q_prev = mysql_query($sql_prev);
$r_prev = mysql_fetch_assoc($q_prev);
$opis = mysql_real_escape_string($post['opis']);
// hide_client_contacts: жёсткая защита прямо перед UPDATE.
// Если у юзера скрыты контакты, ИЛИ если в $post проскочила маска (есть `*` либо
// <4 цифр в телефоне, либо `*` в email) — берём из $r_prev (только что прочитанные
// оригинальные значения). Это последний рубеж: даже если выше защиты не сработали,
// в БД попадёт оригинал.
$isHideUser = function_exists('should_hide_contacts_for_current_user') && should_hide_contacts_for_current_user();
$postPhoneStr = isset($post['phone']) ? (string)$post['phone'] : '';
$postEmailStr = isset($post['email']) ? (string)$post['email'] : '';
$phoneLooksMasked = (strpos($postPhoneStr, '*') !== false) || (preg_match_all('/\d/', $postPhoneStr) < 4);
$emailLooksMasked = (strpos($postEmailStr, '*') !== false);
if ($isHideUser || $phoneLooksMasked) {
$post['phone'] = $r_prev['phone'];
}
if ($isHideUser || $emailLooksMasked) {
$post['email'] = $r_prev['email'];
}
if ($isHideUser) {
$post['phone2'] = $r_prev['phone2'];
}
$sql = "UPDATE clients SET fio='$post[fio]', email='".trim($post['email'])."', phone='$post[phone]', phone2='$post[phone2]', `type`='$post[type]', work_type='$workType', opis='$opis', status='$post[status]', budget='$post[budget]', who_work='$post[who_work]', confirm='$post[confirm]', `role`='$post[role]', `objects`='$post[objects]', `source`='$post[source]', `employee_id`='$post[employee]', `birthday`='$post[birthday]', `stage`='$post[stage]', `hot`='$post[hot]', `priority`='$post[priority]' WHERE id=$post[id]";
self::update_objects($post['id'], $post['objects']);
self::update_phone2($post['id'], $post['phone2']);
/*if(empty($post[objects]) || $post[objects] == 'null'){
$sql = "UPDATE clients SET fio='$post[fio]', email='".trim($post['email'])."', phone='$post[phone]', phone2='$post[phone2]', `type`='$post[type]', work_type='$workType', opis='$post[opis]', status='$post[status]', budget='$post[budget]', who_work='$post[who_work]', confirm='$post[confirm]', `role`='$post[role]', `source`='$post[source]', `birthday`='$post[birthday]', `stage`='$post[stage]', `hot`='$post[hot]' WHERE id=$post[id]";
}*/
//Проверяем запись в ипотеке
$sql_i = "SELECT `id` from `ipoteka` WHERE `client_id` = ".$post['id'];
$q_i = mysql_query($sql_i);
if(mysql_num_rows($q_i) > 0){
$r_i = mysql_fetch_assoc($q_i);
$sql_u_i = "UPDATE `ipoteka` SET "
. "`client_id`=$post[id],"
. "`rynok`='$post[rynok]',"
. "`yes_object`=".(int)$post[yes_object].","
. "`jc`='$post[jc]',"
. "`ante_pr`='$post[ante_pr]',"
. "`ante_rub`='$post[ante_rub]',"
. "`comment`='$post[comment_ipoteka]',"
. "`yes_doc`=".(int)$post[yes_doc].","
. "`number_doc`='$post[number_doc]',"
. "`date_doc`='$post[date_doc]',"
. "`doc_komis_pr`='$post[doc_komis_pr]',"
. "`doc_komis`='$post[doc_komis]',"
. "`yes_bank`=".(int)$post[yes_bank].","
. "`date_bank`='$post[date_bank]',"
. "`employee_bank`='$post[employee_bank]',"
. "`banks`='$post[banks]',"
. "`yes_resolve`=".(int)$post[yes_resolve].","
. "`resolve`='$post[resolve]',"
. "`comment_resolve`='$post[comment_resolve]',"
. "`yes_issue`=".(int)$post[yes_issue].","
. "`bank_issue`='$post[bank_issue]',"
. "`rate_issue`='$post[rate_issue]',"
. "`term_issue`='$post[term_issue]',"
. "`yes_brak`='$post[yes_brak]',"
. "`relationship`='$post[relationship]',"
. "`summa_object`='$post[summa_object]',"
. "`age`='$post[age]',"
. "`co_borrower_fio`='$post[co_borrower_fio]',"
. "`co_borrower_age`='$post[co_borrower_age]',"
. "`contacts`='$post[contacts]',"
. "`co_borrower_dohod`='$post[co_borrower_dohod]',"
. "`income`='$post[income]',"
. "`credit_load`='$post[credit_load]'"
. " WHERE `id` = ".$r_i['id'];
//echo $sql_u_i;
mysql_query($sql_u_i);
} else {
$sql_ipoteka = "INSERT INTO "
."`ipoteka` SET "
. "`client_id`=$post[id],"
. "`rynok`='$post[rynok]',"
. "`yes_object`=".(int)$post[yes_object].","
. "`jc`='$post[jc]',"
. "`ante_pr`='$post[ante_pr]',"
. "`ante_rub`='$post[ante_rub]',"
. "`comment`='$post[comment_ipoteka]',"
. "`yes_doc`=".(int)$post[yes_doc].","
. "`number_doc`='$post[number_doc]',"
. "`date_doc`='$post[date_doc]',"
. "`doc_komis_pr`='$post[doc_komis_pr]',"
. "`doc_komis`='$post[doc_komis]',"
. "`yes_bank`=".(int)$post[yes_bank].","
. "`date_bank`='$post[date_bank]',"
. "`employee_bank`='$post[employee_bank]',"
. "`banks`='$post[banks]',"
. "`yes_resolve`=".(int)$post[yes_resolve].","
. "`resolve`='$post[resolve]',"
. "`comment_resolve`='$post[comment_resolve]',"
. "`yes_issue`=".(int)$post[yes_issue].","
. "`bank_issue`='$post[bank_issue]',"
. "`rate_issue`='$post[rate_issue]',"
. "`term_issue`='$post[term_issue]',"
. "`yes_brak`='$post[yes_brak]',"
. "`relationship`='$post[relationship]',"
. "`summa_object`='$post[summa_object]',"
. "`age`='$post[age]',"
. "`co_borrower_fio`='$post[co_borrower_fio]',"
. "`co_borrower_age`='$post[co_borrower_age]',"
. "`contacts`='$post[contacts]',"
. "`co_borrower_dohod`='$post[co_borrower_dohod]',"
. "`income`='$post[income]',"
. "`credit_load`='$post[credit_load]'";
mysql_query($sql_ipoteka);
}
//Проверяем информацию о кредите
$sql_c = "SELECT `id` FROM `credit` WHERE client_id = ".$post['id'];
$q_c = mysql_query($sql_c);
if(mysql_num_rows($q_c) > 0){
$sql_u_c = "UPDATE `credit`
SET
`bancks_credit` = '$post[bancks_credit]',
`summa_credit` = '$post[summa_credit]',
`komissiya_credit` = '$post[komissiya_credit]',
`cel_credit` = '$post[cel_credit]',
`age_credit` = '$post[age_credit]',
`propiska_credit` = '$post[propiska_credit]',
`nagruzka_credit` = '$post[nagruzka_credit]',
`dohod_credit` = '$post[dohod_credit]',
`dava_ndfl_credit` = '$post[dava_ndfl_credit]',
`spravka_credit` = '$post[spravka_credit]',
`phone_credit` = '$post[phone_credit]',
`podachi_credit` = '$post[podachi_credit]',
`not_own_credit` = '$post[not_own_credit]',
`yes_deduction_credit` = '$post[yes_deduction_credit]',
`overdue_credit` = '$post[overdue_credit]',
`mfo_credit` = '$post[mfo_credit]',
`kvartira_credit` = '$post[kvartira_credit]',
`dom_credit` = '$post[dom_credit]',
`uchastok_credit` = '$post[uchastok_credit]',
`car_credit` = '$post[car_credit]',
`kol_nagruzka_credit` = '$post[kol_nagruzka_credit]'
WHERE `client_id` = ".$post['id'];
mysql_query($sql_u_c);
} else {
/* Инфа по кредитам */
$sql_credit = "INSERT INTO `credit`
(`client_id`,
`bancks_credit`,
`summa_credit`,
`komissiya_credit`,
`cel_credit`,
`age_credit`,
`propiska_credit`,
`nagruzka_credit`,
`dohod_credit`,
`dava_ndfl_credit`,
`spravka_credit`,
`phone_credit`,
`podachi_credit`,
`not_own_credit`,
`yes_deduction_credit`,
`overdue_credit`,
`mfo_credit`,
`kvartira_credit`,
`dom_credit`,
`uchastok_credit`,
`car_credit`,
`kol_nagruzka_credit`)
VALUES
({$post['id']},
'$post[bancks_credit]',
'$post[summa_credit]',
'$post[komissiya_credit]',
'$post[cel_credit]',
'$post[age_credit]',
'$post[propiska_credit]',
'$post[nagruzka_credit]',
'$post[dohod_credit]',
'$post[dava_ndfl_credit]',
'$post[spravka_credit]',
'$post[phone_credit]',
'$post[podachi_credit]',
'$post[not_own_credit]',
'$post[yes_deduction_credit]',
'$post[overdue_credit]',
'$post[mfo_credit]',
'$post[kvartira_credit]',
'$post[dom_credit]',
'$post[uchastok_credit]',
'$post[car_credit]',
'$post[kol_nagruzka_credit]'
);
";
//echo $sql_credit;
mysql_query($sql_credit);
}
if($post['who_work'] != $_SESSION['id'] && $post['confirm'] == 0){
// Получаем ID клиента и нового владельца
$client_id_check_event = intval($post['id']);
$new_owner_id_check_event = intval($post['who_work']);
if ($client_id_check_event > 0 && $new_owner_id_check_event > 0) {
// Помечаем как прочитанные все события по этому клиенту, кроме нового владельца
$sql_clear = "UPDATE events_clients SET `read` = 1, date_update = NOW() WHERE client_id = $client_id_check_event AND event = 'transmitted' AND user_id != $new_owner_id_check_event";
mysql_query($sql_clear);
}
//Добавляем событие передачи
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$_SESSION['id'].", ".$post['id'].", ".$post['who_work'].", 'transmitted')";
mysql_query($sql_conf);
if($post['who_work'] == 0){ //Если передача в общие то восстанавливаем клиента
mysql_query("UPDATE clients SET deleted=0 WHERE id={$post['id']}");
$dop_text_ev = "Переведен в общие";
$sql_ev = "INSERT INTO events_clients (client_id, event, dop_text, user_id) VALUES ({$post['id']}, 'update', '{$dop_text_ev}', {$_SESSION['id']})";
mysql_query($sql_ev);
}
$agent = new User;
$agent->get($_SESSION['id']);
if(((int)$agent->agencyId == 8353 || (int)$agent->agencyId == 16001) && $post[who_work] != 0){
$sql = "UPDATE clients SET confirm=1, who_work=$post[who_work] WHERE id=$post[id]";
mysql_query($sql);
$sql="UPDATE user_client_events SET user_id=$post[who_work] WHERE client_id=$post[id]";
mysql_query($sql);
// if(isset($_GET['event'])){
$sql = "UPDATE `events_clients` set `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE client_id=$post[id]";
// echo $sql;
mysql_query($sql);
// }
$sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ('".$post[who_work]."', '".$post[id]."', '".$post[who_work]."', 'accepted', '1')";
mysql_query($sql);
$sqlUser = "SELECT `agency_name`, `last_name`, `middle_name`, `phone` FROM `users` where id=".$post[who_work];
$qUser = mysql_query($sqlUser);
$rUser = mysql_fetch_assoc($qUser);
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
if ($rUser['agency']) {
$sobstv = $sobstv . ", агентство " . $rUser['agency_name'];
} else {
$agency = new User;
$agency->get($post[who_work]);
if (isset($agency->agencyName)) {
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . ", агентство " . $agency->agencyName;
} else {
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
}
}
$num_search = num_search($rUser['phone']);
$sql_confirm_obj = "SELECT * FROM client_confirm_objects WHERE client_id = $post[id] AND status = 0";
$q_confirm_obj = mysql_query($sql_confirm_obj);
$is_confirm_obj = false;
if(mysql_num_rows($q_confirm_obj) > 0){
$r_confirm_obj = mysql_fetch_assoc($q_confirm_obj);
$is_confirm_obj = (bool)$r_confirm_obj['confirm_objects'];
}
if($is_confirm_obj){
$db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306');
//Передача объекта
$sql_client = "SELECT * FROM `client_objects` WHERE client_id = $post[id]";
$q_client = mysql_query($sql_client);
while($object = mysql_fetch_assoc($q_client)){
$sql_up = "UPDATE objects SET id_add_user = '".$post[who_work]."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object['object_id'];
//echo $sql_up;
mysql_query($sql_up);
// перенос Зипал
$sql = "UPDATE zipal_objects SET user_id=$post[who_work], send_to_update=1 WHERE object_id={$object['object_id']}";
mysql_query($sql);
$sqlPack = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id={$object['object_id']}";
mysql_query($sqlPack);
$sql_sph = "UPDATE objects SET id_add_user = {$_SESSION['id']} WHERE id = ".$object['object_id'];
$db_sphinx->query($sql_sph);
}
}
mysql_query("UPDATE client_confirm_objects SET status = 1 WHERE client_id = $post[id] AND status = 0");
}
} else {
if($post[who_work] == $_SESSION[id]){
$agent = new User;
$agent->get($_SESSION['id']);
if(((int)$agent->agencyId == 8353 || (int)$agent->agencyId == 16001) && $post[who_work] != 0){
$sqlUser = "SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `phone` FROM `users` where id=".$post[who_work];
$qUser = mysql_query($sqlUser);
$rUser = mysql_fetch_assoc($qUser);
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
if ($rUser['agency']) {
$sobstv = $sobstv . ", агентство " . $rUser['agency_name'];
} else {
$agency = new User;
$agency->get($post[who_work]);
if (isset($agency->agencyName)) {
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . ", агентство " . $agency->agencyName;
} else {
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
}
}
$num_search = num_search($rUser['phone']);
//Передача объекта
$sql_confirm_obj = "SELECT * FROM client_confirm_objects WHERE client_id = $post[id] AND status = 0";
$q_confirm_obj = mysql_query($sql_confirm_obj);
$is_confirm_obj = false;
if(mysql_num_rows($q_confirm_obj) > 0){
$r_confirm_obj = mysql_fetch_assoc($q_confirm_obj);
$is_confirm_obj = (bool)$r_confirm_obj['confirm_objects'];
}
if($is_confirm_obj){
$db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306');
$sql_client = "SELECT * FROM `client_objects` WHERE client_id = $post[id]";
$q_client = mysql_query($sql_client);
while($object = mysql_fetch_assoc($q_client)){
$sql_up = "UPDATE objects SET id_add_user = '".$post[who_work]."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object['object_id'];
//echo $sql_up;
mysql_query($sql_up);
// перенос Зипал
$sql = "UPDATE zipal_objects SET user_id=$post[who_work], send_to_update=1 WHERE object_id={$object['object_id']}";
mysql_query($sql);
$sqlPack = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id={$object['object_id']}";
mysql_query($sqlPack);
$sql_sph = "UPDATE objects SET id_add_user = {$_SESSION['id']} WHERE id = ".$object['object_id'];
$db_sphinx->query($sql_sph);
}
}
mysql_query("UPDATE client_confirm_objects SET status = 1 WHERE client_id = $post[id] AND status = 0");
}
}
//Событие изменений
$dop_text = '';
// hide_client_contacts: для таких юзеров мы не записываем изменения телефона
// и email в журнал событий — иначе либо ничего не поменялось (моя защита уже
// вернула оригинал из БД), либо в лог утечёт маска "+X *** ..." как "новое значение".
$skipContactsLog = function_exists('should_hide_contacts_for_current_user') && should_hide_contacts_for_current_user();
if((string)$r_prev['fio'] !== $post['fio']) $dop_text .= "Изменено имя клиента с «".$r_prev['fio']."» на «".$post[fio]."»";
if(!$skipContactsLog && $r_prev['phone'] !== $post['phone']){
if($dop_text != '') $dop_text .= "
";
$dop_text .= "Изменен телефон клиента с «".$r_prev['phone']."» на «".$post[phone]."»";
}
if((int)$r_prev['budget'] !== (int)$post['budget']){
if($dop_text != '') $dop_text .= "
";
if(empty($r_prev['budget'])){
$dop_text .= "Добавлен бюджет ".$post['budget'];
} else if(empty($post['budget'])){
$dop_text .= "Удален бюджет ".$r_prev['budget'];
} else {
$dop_text .= "Изменен бюджет клиента с «".$r_prev['budget']."» на «".$post[budget]."»";
}
}
if(!$skipContactsLog && $r_prev['email'] !== $post['email']){
if($dop_text != '') $dop_text .= "
";
if(empty($r_prev['email'])){
$dop_text .= "Добавлен email ".$post['email'];
} else if(empty($post['email'])){
$dop_text .= "Удален email ".$r_prev['email'];
} else {
$dop_text .= "Изменен email клиента с «".$r_prev['email']."» на «".$post[email]."»";
}
}
if($post['type'] !== $r_prev['type']){
if($dop_text != '') $dop_text .= "
";
if(empty($post['type']) || $post['type'] === 'null'){
$dop_text .= "Удален тип недвижимости ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$r_prev['type']);
} else if(empty($r_prev['type']) || $r_prev['type'] === 'null'){
$dop_text .= "Добавлен тип недвижимости ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$post['type']);
} else {
$dop_text .= "Изменен тип недвижимости с ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$r_prev['type'])." на ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$post['type']);
}
}
if($post['work_type'] !== $r_prev['work_type']){
if($dop_text != '') $dop_text .= "
";
if(empty($post['work_type']) || $post['work_type'] === 'null'){
$dop_text .= "Удален тип клиента ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['work_type']);
} else if(empty($r_prev['work_type']) || $r_prev['work_type'] === 'null'){
$dop_text .= "Добавлен тип клиента ".str_replace(['[',']','_',','],['','',' ',', '],$post['work_type']);
} else {
$dop_text .= "Изменен тип клиента с ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['work_type'])." на ".str_replace(['[',']','_',','],['','',' ',', '],$post['work_type']);
}
}
if($post['role'] !== $r_prev['role']){
if($dop_text != '') $dop_text .= "
";
if(empty($post['role']) || $post['role'] === 'null'){
$dop_text .= "Удалена роль клиента ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['role']);
} else if(empty($r_prev['role']) || $r_prev['role'] === 'null'){
$dop_text .= "Добавлена роль клиента ".str_replace(['[',']','_',','],['','',' ',', '],$post['role']);
} else {
$dop_text .= "Изменена роль клиента с ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['role'])." на ".str_replace(['[',']','_',','],['','',' ',', '],$post['role']);
}
}
if($post['opis'] !== $r_prev['opis']){
if($dop_text != '') $dop_text .= "
";
if(empty($post['opis']) || $post['opis'] === ''){
$dop_text .= "Удален комментарий ".$r_prev['opis'];
} else if(empty($r_prev['opis']) || $r_prev['opis'] === ''){
$dop_text .= "Добавлен комментарий «".$post['opis']."»";
} else {
$dop_text .= "Изменен комментарий с «".$r_prev['opis']."» на «".$post['opis']."»";
}
}
if((int)$post['source'] !== (int)$r_prev['source']){
if($dop_text != '') $dop_text .= "
";
if((int)$post['source'] == 0){
$prev_source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$r_prev['source']))['source'];
$dop_text .= "Удален источник «".$prev_source."»";
} else if((int)$r_prev['source'] == 0){
$source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$post['source']))['source'];
$dop_text .= "Добавлен источник «".$source."»";
} else {
$source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$post['source']))['source'];
$prev_source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$r_prev['source']))['source'];
$dop_text .= "Изменен источник с «".$prev_source."» на «".$source."»";
}
}
if((int)$post['employee'] !== (int)$r_prev['employee_id']) {
if ($dop_text != '')
$dop_text .= "
";
if ((int)$post['employee'] == 0) {
$prev_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$r_prev['employee_id']))['name'];
$dop_text .= "Сотрудник партнёра «$prev_employee» был отвязан от клиента";
} else if((int)$r_prev['employee_id'] == 0) {
$new_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$post['employee']))['name'];
$dop_text .= "Сотрудник партнёра «$new_employee» был привязан к клиенту";
} else {
$prev_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$r_prev['employee_id']))['name'];
$new_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$post['employee']))['name'];
$dop_text .= "У клиента был изменен сотрудник партнёра с «$prev_employee» на «$new_employee»";
}
}
if($post['birthday'] !== $r_prev['birthday']){
if($post['birthday'] != '-0001-11-30' ){
if($dop_text != '') $dop_text .= "
";
if(empty($post['birthday']) || $post['birthday'] === '' || $post['birthday'] == 'undefined-undefined-') {
if($r_prev['birthday'] != '0000-00-00'){
$dop_text .= "Удалена дата дня рождения «".$r_prev['birthday']."»";
}
} else if(empty($r_prev['birthday']) || $r_prev['birthday'] === '0000-00-00'){
$dop_text .= "Добавлена дата дня рождения «".$post['birthday']."»";
} else {
$dop_text .= "Изменена дата дня рождения с «".$r_prev['birthday']."» на «".$post['birthday']."»";
}
}
}
$phone2_arr = json_decode(html_entity_decode($post['phone2']), ENT_QUOTES);
$prevphone2_arr = json_decode(html_entity_decode($r_prev['phone2']), ENT_QUOTES);
if(count($phone2_arr) != count($prevphone2_arr)){
if(count($phone2_arr) > count($prevphone2_arr)){
if($dop_text != '') $dop_text .= "
";
$dop_text .= "Добавлены доп. телефоны: ";
foreach ($phone2_arr as $ph){
if(!in_array($ph, $prevphone2_arr)){
$dop_text .= $ph.", ";
}
}
} else if(count($phone2_arr) < count($prevphone2_arr)){
if($dop_text != '') $dop_text .= "
";
$dop_text .= "Удалены доп. телефоны: ";
foreach ($prevphone2_arr as $ph){
if(!in_array($ph, $phone2_arr)){
$dop_text .= $ph.", ";
}
}
}
}
foreach ($phone2_arr as $key => $ph){
if(isset($prevphone2_arr[$key]) && $ph !== $prevphone2_arr[$key]){
if($dop_text != '') $dop_text .= "
";
$dop_text .= "Изменен номер с ".$prevphone2_arr[$key]." на ". $ph;
}
}
$objects_arr = json_decode(html_entity_decode($post['objects']), ENT_QUOTES);
$prevobjects_arr = json_decode(html_entity_decode($r_prev['objects']), ENT_QUOTES);
/*if(count($objects_arr) == 0 && count($prevobjects_arr) == 0){}
else{
foreach($prevobjects_arr as $obj){
if(!in_array($obj, $objects_arr)){
if($dop_text != '') $dop_text .= "
";
$obj_res = mysql_fetch_assoc(mysql_query("SELECT `adres` `nazv` FROM `objects` WHERE `id` = ".$obj));
$nazv_obj = $obj_res['nazv'].' '.$obj_res['adres'];
$dop_text .= "Удален объект «".$nazv_obj."»";
}
}
foreach($objects_arr as $obj){
if(!in_array($obj, $prevobjects_arr)){
if($dop_text != '') $dop_text .= "
";
$obj_res = mysql_fetch_assoc(mysql_query("SELECT `adres` `nazv` FROM `objects` WHERE `id` = ".$obj));
$nazv_obj = $obj_res['nazv'].' '.$obj_res['adres'];
$dop_text .= "Добавлен объект «".$nazv_obj."»";
}
}
}*/
if($dop_text != ''){
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$post['id'].", '0', 'update', '".$dop_text."', '1')";
mysql_query($sql_conf);
}
}
} else {
$funnel = 0;
if($post['funnel_id']) $funnel = (int)$post['funnel_id'];
$uId = $_SESSION['id'];
/* if (session_status() == PHP_SESSION_ACTIVE) {
$uId = $_SESSION['id'];
}*/
if ($post['stage'] === 0 || $post['stage'] === '0') {
$post['stage'] = 1;
}
$sql = "INSERT INTO clients(`fio`, `email`, `phone`, `phone2`, `type`, `work_type`, `opis`, `id_agent`, `date_add`, `status`, `budget`, `who_work`, `confirm`, `role`, `objects`, `source`, `employee_id`, `birthday`, `stage`, `hot`, `priority`,`of_objects`,
`funnel_id`) VALUES('$post[fio]', '".trim($post['email'])."','$post[phone]','$post[phone2]','$post[type]', '$workType', '$post[opis]', '$uId', NOW(), '$post[status]', '$post[budget]', '$post[who_work]', '$post[confirm]', '$post[role]', '$post[objects]', '$post[source]', '$post[employee]', '$post[birthday]', '$post[stage]', '$post[hot]', '$post[priority]', '$post[of_objects]', '$funnel')";
$inserd_client = true;
if($post['who_work'] != $_SESSION['id'] && $post['confirm'] == 0){
//Добавляем событие передачи
$insert_sent = true;
}
}
mysql_query($sql);
$id_cl = $post['id'];
if (isset($inserd_client)) {
$id_cl = mysql_insert_id();
self::update_objects($id_cl, $post['objects']);
self::update_phone2($id_cl, $post['phone2']);
}
if(isset($inserd_client)){
/**** Инфа по ипотеке***/
self::get_class_etap($id_cl, $funnel);
$sql_ipoteka = "INSERT INTO "
."`ipoteka` SET "
. "`client_id`=$id_cl,"
. "`rynok`='$post[rynok]',"
. "`yes_object`=".(int)$post[yes_object].","
. "`jc`='$post[jc]',"
. "`ante_pr`='$post[ante_pr]',"
. "`ante_rub`='$post[ante_rub]',"
. "`comment`='$post[comment_ipoteka]',"
. "`yes_doc`=".(int)$post[yes_doc].","
. "`number_doc`='$post[number_doc]',"
. "`date_doc`='$post[date_doc]',"
. "`doc_komis_pr`='$post[doc_komis_pr]',"
. "`doc_komis`='$post[doc_komis]',"
. "`yes_bank`=".(int)$post[yes_bank].","
. "`date_bank`='$post[date_bank]',"
. "`employee_bank`='$post[employee_bank]',"
. "`banks`='$post[banks]',"
. "`yes_resolve`=".(int)$post[yes_resolve].","
. "`resolve`='$post[resolve]',"
. "`comment_resolve`='$post[comment_resolve]',"
. "`yes_issue`=".(int)$post[yes_issue].","
. "`bank_issue`='$post[bank_issue]',"
. "`rate_issue`='$post[rate_issue]',"
. "`term_issue`='$post[term_issue]',"
. "`yes_brak`='$post[yes_brak]',"
. "`relationship`='$post[relationship]',"
. "`summa_object`='$post[summa_object]',"
. "`age`='$post[age]',"
. "`co_borrower_fio`='$post[co_borrower_fio]',"
. "`co_borrower_age`='$post[co_borrower_age]',"
. "`contacts`='$post[contacts]',"
. "`co_borrower_dohod`='$post[co_borrower_dohod]',"
. "`income`='$post[income]',"
. "`credit_load`='$post[credit_load]'";
//echo $sql_ipoteka. ' 1';
mysql_query($sql_ipoteka);
/***********************/
/* Инфа по кредитам */
$sql_credit = "INSERT INTO `credit`
(`client_id`,
`bancks_credit`,
`summa_credit`,
`komissiya_credit`,
`cel_credit`,
`age_credit`,
`propiska_credit`,
`nagruzka_credit`,
`dohod_credit`,
`dava_ndfl_credit`,
`spravka_credit`,
`phone_credit`,
`podachi_credit`,
`not_own_credit`,
`yes_deduction_credit`,
`overdue_credit`,
`mfo_credit`,
`kvartira_credit`,
`dom_credit`,
`uchastok_credit`,
`car_credit`,
`kol_nagruzka_credit`)
VALUES
({$id_cl},
'$post[bancks_credit]',
'$post[summa_credit]',
'$post[komissiya_credit]',
'$post[cel_credit]',
'$post[age_credit]',
'$post[propiska_credit]',
'$post[nagruzka_credit]',
'$post[dohod_credit]',
'$post[dava_ndfl_credit]',
'$post[spravka_credit]',
'$post[phone_credit]',
'$post[podachi_credit]',
'$post[not_own_credit]',
'$post[yes_deduction_credit]',
'$post[overdue_credit]',
'$post[mfo_credit]',
'$post[kvartira_credit]',
'$post[dom_credit]',
'$post[uchastok_credit]',
'$post[car_credit]',
'$post[kol_nagruzka_credit]'
);
";
//echo $sql_credit;
mysql_query($sql_credit);
}
if(isset($insert_sent)){
// Получаем ID клиента и нового владельца
$client_id_check_event = intval($post['id']);
$new_owner_id_check_event = intval($post['who_work']);
if ($client_id_check_event > 0 && $new_owner_id_check_event > 0) {
// Помечаем как прочитанные все события по этому клиенту, кроме нового владельца
$sql_clear = "UPDATE events_clients SET `read` = 1, date_update = NOW() WHERE client_id = $client_id_check_event AND event = 'transmitted' AND user_id != $new_owner_id_check_event";
mysql_query($sql_clear);
}
//$id_cl = mysql_insert_id();
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$_SESSION['id'].", ".$id_cl.", ".$post['who_work'].", 'transmitted')";
mysql_query($sql_conf);
if($post['who_work'] == 0){ //Если передача в общие то восстанавливаем клиента
mysql_query("UPDATE clients SET deleted=0 WHERE id={$id_cl}");
$dop_text_ev = "Переведен в общие";
$sql_ev = "INSERT INTO events_clients (client_id, event, dop_text, user_id) VALUES ({$id_cl}, 'update', '{$dop_text_ev}', {$_SESSION['id']})";
mysql_query($sql_ev);
}
$agent = new User;
$agent->get($_SESSION['id']);
if(((int)$agent->agencyId == 8353 || (int)$agent->agencyId == 16001) && $post[who_work] != 0){
$sql = "UPDATE clients SET confirm=1, who_work=$post[who_work] WHERE id=$id_cl";
mysql_query($sql);
$sql="UPDATE user_client_events SET user_id=$post[who_work] WHERE client_id=$id_cl";
mysql_query($sql);
// if(isset($_GET['event'])){
$sql = "UPDATE `events_clients` set `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE client_id=$id_cl";
// echo $sql;
mysql_query($sql);
// }
$sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ('".$post[who_work]."', '".$id_cl."', '".$post[who_work]."', 'accepted', '1')";
mysql_query($sql);
$sqlUser = "SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `phone` FROM `users` where id=".$post[who_work];
$qUser = mysql_query($sqlUser);
$rUser = mysql_fetch_assoc($qUser);
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
if ($rUser['agency']) {
$sobstv = $sobstv . ", агентство " . $rUser['agency_name'];
} else {
$agency = new User;
$agency->get($post[who_work]);
if (isset($agency->agencyName)) {
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . ", агентство " . $agency->agencyName;
} else {
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
}
}
$num_search = num_search($rUser['phone']);
//Передача объекта
$sql_confirm_obj = "SELECT * FROM client_confirm_objects WHERE client_id = $id_cl AND status = 0";
$q_confirm_obj = mysql_query($sql_confirm_obj);
$is_confirm_obj = false;
if(mysql_num_rows($q_confirm_obj) > 0){
$r_confirm_obj = mysql_fetch_assoc($q_confirm_obj);
$is_confirm_obj = (bool)$r_confirm_obj['confirm_objects'];
}
if($is_confirm_obj){
$db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306');
$sql_client = "SELECT * FROM `client_objects` WHERE client_id = $id_cl";
$q_client = mysql_query($sql_client);
while($object = mysql_fetch_assoc($q_client)){
$sql_up = "UPDATE objects SET id_add_user = '".$post[who_work]."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object['object_id'];
//echo $sql_up;
mysql_query($sql_up);
// перенос Зипал
$sql = "UPDATE zipal_objects SET user_id=$post[who_work], send_to_update=1 WHERE object_id={$object['object_id']}";
mysql_query($sql);
$sqlPack = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id={$object['object_id']}";
mysql_query($sqlPack);
$sql_sph = "UPDATE objects SET id_add_user = {$_SESSION['id']} WHERE id = ".$object['object_id'];
$db_sphinx->query($sql_sph);
}
}
mysql_query("UPDATE client_confirm_objects SET status = 1 WHERE client_id = $id_cl AND status = 0");
}
}
$client_id = 0;
if(isset($id_cl)){
$client_id = $id_cl;
} else {
$client_id = $post['id'];
}
// Добавляем теги по клиенту
if (is_string($post['activities']))
$arr_activities = json_decode(html_entity_decode($post['activities']), ENT_QUOTES);
else if (is_array($post['activities']))
$arr_activities = $post['activities'];
else
$arr_activities = (int)$post['activities'];
if ($client_id) {
$sql = "DELETE FROM `clients_activities` WHERE `client_id` = '".$client_id."'";
mysql_query($sql);
if (!empty($arr_activities)) {
if (is_array($arr_activities)) {
$sql_a = [];
foreach($arr_activities as $key => $activity_id) {
$sql_a[] = "('$client_id', '$activity_id')";
}
if (count($sql_a) > 0) {
$sql = "INSERT INTO `clients_activities` (`client_id`, `activity_id`) VALUES " . implode(', ', $sql_a);
mysql_query($sql);
}
} else if (is_numeric($arr_activities) && $arr_activities > 0) {
$sql = "INSERT INTO `clients_activities` (`client_id`, `activity_id`) VALUES ('$client_id', '$arr_activities')";
mysql_query($sql);
}
}
}
// Сохраняем поля для интерактивных документов
if ($client_id && !empty($post['variables'])) {
if (is_array($post['variables'])) {
$docs = new Docs();
$docs->saveDocFields($client_id, "clients", $post['variables']);
}
}
if (isset($inserd_client) && $inserd_client) {
//сохраняем данные wazzap
Clients::createClientWazzapData($client_id, $post);
}
if($user_ses->agencyId == 5238 || $user_ses->agencyId == 13154){
if($post['send_web_hook']){
$webHook = new WebHookSend($user_ses->agencyId, 1, $client_id, 'client');
}
}
Clients::add_client_info($client_id, $post);
return $client_id;
} else {
if ($post['id']) {
$sql_prev = "SELECT `email`, `phone`, `phone2`, `type`, `work_type`, `role`, `opis`, `objects`, `birthday`, `source`, `employee_id`, `budget`, `fio` FROM `clients` WHERE id = $post[id]";
$q_prev = mysql_query($sql_prev);
$r_prev = mysql_fetch_assoc($q_prev);
// hide_client_contacts: тот же финальный rescue, что и в первой ветке выше.
$isHideUser = function_exists('should_hide_contacts_for_current_user') && should_hide_contacts_for_current_user();
$postPhoneStr = isset($post['phone']) ? (string)$post['phone'] : '';
$postEmailStr = isset($post['email']) ? (string)$post['email'] : '';
$phoneLooksMasked = (strpos($postPhoneStr, '*') !== false) || (preg_match_all('/\d/', $postPhoneStr) < 4);
$emailLooksMasked = (strpos($postEmailStr, '*') !== false);
if ($isHideUser || $phoneLooksMasked) {
$post['phone'] = $r_prev['phone'];
}
if ($isHideUser || $emailLooksMasked) {
$post['email'] = $r_prev['email'];
}
if ($isHideUser) {
$post['phone2'] = $r_prev['phone2'];
}
$opis = mysql_real_escape_string($post['opis']);
$sql = "UPDATE clients
SET fio='$post[fio]',
email='".trim($post['email'])."',
phone='$post[phone]',
phone2='$post[phone2]',
type='$post[type]',
work_type='$workType',
opis='$opis',
status='$post[status]',
budget='$post[budget]',
who_work='$post[who_work]',
confirm='$post[confirm]',
`role`='$post[role]',
`objects`='$post[objects]',
`source`='$post[source]',
`employee_id`='$post[employee]',
`birthday`='$post[birthday]',
`stage`='$post[stage]',
`hot`='$post[hot]',
`priority`='$post[priority]'
WHERE id=$post[id]";
/* if(empty($post[objects] || $post[objects] == 'null')){
$sql = "UPDATE clients SET fio='$post[fio]', email='".trim($post['email'])."', phone='$post[phone]', phone2='$post[phone2]', type='$post[type]', work_type='$workType', opis='$post[opis]', status='$post[status]', budget='$post[budget]', who_work='$post[who_work]', confirm='$post[confirm]', `role`='$post[role]', `source`='$post[source]', `birthday`='$post[birthday]', `stage`='$post[stage]', `hot`='$post[hot]' WHERE id=$post[id]";
} */
self::update_objects($post['id'], $post['objects']);
self::update_phone2($post['id'], $post['phone2']);
//Проверяем запись в ипотеке
$sql_i = "SELECT `id` from `ipoteka` WHERE `client_id` = ".$post['id'];
//echo $sql_i;
$q_i = mysql_query($sql_i);
if(mysql_num_rows($q_i) > 0){
$r_i = mysql_fetch_assoc($q_i);
$sql_u_i = "UPDATE `ipoteka` SET "
. "`client_id`=$post[id],"
. "`rynok`='$post[rynok]',"
. "`yes_object`=".(int)$post[yes_object].","
. "`jc`='$post[jc]',"
. "`ante_pr`='$post[ante_pr]',"
. "`ante_rub`='$post[ante_rub]',"
. "`comment`='$post[comment_ipoteka]',"
. "`yes_doc`=".(int)$post[yes_doc].","
. "`number_doc`='$post[number_doc]',"
. "`date_doc`='$post[date_doc]',"
. "`doc_komis_pr`='$post[doc_komis_pr]',"
. "`doc_komis`='$post[doc_komis]',"
. "`yes_bank`=".(int)$post[yes_bank].","
. "`date_bank`='$post[date_bank]',"
. "`employee_bank`='$post[employee_bank]',"
. "`banks`='$post[banks]',"
. "`yes_resolve`=".(int)$post[yes_resolve].","
. "`resolve`='$post[resolve]',"
. "`denial`='$post[denial]',"
. "`revisal`='$post[revisal]',"
. "`comment_resolve`='$post[comment_resolve]',"
. "`yes_issue`=".(int)$post[yes_issue].","
. "`bank_issue`='$post[bank_issue]',"
. "`rate_issue`='$post[rate_issue]',"
. "`term_issue`='$post[term_issue]',"
. "`yes_brak`='$post[yes_brak]',"
. "`relationship`='$post[relationship]',"
. "`summa_object`='$post[summa_object]',"
. "`age`='$post[age]',"
. "`co_borrower_fio`='$post[co_borrower_fio]',"
. "`co_borrower_age`='$post[co_borrower_age]',"
. "`contacts`='$post[contacts]',"
. "`co_borrower_dohod`='$post[co_borrower_dohod]',"
. "`income`='$post[income]',"
. "`credit_load`='$post[credit_load]'"
. " WHERE `id` = ".$r_i['id'];
/*if($_SESSION['id']==5238){
echo $sql_u_i;
}*/
mysql_query($sql_u_i);
} else {
$sql_ipoteka = "INSERT INTO "
."`ipoteka` SET "
. "`client_id`=$post[id],"
. "`rynok`='$post[rynok]',"
. "`yes_object`=".(int)$post[yes_object].","
. "`jc`='$post[jc]',"
. "`ante_pr`='$post[ante_pr]',"
. "`ante_rub`='$post[ante_rub]',"
. "`comment`='$post[comment_ipoteka]',"
. "`yes_doc`=".(int)$post[yes_doc].","
. "`number_doc`='$post[number_doc]',"
. "`date_doc`='$post[date_doc]',"
. "`doc_komis_pr`='$post[doc_komis_pr]',"
. "`doc_komis`='$post[doc_komis]',"
. "`yes_bank`=".(int)$post[yes_bank].","
. "`date_bank`='$post[date_bank]',"
. "`employee_bank`='$post[employee_bank]',"
. "`banks`='$post[banks]',"
. "`yes_resolve`=".(int)$post[yes_resolve].","
. "`resolve`='$post[resolve]',"
. "`denial`='$post[denial]',"
. "`revisal`='$post[revisal]',"
. "`comment_resolve`='$post[comment_resolve]',"
. "`yes_issue`=".(int)$post[yes_issue].","
. "`bank_issue`='$post[bank_issue]',"
. "`rate_issue`='$post[rate_issue]',"
. "`term_issue`='$post[term_issue]',"
. "`yes_brak`='$post[yes_brak]',"
. "`relationship`='$post[relationship]',"
. "`summa_object`='$post[summa_object]',"
. "`age`='$post[age]',"
. "`co_borrower_fio`='$post[co_borrower_fio]',"
. "`co_borrower_age`='$post[co_borrower_age]',"
. "`contacts`='$post[contacts]',"
. "`co_borrower_dohod`='$post[co_borrower_dohod]',"
. "`income`='$post[income]',"
. "`credit_load`='$post[credit_load]'";
mysql_query($sql_ipoteka);
}
//Проверяем информацию о кредите
$sql_c = "SELECT `id` FROM `credit` WHERE client_id = ".$post['id'];
$q_c = mysql_query($sql_c);
if(mysql_num_rows($q_c) > 0){
$sql_u_c = "UPDATE `credit`
SET
`bancks_credit` = '$post[bancks_credit]',
`summa_credit` = '$post[summa_credit]',
`komissiya_credit` = '$post[komissiya_credit]',
`cel_credit` = '$post[cel_credit]',
`age_credit` = '$post[age_credit]',
`propiska_credit` = '$post[propiska_credit]',
`nagruzka_credit` = '$post[nagruzka_credit]',
`dohod_credit` = '$post[dohod_credit]',
`dava_ndfl_credit` = '$post[dava_ndfl_credit]',
`spravka_credit` = '$post[spravka_credit]',
`phone_credit` = '$post[phone_credit]',
`podachi_credit` = '$post[podachi_credit]',
`not_own_credit` = '$post[not_own_credit]',
`yes_deduction_credit` = '$post[yes_deduction_credit]',
`overdue_credit` = '$post[overdue_credit]',
`mfo_credit` = '$post[mfo_credit]',
`kvartira_credit` = '$post[kvartira_credit]',
`dom_credit` = '$post[dom_credit]',
`uchastok_credit` = '$post[uchastok_credit]',
`car_credit` = '$post[car_credit]',
`kol_nagruzka_credit` = '$post[kol_nagruzka_credit]'
WHERE `client_id` = ".$post['id'];
mysql_query($sql_u_c);
} else {
/* Инфа по кредитам */
$sql_credit = "INSERT INTO `credit`
(`client_id`,
`bancks_credit`,
`summa_credit`,
`komissiya_credit`,
`cel_credit`,
`age_credit`,
`propiska_credit`,
`nagruzka_credit`,
`dohod_credit`,
`dava_ndfl_credit`,
`spravka_credit`,
`phone_credit`,
`podachi_credit`,
`not_own_credit`,
`yes_deduction_credit`,
`overdue_credit`,
`mfo_credit`,
`kvartira_credit`,
`dom_credit`,
`uchastok_credit`,
`car_credit`,
`kol_nagruzka_credit`)
VALUES
({$post['id']},
'$post[bancks_credit]',
'$post[summa_credit]',
'$post[komissiya_credit]',
'$post[cel_credit]',
'$post[age_credit]',
'$post[propiska_credit]',
'$post[nagruzka_credit]',
'$post[dohod_credit]',
'$post[dava_ndfl_credit]',
'$post[spravka_credit]',
'$post[phone_credit]',
'$post[podachi_credit]',
'$post[not_own_credit]',
'$post[yes_deduction_credit]',
'$post[overdue_credit]',
'$post[mfo_credit]',
'$post[kvartira_credit]',
'$post[dom_credit]',
'$post[uchastok_credit]',
'$post[car_credit]',
'$post[kol_nagruzka_credit]'
);
";
//echo $sql_credit;
mysql_query($sql_credit);
}
if($post['who_work'] != $_SESSION['id'] && $post['confirm'] == 0){
// Получаем ID клиента и нового владельца
$client_id_check_event = intval($post['id']);
$new_owner_id_check_event = intval($post['who_work']);
if ($client_id_check_event > 0 && $new_owner_id_check_event > 0) {
// Помечаем как прочитанные все события по этому клиенту, кроме нового владельца
$sql_clear = "UPDATE events_clients SET `read` = 1, date_update = NOW() WHERE client_id = $client_id_check_event AND event = 'transmitted' AND user_id != $new_owner_id_check_event";
mysql_query($sql_clear);
}
//Добавляем событие передачи
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$_SESSION['id'].", ".$post['id'].", ".$post['who_work'].", 'transmitted')";
mysql_query($sql_conf);
if($post['who_work'] == 0){ //Если передача в общие то восстанавливаем клиента
mysql_query("UPDATE clients SET deleted=0 WHERE id={$post['id']}");
$dop_text_ev = "Переведен в общие";
$sql_ev = "INSERT INTO events_clients (client_id, event, dop_text, user_id) VALUES ({$post['id']}, 'update', '{$dop_text_ev}', {$_SESSION['id']})";
mysql_query($sql_ev);
}
$agent = new User;
$agent->get($_SESSION['id']);
if(((int)$agent->agencyId == 8353 || (int)$agent->agencyId == 16001) && $post[who_work] != 0){
$sql = "UPDATE clients SET confirm=1, who_work=$post[who_work] WHERE id=$post[id]";
mysql_query($sql);
$sql="UPDATE user_client_events SET user_id=$post[who_work] WHERE client_id=$post[id]";
mysql_query($sql);
// if(isset($_GET['event'])){
$sql = "UPDATE `events_clients` set `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE client_id=$post[id]";
// echo $sql;
mysql_query($sql);
// }
$sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ('".$post[who_work]."', '".$post[id]."', '".$post[who_work]."', 'accepted', '1')";
mysql_query($sql);
$sqlUser = "SELECT `agency_id`, `first_name`, `last_name`, `middle_name`, `phone` FROM `users` where id=".$post[who_work];
$qUser = mysql_query($sqlUser);
$rUser = mysql_fetch_assoc($qUser);
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
if ($rUser['agency']) {
$sobstv = $sobstv . ", агентство " . $rUser['agency_id'];
} else {
$agency = new User;
$agency->get($post[who_work]);
if (isset($agency->agencyName)) {
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . ", агентство " . $agency->agencyName;
} else {
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
}
}
$num_search = num_search($rUser['phone']);
//Передача объекта
$sql_confirm_obj = "SELECT * FROM client_confirm_objects WHERE client_id = $post[id] AND status = 0";
$q_confirm_obj = mysql_query($sql_confirm_obj);
$is_confirm_obj = false;
if(mysql_num_rows($q_confirm_obj) > 0){
$r_confirm_obj = mysql_fetch_assoc($q_confirm_obj);
$is_confirm_obj = (bool)$r_confirm_obj['confirm_objects'];
}
if($is_confirm_obj){
$db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306');
$sql_client = "SELECT * FROM `client_objects` WHERE client_id = $post[id]";
$q_client = mysql_query($sql_client);
while($object = mysql_fetch_assoc($q_client)){
$sql_up = "UPDATE objects SET id_add_user = '".$post[who_work]."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object['object_id'];
//echo $sql_up;
mysql_query($sql_up);
// перенос Зипал
$sql = "UPDATE zipal_objects SET user_id=$post[who_work], send_to_update=1 WHERE object_id={$object['object_id']}";
mysql_query($sql);
$sqlPack = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id={$object['object_id']}";
mysql_query($sqlPack);
$sql_sph = "UPDATE objects SET id_add_user = {$_SESSION['id']} WHERE id = ".$object['object_id'];
$db_sphinx->query($sql_sph);
}
}
mysql_query("UPDATE client_confirm_objects SET status = 1 WHERE client_id = $post[id] AND status = 0");
}
} else {
//Событие изменений
$dop_text = '';
// hide_client_contacts: см. комментарий выше — не пишем contact-изменения в лог.
$skipContactsLog = function_exists('should_hide_contacts_for_current_user') && should_hide_contacts_for_current_user();
if((string)$r_prev['fio'] !== $post['fio']) $dop_text .= "Изменено имя клиента с «".$r_prev['fio']."» на «".$post[fio]."»";
if(!$skipContactsLog && $r_prev['phone'] !== $post['phone']){
if($dop_text != '') $dop_text .= " ";
$dop_text .= "Изменен телефон клиента с «".$r_prev['phone']."» на «".$post[phone]."»";
}
if((int)$r_prev['budget'] !== (int)$post['budget']){
if($dop_text != '') $dop_text .= "
";
if(empty($r_prev['budget'])){
$dop_text .= "Добавлен бюджет ".$post['budget'];
} else if(empty($post['budget'])){
$dop_text .= "Удален бюджет ".$r_prev['budget'];
} else {
$dop_text .= "Изменен бюджет клиента с «".$r_prev['budget']."» на «".$post[budget]."»";
}
}
if(!$skipContactsLog && $r_prev['email'] !== $post['email']){
if($dop_text != '') $dop_text .= "
";
if(empty($r_prev['email'])){
$dop_text .= "Добавлен email ".$post['email'];
} else if(empty($post['email'])){
$dop_text .= "Удален email ".$r_prev['email'];
} else {
$dop_text .= "Изменен email клиента с «".$r_prev['email']."» на «".$post[email]."»";
}
}
if($post['type'] !== $r_prev['type']){
if($dop_text != '') $dop_text .= "
";
if(empty($post['type']) || $post['type'] === 'null'){
$dop_text .= "Удален тип недвижимости ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$r_prev['type']);
} else if(empty($r_prev['type']) || $r_prev['type'] === 'null'){
$dop_text .= "Добавлен тип недвижимости ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$post['type']);
} else {
$dop_text .= "Изменен тип недвижимости с ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$r_prev['type'])." на ".str_replace(['[',']','_кв','_',','],['','','.кв.',' ',', '],$post['type']);
}
}
if($post['work_type'] !== $r_prev['work_type']){
if($dop_text != '') $dop_text .= "
";
if(empty($post['work_type']) || $post['work_type'] === 'null'){
$dop_text .= "Удален тип клиента ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['work_type']);
} else if(empty($r_prev['work_type']) || $r_prev['work_type'] === 'null'){
$dop_text .= "Добавлен тип клиента ".str_replace(['[',']','_',','],['','',' ',', '],$post['work_type']);
} else {
$dop_text .= "Изменен тип клиента с ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['work_type'])." на ".str_replace(['[',']','_',','],['','',' ',', '],$post['work_type']);
}
}
if($post['role'] !== $r_prev['role']){
if($dop_text != '') $dop_text .= "
";
if(empty($post['role']) || $post['role'] === 'null'){
$dop_text .= "Удалена роль клиента ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['role']);
} else if(empty($r_prev['role']) || $r_prev['role'] === 'null'){
$dop_text .= "Добавлена роль клиента ".str_replace(['[',']','_',','],['','',' ',', '],$post['role']);
} else {
$dop_text .= "Изменена роль клиента с ".str_replace(['[',']','_',','],['','',' ',', '],$r_prev['role'])." на ".str_replace(['[',']','_',','],['','',' ',', '],$post['role']);
}
}
if($post['opis'] !== $r_prev['opis']){
if($dop_text != '') $dop_text .= "
";
if(empty($post['opis']) || $post['opis'] === ''){
$dop_text .= "Удален комментарий ".$r_prev['opis'];
} else if(empty($r_prev['opis']) || $r_prev['opis'] === ''){
$dop_text .= "Добавлен комментарий «".$post['opis']."»";
} else {
$dop_text .= "Изменен комментарий с «".$r_prev['opis']."» на «".$post['opis']."»";
}
}
if((int)$post['source'] !== (int)$r_prev['source']){
if($dop_text != '') $dop_text .= "
";
if((int)$post['source'] == 0){
$prev_source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$r_prev['source']))['source'];
$dop_text .= "Удален источник «".$prev_source."»";
} else if((int)$r_prev['source'] == 0){
$source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$post['source']))['source'];
$dop_text .= "Добавлен источник «".$source."»";
} else {
$source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$post['source']))['source'];
$prev_source = mysql_fetch_assoc(mysql_query("SELECT `source` FROM `advertising_sources` WHERE `id` = ".(int)$r_prev['source']))['source'];
$dop_text .= "Изменен источник с «".$prev_source."» на «".$source."»";
}
}
if((int)$post['employee'] !== (int)$r_prev['employee_id']) {
if ($dop_text != '')
$dop_text .= "
";
if (empty($post['employee']) || $post['employee'] === '') {
$prev_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$r_prev['employee_id']))['name'];
$dop_text .= "Сотрудник партнёра «$prev_employee» был отвязан от клиента";
} else if(!($r_prev['employee_id']) || $r_prev['employee_id'] === '') {
$new_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$post['employee']))['name'];
$dop_text .= "Сотрудник партнёра «$new_employee» был привязан к клиенту";
} else {
$prev_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$r_prev['employee_id']))['name'];
$new_employee = mysql_fetch_assoc(mysql_query("SELECT `name` FROM `partners_employees` WHERE `id` = " . (int)$post['employee']))['name'];
$dop_text .= "У клиента был изменен сотрудник партнёра с «$prev_employee» на «$new_employee»";
}
}
if($post['birthday'] !== $r_prev['birthday']){
if($post['birthday'] != '-0001-11-30' ){
if($dop_text != '') $dop_text .= "
";
if(empty($post['birthday']) || $post['birthday'] === '' || $post['birthday'] == 'undefined-undefined-'){
if($r_prev['birthday'] != '0000-00-00'){
$dop_text .= "Удалена дата дня рождения «".$r_prev['birthday']."»";
}
} else if(empty($r_prev['birthday']) || $r_prev['birthday'] === '0000-00-00'){
$dop_text .= "Добавлена дата дня рождения «".$post['birthday']."»";
} else {
$dop_text .= "Изменена дата дня рождения с «".$r_prev['birthday']."» на «".$post['birthday']."»";
}
}
}
$phone2_arr = json_decode(html_entity_decode($post['phone2']), ENT_QUOTES);
$prevphone2_arr = json_decode(html_entity_decode($r_prev['phone2']), ENT_QUOTES);
if(count($phone2_arr) != count($prevphone2_arr)){
if(count($phone2_arr) > count($prevphone2_arr)){
if($dop_text != '') $dop_text .= "
";
$dop_text .= "Добавлены доп. телефоны: ";
foreach ($phone2_arr as $ph){
if(!in_array($ph, $prevphone2_arr)){
$dop_text .= $ph.", ";
}
}
} else if(count($phone2_arr) < count($prevphone2_arr)){
if($dop_text != '') $dop_text .= "
";
$dop_text .= "Удалены доп. телефоны: ";
foreach ($prevphone2_arr as $ph){
if(!in_array($ph, $phone2_arr)){
$dop_text .= $ph.", ";
}
}
}
}
foreach ($phone2_arr as $key => $ph){
if(isset($prevphone2_arr[$key]) && $ph !== $prevphone2_arr[$key]){
if($dop_text != '') $dop_text .= "
";
$dop_text .= "Изменен номер с ".$prevphone2_arr[$key]." на ". $ph;
}
}
$objects_arr = json_decode(html_entity_decode($post['objects']), ENT_QUOTES);
$prevobjects_arr = json_decode(html_entity_decode($r_prev['objects']), ENT_QUOTES);
/* if(count($objects_arr) == 0 && count($prevobjects_arr) == 0){
} else {
foreach($prevobjects_arr as $obj){
if(!in_array($obj, $objects_arr)){
if($dop_text != '') $dop_text .= "
";
$obj_res = mysql_fetch_assoc(mysql_query("SELECT `adres` `nazv` FROM `objects` WHERE `id` = ".$obj));
$nazv_obj = $obj_res['nazv'].' '.$obj_res['adres'];
$dop_text .= "Удален объект «".$nazv_obj."»";
}
}
foreach($objects_arr as $obj){
if(!in_array($obj, $prevobjects_arr)){
if($dop_text != '') $dop_text .= "
";
$obj_res = mysql_fetch_assoc(mysql_query("SELECT `adres` `nazv` FROM `objects` WHERE `id` = ".$obj));
$nazv_obj = $obj_res['nazv'].' '.$obj_res['adres'];
$dop_text .= "Добавлен объект «".$nazv_obj."»";
}
}
}*/
if($dop_text != ''){
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES (".$_SESSION['id'].", ".$post['id'].", '0', 'update', '".$dop_text."', '1')";
mysql_query($sql_conf);
}
}
} else {
$funnel = 0;
if($post['funnel_id']) $funnel = (int)$post['funnel_id'];
if ($post['stage'] === 0 || $post['stage'] === '0') {
$post['stage'] = 1;
}
$opis = mysql_real_escape_string($post['opis']);
$sql = "INSERT INTO clients(`fio`, `email`, `phone`, `phone2`, `type`, `work_type`, `opis`, `id_agent`, `date_add`, `status`, `budget`, `who_work`, `confirm`, `role`, `objects`, `source`, `employee_id`, `birthday`, `stage`, `hot`,`priority`, `of_objects`, `funnel_id`) VALUES('$post[fio]', '".trim($post['email'])."' ,'$post[phone]','$post[phone2]','$post[type]', '$workType', '$opis', '$_SESSION[id]', NOW(), '$post[status]', '$post[budget]', '$post[who_work]', '$post[confirm]', '$post[role]', '$post[objects]', '$post[source]', '$post[employee]', '$post[birthday]', '$post[stage]', '$post[hot]', '$post[priority]', '$post[of_objects]', '$funnel')";
$inserd_client = true;
if($post['who_work'] != $_SESSION['id'] && $post['confirm'] == 0){
//Добавляем событие передачи
$insert_sent = true;
}
}
mysql_query($sql);
//return var_export(mysql_errno());
if(isset($inserd_client)){
/**** Инфа по ипотеке***/
$id_cl = mysql_insert_id();
self::update_objects($id_cl, $post['objects']);
self::update_phone2($id_cl, $post['phone2']);
//Добавление договора
if (isset($post['contracts'])) {
$contracts = json_decode(html_entity_decode($post['contracts']), true);
foreach($contracts as $contract) {
$date_start = strtotime($contract['date_start']);
$date_end = strtotime($contract['date_end']);
$sql = "INSERT INTO contracts_client SET ".
"client_id = {$id_cl}, ".
"type = {$contract['type']}, ".
"date_start = {$date_start}, ".
"date_end = {$date_end}, ".
"number = '{$contract['number']}', ".
"days = {$contract['days_mes_end']}, ".
"send = {$contract['no_mes_end']}";
if (!mysql_query($sql)) {
echo mysql_error();
}
}
}
self::get_class_etap($id_cl, $funnel);
$sql_ipoteka = "INSERT INTO "
."`ipoteka` SET "
. "`client_id`=$id_cl,"
. "`rynok`='$post[rynok]',"
. "`yes_object`=".(int)$post[yes_object].","
. "`jc`='$post[jc]',"
. "`ante_pr`='$post[ante_pr]',"
. "`ante_rub`='$post[ante_rub]',"
. "`comment`='$post[comment_ipoteka]',"
. "`yes_doc`=".(int)$post[yes_doc].","
. "`number_doc`='$post[number_doc]',"
. "`date_doc`='$post[date_doc]',"
. "`doc_komis_pr`='$post[doc_komis_pr]',"
. "`doc_komis`='$post[doc_komis]',"
. "`yes_bank`=".(int)$post[yes_bank].","
. "`date_bank`='$post[date_bank]',"
. "`employee_bank`='$post[employee_bank]',"
. "`banks`='$post[banks]',"
. "`yes_resolve`=".(int)$post[yes_resolve].","
. "`resolve`='$post[resolve]',"
. "`comment_resolve`='$post[comment_resolve]',"
. "`yes_issue`=".(int)$post[yes_issue].","
. "`bank_issue`='$post[bank_issue]',"
. "`rate_issue`='$post[rate_issue]',"
. "`term_issue`='$post[term_issue]',"
. "`yes_brak`='$post[yes_brak]',"
. "`relationship`='$post[relationship]',"
. "`summa_object`='$post[summa_object]',"
. "`age`='$post[age]',"
. "`co_borrower_fio`='$post[co_borrower_fio]',"
. "`co_borrower_age`='$post[co_borrower_age]',"
. "`contacts`='$post[contacts]',"
. "`co_borrower_dohod`='$post[co_borrower_dohod]',"
. "`income`='$post[income]',"
. "`credit_load`='$post[credit_load]'";//echo $sql_ipoteka. ' 2';
mysql_query($sql_ipoteka);
/***********************/
/* Инфа по кредитам */
$sql_credit = "INSERT INTO `credit`
(`client_id`,
`bancks_credit`,
`summa_credit`,
`komissiya_credit`,
`cel_credit`,
`age_credit`,
`propiska_credit`,
`nagruzka_credit`,
`dohod_credit`,
`dava_ndfl_credit`,
`spravka_credit`,
`phone_credit`,
`podachi_credit`,
`not_own_credit`,
`yes_deduction_credit`,
`overdue_credit`,
`mfo_credit`,
`kvartira_credit`,
`dom_credit`,
`uchastok_credit`,
`car_credit`,
`kol_nagruzka_credit`)
VALUES
({$id_cl},
'$post[bancks_credit]',
'$post[summa_credit]',
'$post[komissiya_credit]',
'$post[cel_credit]',
'$post[age_credit]',
'$post[propiska_credit]',
'$post[nagruzka_credit]',
'$post[dohod_credit]',
'$post[dava_ndfl_credit]',
'$post[spravka_credit]',
'$post[phone_credit]',
'$post[podachi_credit]',
'$post[not_own_credit]',
'$post[yes_deduction_credit]',
'$post[overdue_credit]',
'$post[mfo_credit]',
'$post[kvartira_credit]',
'$post[dom_credit]',
'$post[uchastok_credit]',
'$post[car_credit]',
'$post[kol_nagruzka_credit]'
);
";
// echo $sql_credit;
mysql_query($sql_credit);
}
if(isset($insert_sent)){
// Получаем ID клиента и нового владельца
$client_id_check_event = intval($post['id']);
$new_owner_id_check_event = intval($post['who_work']);
if ($client_id_check_event > 0 && $new_owner_id_check_event > 0) {
// Помечаем как прочитанные все события по этому клиенту, кроме нового владельца
$sql_clear = "UPDATE events_clients SET `read` = 1, date_update = NOW() WHERE client_id = $client_id_check_event AND event = 'transmitted' AND user_id != $new_owner_id_check_event";
mysql_query($sql_clear);
}
//$id_cl = mysql_insert_id();
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES (".$_SESSION['id'].", ".$id_cl.", ".$post['who_work'].", 'transmitted')";
mysql_query($sql_conf);
if($post['who_work'] == 0){ //Если передача в общие то восстанавливаем клиента
mysql_query("UPDATE clients SET deleted=0 WHERE id={$id_cl}");
$dop_text_ev = "Переведен в общие";
$sql_ev = "INSERT INTO events_clients (client_id, event, dop_text, user_id) VALUES ({$id_cl}, 'update', '{$dop_text_ev}', {$_SESSION['id']})";
mysql_query($sql_ev);
}
$agent = new User;
$agent->get($_SESSION['id']);
if(((int)$agent->agencyId == 8353 || (int)$agent->agencyId == 16001) && $post[who_work] != 0){
$sql = "UPDATE clients SET confirm=1, who_work=$post[who_work] WHERE id=$id_cl";
mysql_query($sql);
$sql="UPDATE user_client_events SET user_id=$post[who_work] WHERE client_id=$id_cl";
mysql_query($sql);
// if(isset($_GET['event'])){
$sql = "UPDATE `events_clients` set `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE client_id=$id_cl";
// echo $sql;
mysql_query($sql);
// }
$sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ('".$post[who_work]."', '".$id_cl."', '".$post[who_work]."', 'accepted', '1')";
mysql_query($sql);
$sqlUser = "SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `phone`, `phone2` FROM `users` where id=".$post[who_work];
$qUser = mysql_query($sqlUser);
$rUser = mysql_fetch_assoc($qUser);
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
if ($rUser['agency']) {
$sobstv = $rUser['agency_name'];
} else {
$agency = new User;
$agency->get($post[who_work]);
if (isset($agency->agencyName)) {
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']) . " Агентство " . $agency->agencyName;
} else {
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
}
}
$num_search = num_search($rUser['phone']);
//Передача объекта
$sql_confirm_obj = "SELECT * FROM client_confirm_objects WHERE client_id = $id_cl AND status = 0";
$q_confirm_obj = mysql_query($sql_confirm_obj);
$is_confirm_obj = false;
if(mysql_num_rows($q_confirm_obj) > 0){
$r_confirm_obj = mysql_fetch_assoc($q_confirm_obj);
$is_confirm_obj = (bool)$r_confirm_obj['confirm_objects'];
}
if($is_confirm_obj){
$db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306');
$sql_client = "SELECT * FROM `client_objects` WHERE client_id = $id_cl";
$q_client = mysql_query($sql_client);
while($object = mysql_fetch_assoc($q_client)){
$sql_up = "UPDATE objects SET id_add_user = '".$post[who_work]."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object['object_id'];
//echo $sql_up;
mysql_query($sql_up);
// перенос Зипал
$sql = "UPDATE zipal_objects SET user_id=$post[who_work], send_to_update=1 WHERE object_id={$object['object_id']}";
mysql_query($sql);
$sqlPack = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id={$object['object_id']}";
mysql_query($sqlPack);
$sql_sph = "UPDATE objects SET id_add_user = {$_SESSION['id']} WHERE id = ".$object['object_id'];
$db_sphinx->query($sql_sph);
}
}
mysql_query("UPDATE client_confirm_objects SET status = 1 WHERE client_id = $id_cl AND status = 0");
}
}
$client_id = 0;
if(isset($id_cl)){
$client_id = $id_cl;
} else {
$client_id = $post['id'];
}
// Добавляем теги по клиенту
if (is_string($post['activities']))
$arr_activities = json_decode(html_entity_decode($post['activities']), ENT_QUOTES);
else if (is_array($post['activities']))
$arr_activities = $post['activities'];
else
$arr_activities = (int)$post['activities'];
if ($client_id) {
$sql = "DELETE FROM `clients_activities` WHERE `client_id` = '".$client_id."'";
mysql_query($sql);
if (!empty($arr_activities)) {
if (is_array($arr_activities)) {
$sql_a = [];
foreach($arr_activities as $key => $activity_id) {
$sql_a[] = "('$client_id', '$activity_id')";
}
if (count($sql_a) > 0) {
$sql = "INSERT INTO `clients_activities` (`client_id`, `activity_id`) VALUES " . implode(', ', $sql_a);
mysql_query($sql);
}
} else if (is_numeric($arr_activities) && $arr_activities > 0) {
$sql = "INSERT INTO `clients_activities` (`client_id`, `activity_id`) VALUES ('$client_id', '$arr_activities')";
mysql_query($sql);
}
}
}
// Сохраняем поля для интерактивных документов
if ($client_id && !empty($post['variables'])) {
if (is_array($post['variables'])) {
$docs = new Docs();
$docs->saveDocFields($client_id, "clients", $post['variables']);
}
}
if (isset($inserd_client) && $inserd_client) {
//сохраняем данные wazzap
Clients::createClientWazzapData($client_id, $post);
}
if($user_ses->agencyId == 5238 || $user_ses->agencyId == 13154){
if($post['send_web_hook']){
$webHook = new WebHookSend($user_ses->agencyId, 1, $client_id, 'client');
}
}
Clients::add_client_info($client_id, $post);
return intval($client_id);
}
return false;
}
public static function createClientWazzapData($client_id, $post) {
if ($client_id) {
if (isset($post['wazzap_chat_type']) && $post['wazzap_chat_type'] &&
isset($post['wazzap_chat_id']) && $post['wazzap_chat_id'] &&
isset($post['wazzap_channel_id']) && $post['wazzap_channel_id']) {
$wazzap_chat_type = $post['wazzap_chat_type'];
$wazzap_chat_id = $post['wazzap_chat_id'];
$wazzap_channel_id = $post['wazzap_channel_id'];
$wazzap_user_id = $post['wazzap_user_id'];
$wazzap_integration_id = $post['wazzap_integration_id'];
//связываем клиента с чатом wazzap
$sql = "INSERT INTO `client_data_wazzap` (`client_id`, `chat_type`, `chat_id`, `channel_id`, `user_id`, `integration_id`) VALUES ('$client_id', '$wazzap_chat_type', '$wazzap_chat_id', '$wazzap_channel_id', '$wazzap_user_id', '$wazzap_integration_id')";
mysql_query($sql);
$pdo = new MysqlPdo(hst, ndb, user, pass);
$sql = "SET NAMES 'utf8'";
$pdo->query($sql);
$agency_id = User::getUserAgencyID();
$wazzap = new Wazzap($agency_id, $pdo);
$wazzap->createWazzapContact($client_id, $wazzap_user_id, $post["fio"], $wazzap_chat_type, $wazzap_chat_id);
}
}
}
public function verifity_phone($post) {
$user_ses = new User;
$user_ses->get($_SESSION['id']);
$depClass = new Department();
/*if (($post['id'] && (!isset($post['phone']) || !$post['phone']))) {
$sqlPhone = "SELECT phone FROM clients WHERE id = $post[id]";
$resPhone = mysql_query($sqlPhone);
$phRow = mysql_fetch_assoc($resPhone);
$post['phone'] = $phRow['phone'];
}*/
//$sql = "SELECT users.id, users.fio FROM users WHERE id IN (SELECT DISTINCT CASE WHEN clients.who_work = 0 THEN clients.id_agent ELSE clients.who_work END FROM clients WHERE clients.phone='$post[phone]')";
// echo $_POST[objects];
$sql = "select id as idc, phone, if(who_work = 0, id_agent, who_work) as id, (SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as fio from users WHERE id = if(clients.who_work = 0, clients.id_agent, clients.who_work)) as fio from clients WHERE cancel=0 AND (clients.phone='$post[verifity_phone]' OR id in (SELECT client_id FROM clients_phone2 WHERE phone = '$post[verifity_phone]'))";
if ($post['id']) {
$sql = $sql." and clients.id != $post[id]";
}
//добавляем ограничение на воронку, ищем повторы внутри воронки
if(isset($post['funnel_id'])) {
$funnelForCheck = (int)$post['funnel_id'];
} else {
$funnelForCheck = 0;
}
if($user_ses->agencyId != 21951){
$sql = $sql." and clients.funnel_id = $funnelForCheck";
}
$rez = mysql_query($sql);
$count = mysql_num_rows($rez);
if ($count > 0) {
$agencyId = null;
if($user_ses->id_manager == 0 && $user_ses->agency == 0){ //Не агентство
$agencyId = $_SESSION['id'];
} else
if ($_SESSION['agency']) {
$agencyId = $_SESSION['id'];
} else {
if ($_SESSION['manager']) {
$user = new User;
$user->checkPermissions();
$agencyId = $user->id_manager;
} else {
$user = new User;
$user->checkPermissions();
if ($user->id_manager > 0) {
$agency = new User;
$agency->get($user->id_manager);
if($agency->id_manager) {
$agency->get($agency->id_manager);
}
$agencyId = $agency->id;
}
}
}
if($agencyId == 7945 || $agencyId == 7441){
} else if ($agencyId == 7384 && ($post['source'] == 498 || $post['source'] == 589 || $post['source'] == 677)){
} else {
$idsFromAgency = array();
$idsFromAgency[] = $agencyId;
$agency = new User();
$managers = $agency->getAllManagers($agencyId);
if($managers) {
foreach ($managers as $i => $manager) {
$idsFromAgency[] = $manager['id'];
if((int)$manager['role_id'] > 0 && (int)$manager['department_id'] > 0){
$role_user = $depClass->getRole((int)$manager['role_id']);
if($role_user['role'] == 'admin_department'){
$menagerDep = User::getDepManagers($role_user['department_id']);
foreach($menagerDep as $md){
if(!in_array($md['id'], $idsFromAgency)){
$idsFromAgency[] = $md['id'];
}
$thisAgents = User::getAgentsOfAgency($md['id'], true);
foreach($thisAgents as $da){
if (!in_array($da['id'], $idsFromAgency)) {
$idsFromAgency[] = $da['id'];
}
}
}
}
}
}
}
$agents = $agency->getAllAgents($agencyId);
if($agents) {
foreach ($agents as $i => $agent) {
$idsFromAgency[] = $agent['id'];
}
}
// список пользователей, у которых есть похожие клиенты
while ($user = mysql_fetch_assoc($rez)) {
if (in_array($user['id'], $idsFromAgency)) {
$fio = trim($user['fio']);
$errorText = "Клиент с указанным телефоном уже привязан к агенту $fio! ID клиента ".$user['idc'];
$errorText .= "Добавить новую заявку по данному клиенту?
";
return $errorText;
}
}
}
}
return 0;
}
public function delReason($post) {
$errors = [];
$dop_text = "";
$select_text = "";
if($post['note'] == 1){
// При закрытии отказом (denial) JS передаёт текущую дату в $post['datazakl'],
// парсить её не нужно — используем текущее время напрямую.
$t = date_create();
$formatted_date = date_format($t,"Y-m-d H:i:s");
$formatted_dateZajavki = date_format($t,"d.m.Y H:i:s");
}else{
$test = substr($post['datazakl'], 0, -3);
$dateZajavki = date('d.m.Y', intval($test));
$phpdate = strtotime($dateZajavki);
$formatted_d = date( 'Y-m-d', $phpdate );
$today = date('Y-m-d');
if($today == $formatted_d){
$formatted_date = date('Y-m-d H:i:s');
}else{
$formatted_date = date( 'Y-m-d H:i:s', $phpdate );
}
$formatted_dateZajavki = date( 'd.m.Y', $phpdate );
}
if ($post['denial']) {
$sql_d = "SELECT * FROM denial_work WHERE id = ".$post['denial'];
if ($q_d = mysql_query($sql_d)) {
$r_d = mysql_fetch_assoc($q_d);
$select_text = $r_d['name'];
} else {
$errors[] = mysql_error();
}
}
if ($post['tempid']) {
$sql_mes = "SELECT * FROM step_notify_closure WHERE temp_id = {$post['tempid']}";
if ($q_mes = mysql_query($sql_mes)) {
if (mysql_num_rows($q_mes) > 0) {
$mes = mysql_fetch_assoc($q_mes);
}
} else {
$errors[] = mysql_error();
}
}
if (!empty($post['reason']) || $select_text != "") {
$dop_text .= "Причина: «".$select_text.". ".$post['reason']."»";
if (isset($mes)) {
$text = $mes['text']."<br>Закрыт. ".$dop_text;
if (mysql_query("UPDATE step_notify_closure SET text='{$text}', send=0 WHERE temp_id = {$post['tempid']}"))
$errors[] = mysql_error();
}
}
if (!empty($select_text))
$sql = "UPDATE clients SET reason='".$select_text.". ".$post['reason']."', who_delete = '$_SESSION[id]', deleted=1, denial = '$post[denial]' WHERE id=$post[id_del_client]";
else
$sql = "UPDATE clients SET reason='".$post['reason']."', who_delete = '$_SESSION[id]', deleted=1, denial = '$post[denial]' WHERE id=$post[id_del_client]";
if (isset($post['summa']) && !empty($post['luck'])) {
if ($dop_text != '')
$dop_text .= " ";
$dop_text .= "$post[reason] Совершена сделка на ".$post['summa']." руб.".$formatted_dateZajavki;
if (isset($mes)) {
$text = $mes['text']."<br>Закрыт. Совершена сделка на ".$post['summa']." руб. ".$formatted_dateZajavki;
if (mysql_query("UPDATE step_notify_closure SET text='{$text}', send=0 WHERE temp_id = {$post['tempid']}"))
$errors[] = mysql_error();
}
$sql = "UPDATE clients SET reason='$dop_text', who_delete = '$_SESSION[id]', deleted=1, summa='$post[summa]', confirm='$post[luck]' WHERE id=$post[id_del_client]";
}
if (!mysql_query($sql))
$errors[] = mysql_error();
$sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`, `dop_text`, `date_update`) VALUES ('".$_SESSION['id']."', '".$post['id_del_client']."', '".$_SESSION['id']."', 'delete', '1', '".$dop_text."', '".$formatted_date."')";
if (!mysql_query($sql))
$errors[] = mysql_error();
if (count($errors))
return $errors;
else
return true;
}
public function restore($id) {
$errors = [];
$sql = "UPDATE `clients` SET reason='', confirm = 1, who_delete=NULL, deleted=0 WHERE id=$id";
$dop_text = "Восстановлен из закрытых.";
$sql2 = "INSERT INTO `events_clients` (
user_id,
client_id,
from_id,
event,
`read`,
`dop_text`
) VALUES (
'".$_SESSION['id']."',
'".$id."',
'".$_SESSION['id']."',
'restored',
'1',
'".$dop_text."'
)";
if (!(mysql_query($sql) && mysql_query($sql2)))
$errors[] = mysql_error();
if (count($errors))
return $errors;
else
return true;
}
public function getMyClients($id_agent) {
$bd_usl = "";
if($_GET['new']) { $bd_usl = " AND confirm=0 AND status <>2 AND deleted<>1"; }
if($_GET['work']) { $bd_usl = " AND confirm=1 AND status <>2 AND deleted<>1"; }
//if($_GET['id_agent']) { $bd_usl = " AND confirm=1 AND status <>2 AND deleted<>1"; }
//if($_GET['id_manager']) { $bd_usl = " AND confirm=1 AND status <>2 AND deleted<>1"; }
if($_GET['end']) { $bd_usl = " AND status=2 AND deleted<>1"; }
if (isset($_GET['workType'])) {
$bd_usl.=" AND work_type = " . $_GET['workType'];
}
$bd_who_work = "who_work = $id_agent ";
if ($_GET['new']) {
$bd_who_work = " (who_work = $id_agent or (id_agent = $id_agent and who_work > 0)) ";
}
$result = array();
$sql_count = "SELECT COUNT(*) FROM clients WHERE cancel = 0 AND $bd_who_work $bd_usl";
$result['vsego'] = $vsego = mysql_result(mysql_query($sql_count),0);
$sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add
FROM clients WHERE cancel = 0 AND $bd_who_work AND deleted<>1 $bd_usl ORDER BY clients.id DESC";
if (isset($_GET['dev'])) {
echo $sql;
}
$rez = mysql_query($sql);
while($cl = mysql_fetch_assoc($rez))
{ $result['clients'][] = $cl; }
return $result;
}
public function getClients($id_agent) { // используется в footer.php
$result = array();
$sql_count = "SELECT COUNT(*) FROM clients WHERE cancel = 0 AND who_work = $id_agent AND confirm=1 AND deleted<>1";
$result['vsego'] = $vsego = mysql_result(mysql_query($sql_count),0);
$sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add
FROM clients WHERE who_work = $id_agent AND confirm=1 AND deleted<>1 ORDER BY clients.id DESC";
$rez = mysql_query($sql);
while($cl = mysql_fetch_assoc($rez))
{
$result['clients'][] = $cl;
}
return $result;
}
public function getClientsWithCommon($id_agent, $agencyId) { // используется в footer.php
$result = array();
$sql_count = "SELECT COUNT(*) FROM clients WHERE cancel = 0 AND ((who_work = $id_agent AND confirm=1) or (who_work=0 AND id_agent in
(SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId))))) AND deleted<>1";
$result['vsego'] = $vsego = mysql_result(mysql_query($sql_count),0);
$sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add
FROM clients WHERE ((who_work = $id_agent AND confirm=1) or (who_work=0 AND id_agent in
(SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId))))) AND deleted<>1 ORDER BY clients.id DESC";
$rez = mysql_query($sql);
while($cl = mysql_fetch_assoc($rez))
{
$result['clients'][] = $cl;
}
return $result;
}
public function getCountClients($deleted = false) {
$mmid[] = "id_agent = $_SESSION[id]";
$rez = mysql_query("SELECT id FROM users WHERE id_manager=$_SESSION[id]");
while($mm = mysql_fetch_row($rez))
{
$mmid[] = "id_agent = ".$mm[0];
$rez2 = mysql_query("SELECT id FROM users WHERE id_manager=$mm[0]");
while($mm2 = mysql_fetch_row($rez2))
{
$mmid[] = "id_agent = ".$mm2[0];
}
}
if($deleted) $bd_usl_managers = "deleted=1"; else $bd_usl_managers = "1";
$bd_usl_managers .= " AND (".implode(" OR ",$mmid).") AND cancel = 0";
$sql_count = "SELECT COUNT(*) FROM clients WHERE $bd_usl_managers";
return mysql_result(mysql_query($sql_count),0);
}
public function getCountClientsWhoWork($id_user) {
$sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND confirm=1 AND deleted<>1 AND cancel = 0";
$rez = mysql_result(mysql_query($sql_count),0);
if($rez > 0) {
$counter = "".$rez."";
}
else {
$counter = "";
}
return $counter;
}
public function getCountNewClients($id_user) {
//$sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work > 0)) AND confirm=0 AND deleted<>1";
$sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND confirm=0 AND deleted<>1 AND cancel = 0";
$rez = mysql_result(mysql_query($sql_count),0);
if($rez > 0) {
$counter = "".$rez."";
}
else {
$counter = "";
}
return $counter;
}
public function getCountResClients($id_user) {
//$sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work > 0)) AND confirm=0 AND deleted<>1";
$sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND confirm=0 AND deleted<>1 AND cancel = 0";
$rez = mysql_result(mysql_query($sql_count),0);
$counter = $rez;
return $counter;
}
public function getCountWorkTypeClientsNumber($id_user, $workType) {
$sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work = 0)) AND deleted<>1 AND cancel = 0 AND work_type=$workType";
return mysql_result(mysql_query($sql_count),0);
}
public function getCountNewClientsNumber($id_user, $workType) {
$sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work > 0)) AND confirm=0 AND deleted<>1 AND cancel = 0 AND work_type=$workType";
return mysql_result(mysql_query($sql_count),0);
}
public function getCountEndClientsNumber($id_user, $workType) {
$sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work > 0)) AND status=2 AND deleted<>1 AND cancel = 0 AND work_type=$workType";
return mysql_result(mysql_query($sql_count),0);
}
public function getCountWorkClientsNumber($id_user, $workType) {
$sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND and confirm= 1 AND status <> 2 AND deleted<>1 AND work_type=$workType AND cancel = 0";
return mysql_result(mysql_query($sql_count),0);
}
public function getCountEndClients($id_user) {
$sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND status=2 AND deleted<>1 AND cancel = 0";
$rez = mysql_result(mysql_query($sql_count),0);
if($rez > 0) {
$counter = "".$rez."";
}
else {
$counter = "";
}
return $counter;
}
public function getCountWorkClients($id_user) {
$sql_count = "SELECT COUNT(*) FROM clients WHERE who_work=$id_user AND deleted<>1 AND cancel = 0";
$rez = mysql_result(mysql_query($sql_count),0);
return $rez;
}
//Получение id клиентов с просроченными этапами
public function getIdExpiredStages($where){
$user = new User;
$user->get($_SESSION['id']);
$agency_id = $user->agencyId;
$expiredStagesClients = array();
$stepIds = array();
$stepDays = array();
$funnelIds = array();
if($agency_id > 0){
//Этапы
$sql_f = "SELECT id FROM `funnel` WHERE agency_id=$agency_id AND deleted = 0";
$q_f = mysql_query($sql_f);
while($r_f = mysql_fetch_assoc($q_f)){
$funnelIds[] = (int)$r_f['id'];
}
$sql_st = "SELECT id, days_step FROM funnel_steps WHERE funnel_id in (".implode(',', $funnelIds).")";
$q_st = mysql_query($sql_st);
while($r_st = mysql_fetch_assoc($q_st)){
$stepDays[(int)$r_st['id']] = $r_st['days_step'];
}
$sql = "SELECT id, step_id, date_add, (SELECT date_update FROM clients_funnel_step WHERE client_id=clients.id) as date_update FROM clients WHERE 1 $where AND funnel_id > 0 AND step_id > 0";
$q = mysql_query($sql);
while($r = mysql_fetch_assoc($q)){
if($stepDays[(int)$r['step_id']] > 0){
$days_step = $stepDays[(int)$r['step_id']];
if(!empty($r['date_update'])){
$lostDate = $r['date_update'];
$interval = date_diff(new DateTime(), new DateTime($lostDate))->days;
if($interval > $days_step){
$expiredStagesClients[] = $r['id'];
}
} else {
$lostDate = $r['date_add'];
$interval = date_diff(new DateTime(), new DateTime($lostDate))->days;
if($interval > $days_step){
$expiredStagesClients[] = $r['id'];
}
}
}
}
}
return $expiredStagesClients;
}
public function getAllClients() {
$result = array();
$bd_usl_managers = "";
$bd_usl = "";
$p_sql = "";
$join = "";
$depClass = new Department();
$adminDep = false;
$dep_user = $depClass->getDepartment((int)$_SESSION['id']);
$searchCheckUserId = $_SESSION['id'];
$sql_check_permissions = "SELECT `menu_all_clients`, `menu_all_clients_edit` FROM user_permissions WHERE user_id = $searchCheckUserId";
$q_check_permissions = mysql_query($sql_check_permissions);
$r_check_permissions = mysql_fetch_assoc($q_check_permissions);
$clientsIdsDop = [];
if (!$_GET['all'] || !$_POST['all']) {
$get = clearInputData($_GET);
$post = clearInputData($_POST);
$searchUserId = $_SESSION['id'];
if ($_SESSION['users_admin']) {
$currentUser = new User;
$currentUser->checkPermissions();
$searchUserId = $currentUser->agencyId;
} else if ($r_check_permissions['menu_all_clients'] == 1) {
$currentUser = new User;
$currentUser->checkPermissions();
$searchUserId = $currentUser->agencyId;
} else if($dep_user['role'] == 'manager_office'){
$currentUser = new User;
$currentUser->checkPermissions();
$searchUserId = $dep_user['admin'];
$adminDep = true;
} else if($dep_user['role'] == 'manager_office_menager') {
//$currentUser = new User;
//$$currentUser->checkPermissions();
//$currentUser->checkPermissions();
//$searchUserId = $currentUser->id_manager;
$searchUserId = $_SESSION['id_manager'];
$adminDep = true;
}
//$mmid[] = "id_agent = $searchUserId";
if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step'])){
$mmid[] = "id_agent = $searchUserId";
} else {
$mmid[] = "who_work = $searchUserId";
$wid[] = $searchUserId;
if($post['emp'] ){
$wid[] = $post['emp'];
}
}
if ($_GET['deleted']) {
$bd_usl = "AND deleted=1";
// если ищем по удаленным и под менеджером - пропускаем этот код - здесь идет добавление по агентству
if (!($_GET['deleted'] && $_SESSION['manager'])) {
$rez1 = mysql_query("SELECT id_manager FROM users WHERE id=$searchUserId");
while ($mm1 = mysql_fetch_row($rez1)) {
$mmid[] = "id_agent = " . $mm1[0];
$rez01 = mysql_query("SELECT id_manager FROM users WHERE id=$mm1[0]");
while ($mm01 = mysql_fetch_row($rez01)) {
$mmid[] = "id_agent = " . $mm01[0];
}
$rez02 = mysql_query("SELECT id FROM users WHERE id_manager=$mm1[0] and id_manager<>0");
while ($mm02 = mysql_fetch_row($rez02)) {
$mmid[] = "id_agent = " . $mm02[0];
}
}
}
$rez2 = mysql_query("SELECT id FROM users WHERE id_manager=$searchUserId");
while ($mm2 = mysql_fetch_row($rez2)) {
$mmid[] = "id_agent = " . $mm2[0];
$rez03 = mysql_query("SELECT id FROM users WHERE id_manager=$mm2[0]");
while ($mm03 = mysql_fetch_row($rez03)) {
$mmid[] = "id_agent = " . $mm03[0];
}
}
}
$arrWho_work = array();
$rez3 = mysql_query("SELECT id FROM users WHERE id_manager=$searchUserId");
while ($mm = mysql_fetch_row($rez3)) {
if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step'])){
$mmid[] = "id_agent = " . $mm[0];
$wid[] = $mm[0];
} else {
$mmid[] = "who_work = " . $mm[0];
$arrWho_work[] = $mm[0];
$wid[] = $mm[0];
}
$rez04 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$mm[0]");
while ($mm2 = mysql_fetch_row($rez04)) {
if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step'])){
$mmid[] = "id_agent = " . $mm2[0];
} else {
$mmid[] = "who_work = " . $mm2[0];
$arrWho_work[] = $mm[0];
$wid[] = $mm[0];
if($mm2[1] > 0){
$rez004 = mysql_query("SELECT id FROM users WHERE id_manager=$mm2[0]");
while ($mm04 = mysql_fetch_row($rez004)){
if(!in_array($mm04[0], $arrWho_work)){
$arrWho_work[] = $mm04[0];
$mmid[] = "who_work = " . $mm04[0];
$wid[] = $mm04[0];
}
}
}
}
}
}
$bd_usl_managers = " AND (".implode(" OR ",$mmid).")";
if(!empty($wid)){
$sql_doer = "SELECT * FROM clients_doers WHERE user_id in (".implode(',', $wid).") AND confirm = 1";
$q_doer = mysql_query($sql_doer);
while($r_doer = mysql_fetch_assoc($q_doer)){
$clientsIdsDop[] = $r_doer['client_id'];
}
$bd_usl_managers = " AND ((".implode(" OR ",$mmid).")";
if(!empty($clientsIdsDop)){
$bd_usl_managers .= " OR clients.id in (".implode(',', $clientsIdsDop).")";
}
$bd_usl_managers .= ")";
}
// echo $bd_usl_managers.'
';
} else {
// находим ИД агентства и по нему ищем всех свободных клиентов
$agencyId = -1;
if ($_SESSION['agency']) {
$agencyId = $_SESSION['id'];
} else if ($r_check_permissions['menu_all_clients'] == 1) {
$currentUser = new User;
$currentUser->checkPermissions();
$searchUserId = $dep_user['admin'];
} else {
if ($_SESSION['users_admin']) {
$currentUser = new User;
$currentUser->checkPermissions();
$agencyId = $currentUser->agencyId;
// } else if($dep_user['role'] == 'manager_office'){
// $currentUser = new User;
// $currentUser->checkPermissions();
// $searchUserId = $dep_user['admin'];
// $adminDep = true;
} else if($dep_user['role'] == 'manager_office_menager') {
//$currentUser = new User;
//$currentUser->checkPermissions();
$searchUserId = $_SESSION['id_manager'];
} else {
if ($_SESSION['manager']) {
$user = new User;
$user->checkPermissions();
$agencyId = $user->id_manager;
} else {
$user = new User;
$user->checkPermissions();
if ($user->id_manager > 0) {
$agency = new User;
$agency->get($user->id_manager);
if ($agency->id_manager) {
$agency->get($agency->id_manager);
}
$agencyId = $agency->id;
}
}
}
}
$bd_usl = "AND deleted=0 AND who_work=0 AND id_agent in
(SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))";
}
$get = clearInputData($_GET);
$post = clearInputData($_POST);
if(!empty($this->params_search)){
$post = $this->params_search;
}
if (isset($get['workType'])) {
$bd_usl.=" AND work_type = " .$get['workType'];
}
if($get['search'])
{
$phone = preg_replace('/[+\-\(\)\/\?,.;:%№!\s]/', '', $get['search']);
$bd_usl.=" AND (fio LIKE '%$get[search]%' OR phone LIKE '%$phone%' OR phone2 LIKE '%$phone%' OR email LIKE '%$get[search]%')";
$result['str_url_add'] = "search=".$get['search'];
}
if($post['search'])
{
$phone = preg_replace('/[+\-\(\)\/\?,.;:%№!\s]/', '', $post['search']);
$_SESSION['client_search'] = $post['search'];
$post['search'] = mb_strtolower(trim($post['search']), "UTF-8");
$bd_usl.=" AND (fio LIKE '%$post[search]%' OR phone LIKE '%$phone%' OR id in (SELECT client_id FROM clients_phone2 WHERE phone LIKE '%$phone%') OR email LIKE '%$post[search]%'";
if (preg_match('/^\d+$/', $post['search']))
$bd_usl .= " or id = ".$post['search'];
$bd_usl.=")";
$result['str_url_add'] = "search=".$post['search'];
} else {
unset($_SESSION['client_search']);
}
if($post['id']){
$bd_usl.=" AND id = {$post['id']}";
}
if($post['fio']){
$bd_usl.=" AND fio LIKE '%$post[fio]%'";
}
if($post['phone']){
$bd_usl.=" AND (phone LIKE '%$post[phone]%' OR id in (SELECT client_id FROM clients_phone2 WHERE phone LIKE '%$post[phone]%'))";
}
if($post['period']){
if($post['accepted'] || $post['transmitted']){
$dates = getPeriod($post['period'],$post['onDate'], $post['offDate']);
$date_between = $dates['between'];
$whereTasks = $dates['whereTasks'];
} else if($post['step'] || $post['source']){
$dates = getPeriod($post['period'], $post['onDate'], $post['offDate']);
$date_between = $dates['between'];
$bd_usl.= " AND `date_add` $date_between";
} else if($post['filter_stage_close'] || $post['filter_stage_hit']){
$dates = getPeriod($post['period'], $post['onDate'], $post['offDate']);
$date_between = $dates['between'];
if($post['filter_stage_close'] && (int)$post['date_tasks'] == 11){
$bd_usl.= " AND `date_add` $date_between";
} else {
$bd_usl .= " AND (if((SELECT count(*) FROM `events_clients` WHERE client_id=clients.id and event='delete' and user_id=clients.who_delete order by id desc limit 1)>0, "
. "(SELECT date_update FROM `events_clients` WHERE client_id=clients.id and event='delete' and user_id=clients.who_delete order by id desc limit 1) $date_between, "
. "clients.date_add $date_between))";
}
}
else {
if($post['period'] == 'period'){
$onDate = date('Y-m-d 00:00:00', strtotime($post['onDate']));
if(empty($onDate)) $onDate = '1970-01-01 00:00:00';
if(!empty($post['offDate'])) {
$offDate = date('Y-m-d 23:59:59', strtotime($post['offDate']));
} else {
$offDate = date('Y-m-d 23:59:59');
}
if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_all_do'){
$bd_usl.= " AND `date_add` < '{$onDate}'";
} else {
$bd_usl.= " AND `date_add` between '{$onDate}' AND '{$offDate}'";
}
$_SESSION['on_date'] = date('d.m.Y', strtotime($onDate));
$_SESSION['off_date'] = date('d.m.Y', strtotime($offDate));
} else {
unset($_SESSION['on_date']);
unset($_SESSION['off_date']);
$dates = getPeriod($post['period'], $post['onDate'], $post['offDate']);
$date_between = $dates['between'];
//$arrPeriod = ['today' => '-0 day', 'week' => '-6 day', 'month' => '-30 day', 'quarter' => '-120 day', 'year' => '-365'];
//$days = date('Y-m-d', strtotime($arrPeriod[$post['period']]));
if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_all_do'){
$bd_usl.= " AND `date_add` < '{$dates['dateStart']}'";
} else {
$bd_usl.= " AND `date_add` $date_between";
}
}
}
$_SESSION['client_period'] = $post['period'];
} else {
unset($_SESSION['client_period']);
}
$bd_stage = "";
if($post['filter_stage_work']){
if($post['filter_confirm'] || $post['filter_stage_send']){
$bd_stage = " and deleted <> '1'";
} else {
$bd_stage = " and deleted <> '1' and confirm > 0";
}
$_SESSION['filter_stage_work'] = 1;
} else {
unset($_SESSION['filter_stage_work']);
}
if($post['filter_stage_close']){
$bd_stage .= " and deleted = '1' AND confirm <> '10'";
$_SESSION['filter_stage_close'] = 1;
} else {
unset($_SESSION['filter_stage_close']);
}
if(isset($post['denial'])){
$bd_stage .= " and denial = '".$post['denial']."'";
}
if($post['filter_stage_hit']){
$bd_stage .= " AND deleted = '1' AND confirm = 10";
$_SESSION['filter_stage_hit'] = 1;
} else {
unset($_SESSION['filter_stage_hit']);
}
/* if($bd_stage != ""){
$bd_stage = " AND".$bd_stage.")";
}*/
if($post['filter_stage_send']){
if($post['filter_stage_work']){
//$bd_usl.= " AND deleted <> '1' AND (confirm = 0 or confirm = 1) AND who_work != " . $_SESSION['id'] ;
} else {
$bd_usl.= " AND deleted <> '1' AND confirm = 0 AND who_work != " . $_SESSION['id'] ;
}
$_SESSION['filter_stage_send'] = 1;
} else {
unset($_SESSION['filter_stage_send']);
}
if($post['filter_stage_hot']){
if($post['filter_stage_work']){
$bd_usl.= " or `hot` = 1";
} else {
$bd_usl.= " AND `hot` = 1";
}
$_SESSION['filter_stage_hot'] = 1;
} else {
unset($_SESSION['filter_stage_hot']);
}
$funnel_id = 0;
if($post['funnel']){
if($post['funnel'] != 'all'){
$bd_usl.= " AND `funnel_id` in (".$post['funnel'].")";
}
$funnel_id = $post['funnel'];
} else if(!empty($this->params_search)) {
//$bd_usl.= " AND `funnel_id` = 0";
} else {
$bd_usl.= " AND `funnel_id` = 0";
}
if($post['step']){
if($post['step'] != 'all'){
$bd_usl.= " AND `step_id` = ".$post['step'];
}
}
if($post['source']){
$sourcesArr = explode(",", $post['source']);
$sourceArr = array();
if(!empty($sourcesArr )){
foreach($sourcesArr as $sourceCl){
if(strpos($sourceCl, 'all_') !== false){
$source_group = (int)str_replace('all_','',$sourceCl);
if($source_group > 0){
$sql_adv = "SELECT * FROM `advertising_sources` WHERE group_id = {$source_group}";
$q_adv = $this->db->query($sql_adv);
while($r_adv = $this->db->fetch_assoc($q_adv)){
$sourceArr[] = "`source` = '{$r_adv['id']}'";
}
} else if($source_group == 0){
$users_ids_this = array();
$CallEvents = new CallEvents();
$user_this = new User;
$user_this->get($_SESSION['id']);
$users_ids_this = array_keys($CallEvents->getAllUserAgency($user_this->agencyId, $users_ids_this));
$sql_adv = "SELECT * FROM `advertising_sources` WHERE group_id = {$source_group} AND (user_id in (".implode(',', $users_ids_this).") or manager_id in (".implode(',', $users_ids_this)."))";
$q_adv = $this->db->query($sql_adv);
while($r_adv = $this->db->fetch_assoc($q_adv)){
$sourceArr[] = "`source` = '{$r_adv['id']}'";
}
}
} else {
if($sourceCl == -1){
$sourceArr[] = "`source` is null";
$sourceArr[] = "`source` = ''";
$sourceArr[] = "`source` = 'null'";
$sourceArr[] = "`source` = '0'";
} else {
$sourceArr[] = "`source` = '{$sourceCl}'";
}
}
}
$bd_usl .= " AND (".implode(" OR ",$sourceArr).")";
}
}
if($post['filter_emp']){
$doers_who = array();
$clientsIdsDop = array();
$empwho = array();
$empArr = json_decode(html_entity_decode($post['filter_emp']), ENT_QUOTES);
foreach($empArr as $empId){
$temp_where = '';
//$empwho[] = "id_agent = $empId";
if(strpos($empId, "all_") !== false){
$agencyId = str_replace('all_', '', $empId);
$sql_user = "SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId))";
$q_user = mysql_query($sql_user);
while($r_user = mysql_fetch_assoc($q_user)){
if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step']) && !isset($post['source'])){
$empwho[] = "id_agent =".$r_user['id'];
} else {
$empwho[] = "who_work =".$r_user['id'];
$doers_who[] = (int)$r_user['id'];
}
}
if($post['emp']){
$doers_who[] = $post['emp'];
// $stremp .= $stremp .= " or (doers like '%"".$post['emp'].""%')";
}
//$empwho[] = $stremp .= ")";
} else if(strpos($empId, "I_") !== false){
if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step']) && !isset($post['source'])){
$empwho[] = "id_agent =".str_replace('I_', '', $empId);
} else {
$empwho[] = "who_work = ".str_replace('I_', '', $empId);
$doers_who[] = (int)str_replace('I_', '', $empId);
}
} else if($empId == 'del_all'){
$user_agency = new User;
$user_agency->get($_SESSION['id']);
$agencyId = $user_agency->agencyId;
$sqId = "SELECT id FROM `users` WHERE (id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId))) AND blocked=1";
$sqIdQuery = mysql_query($sqId);
while ($idRow = mysql_fetch_array($sqIdQuery)) {
if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step']) && !isset($post['source'])){
$empwho[] = "id_agent =".$idRow['id'];
} else {
$empwho[] = "who_work =".$idRow['id'];
$doers_who[] = (int)$idRow['id'];
}
}
$sqlDel = "SELECT user_id FROM users_delete WHERE agency_id = {$agencyId}";
$qDel = mysql_query($sqlDel);
while($rDel = mysql_fetch_assoc($qDel)){
if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step']) && !isset($post['source'])){
$empwho[] = "id_agent =".intval($rDel['user_id']);
} else {
$empwho[] = "who_work =".intval($rDel['user_id']);
$doers_who[] = intval($rDel['user_id']);
}
}
} else {
if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step']) && !isset($post['source'])){
$empwho[] = "id_agent = $empId";
} else {
$empwho[] = "who_work = $empId";
$doers_who[] = (int)$empId;
}
}
}
if(!empty($empwho)){
$bd_usl_managers = " AND ((".implode(" OR ",$empwho).")";
if(!empty($doers_who)){
$sql_doer = "SELECT * FROM clients_doers WHERE user_id in (".implode(',', $doers_who).") AND confirm = 1";
$q_doer = mysql_query($sql_doer);
while($r_doer = mysql_fetch_assoc($q_doer)){
$clientsIdsDop[] = $r_doer['client_id'];
}
if(!empty($clientsIdsDop)){
$bd_usl_managers .= ' OR clients.id in ('.implode(',', $clientsIdsDop).')';
}
}
$bd_usl_managers .= ")";
}
$_SESSION['filter_emp'] = $post['filter_emp'];
} else {
unset($_SESSION['filter_emp']);
}
if($post['emp']){
$agencyId = $post['emp'];
if($post['filter_stage'] && $post['filter_stage'] == 'filter_work_add' && !isset($post['step'])){
$bd_usl_managers .= " AND id_agent in (SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))";
} else {
if($post['accepted'] || $post['transmitted']){
} else {
$bd_usl_managers .= " AND (who_work in (SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))";
if($post['isPartner']){
//$bd_usl_managers .= " or (doers like '%"".$agencyId.""%')";
$sql_doer = "SELECT * FROM clients_doers WHERE user_id = $agencyId AND confirm = 1";
$q_doer = mysql_query($sql_doer);
while($r_doer = mysql_fetch_assoc($q_doer)){
$clientsIdsDop[] = $r_doer['client_id'];
}
if(!empty($clientsIdsDop)){
$bd_usl_managers .= ' OR clients.id in ('.implode(',', $clientsIdsDop).')';
}
}
$bd_usl_managers .= ")";
}
}
}
if($post['filter_client_type']){
$typesArr = json_decode(html_entity_decode($post['filter_client_type']), ENT_QUOTES);
$typeArr = array();
foreach($typesArr as $typeCl){
$typeArr[] = "work_type like '%"{$typeCl}"%'";
}
$bd_usl .= " AND (".implode(" OR ",$typeArr).")";
$_SESSION['filter_client_type'] = $post['filter_client_type'];
} else {
unset($_SESSION['filter_client_type']);
}
if($post['filter_client_objects_type']){
$typesArr = json_decode(html_entity_decode($post['filter_client_objects_type']), ENT_QUOTES);
$typeArr = array();
foreach($typesArr as $typeCl){
$typeArr[] = "`type` like '%"{$typeCl}"%'";
}
$bd_usl .= " AND (".implode(" OR ",$typeArr).")";
$_SESSION['filter_client_objects_type'] = $post['filter_client_objects_type'];
} else {
unset($_SESSION['filter_client_objects_type']);
}
if($post['filter_source']){
$sourcesArr = json_decode(html_entity_decode($post['filter_source']), ENT_QUOTES);
$sourceArr = array();
foreach($sourcesArr as $sourceCl){
if(strpos($sourceCl, 'all_') !== false){
$source_group = (int)str_replace('all_','',$sourceCl);
if($source_group > 0){
$sql_adv = "SELECT * FROM `advertising_sources` WHERE group_id = {$source_group}";
$q_adv = $this->db->query($sql_adv);
while($r_adv = $this->db->fetch_assoc($q_adv)){
$sourceArr[] = "`source` = '{$r_adv['id']}'";
}
} else if($source_group == 0){
$users_ids_this = array();
$CallEvents = new CallEvents();
$user_this = new User;
$user_this->get($_SESSION['id']);
$users_ids_this = array_keys($CallEvents->getAllUserAgency($user_this->agencyId, $users_ids_this));
$sql_adv = "SELECT * FROM `advertising_sources` WHERE group_id = {$source_group} AND (user_id in (".implode(',', $users_ids_this).") or manager_id in (".implode(',', $users_ids_this)."))";
$q_adv = $this->db->query($sql_adv);
while($r_adv = $this->db->fetch_assoc($q_adv)){
$sourceArr[] = "`source` = '{$r_adv['id']}'";
}
}
} else {
if($sourceCl == 0){
$sourceArr[] = "`source` is null";
$sourceArr[] = "`source` = ''";
$sourceArr[] = "`source` = 'null'";
} else {
$sourceArr[] = "`source` = '{$sourceCl}'";
}
}
}
$bd_usl .= " AND (".implode(" OR ",$sourceArr).")";
$_SESSION['filter_source'] = $post['filter_source'];
} else {
unset($_SESSION['filter_source']);
}
$filter_partners = null;
if ($post['filter_partner']) {
$filter_partners = json_decode(html_entity_decode($post['filter_partner']), ENT_QUOTES);
$_SESSION['filter_partner'] = $post['filter_partner'];
}
if ($filter_partners) {
$employees_ids = [];
$partners = new Partners();
foreach($filter_partners as $employee) {
if (preg_match('/all_(\d+)/', $employee, $matches)) {
if ($id = intval($matches[1])) {
$employees = $partners->getEmployeesId($id, false);
foreach($employees as $employee) {
$employees_ids[] = "`employee_id` = '{$employee}'";
}
}
} else {
if ($employee == 0) {
$employees_ids[] = "`employee_id` IS NULL";
$employees_ids[] = "`employee_id` = ''";
$employees_ids[] = "`employee_id` = 'NULL'";
} else {
$employees_ids[] = "`employee_id` = '{$employee}'";
}
}
}
$bd_usl .= " AND (" . implode(" OR ", $employees_ids) . ")";
} else {
unset($_SESSION['filter_partner']);
}
if ($post['filter_activities']) {
$activitiesArr = json_decode(html_entity_decode($post['filter_activities']), ENT_QUOTES);
$bd_usl .= " AND `id` IN (
SELECT client_id FROM clients_activities
WHERE activity_id IN (" . implode(", ", $activitiesArr) . ")
)";
$_SESSION['filter_activities'] = $post['filter_activities'];
} else {
unset($_SESSION['filter_activities']);
}
if(isset($post['is_contract']) && $post['is_contract']=='true'){
$part_where = " AND (SELECT count(id) FROM contracts_client WHERE client_id=clients.id";
if(isset($post['numder_contract']) && !empty($post['numder_contract'])){
$part_where .= " AND number like '%{$post['numder_contract']}%'";
}
if(isset($post['type_contract']) && !empty($post['type_contract'])){
$part_where .= " AND type in (".implode(',',$post['type_contract']).")";
}
if(isset($post['onDateContract']) && $post['onDateContract'] > 0){
$date_on = strtotime($post['onDateContract']." 00:00:00");
$part_where .= " AND date_end >= $date_on";
}
if(isset($post['offDateContract']) && $post['offDateContract'] > 0){
$date_off = strtotime($post['offDateContract']." 23:59:59");
$part_where .= " AND date_end <= $date_off";
}
$part_where .= ") > 0";
$bd_usl .= $part_where;
}
if($post['filter_client_rol']){
$rolesArr = json_decode(html_entity_decode($post['filter_client_rol']), ENT_QUOTES);
$sroleArr = array();
foreach($rolesArr as $roleCl){
$roleArr[] = "`role` like '%"{$roleCl}"%'";
}
$bd_usl .= " AND (".implode(" OR ",$roleArr).")";
$_SESSION['filter_client_rol'] = $post['filter_client_rol'];
} else {
unset($_SESSION['filter_client_rol']);
}
if($post['filter_denial_work']){
$denialsArr = json_decode(html_entity_decode($post['filter_denial_work']), ENT_QUOTES);
$denialArr = array();
foreach($denialsArr as $denialCl){
$denialArr[] = "`denial` = {$denialCl}";
}
$bd_usl .= " AND (".implode(" OR ",$denialArr).")";
$_SESSION['filter_denial_works'] = $post['filter_denial_work'];
} else {
unset($_SESSION['filter_denial_works']);
}
if($post['filter_etap']){
$etapsArr = json_decode(html_entity_decode($post['filter_etap']), ENT_QUOTES);
$etapArr = array();
if ($funnel_id == 0) {
foreach ($etapsArr as $etapCl) {
$etapArr[] = "`stage` = '{$etapCl}'";
}
$bd_usl .= " AND (" . implode(" OR ", $etapArr) . ") and deleted <> '1'";
} else {
if (count($etapsArr) > 0) {
$bd_usl .= " AND step_id in (" . implode(",", $etapsArr) . ")";
}
}
$_SESSION['filter_etap'] = $post['filter_etap'];
} else {
unset($_SESSION['filter_etap']);
}
if($post['objects']){
$bd_usl .= " AND of_objects > 0";
}
if($post['filter_work_ahency']){
$bd_usl_managers = '';
if ($post['filter_emp']) {
$join .= "LEFT JOIN events_clients ON events_clients.id = (SELECT id FROM events_clients WHERE client_id = clients.id ORDER BY id DESC LIMIT 1)";
$empwho = array();
$empArr = json_decode(html_entity_decode($post['filter_emp']), ENT_QUOTES);
foreach ($empArr as $empId) {
if(strpos($empId, "all_") !== false){
$agencyId = str_replace('all_', '', $empId);
$sqId = "SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId))";
$sqIdQuery = mysql_query($sqId);
while ($idRow = mysql_fetch_array($sqIdQuery)) {
$empwho[] = intval($idRow['id']);
}
} else if(strpos($empId, "I_") !== false){
$empwho[] = str_replace('I_', '', $empId);
} else {
$empwho[] = intval($empId);
}
}
if (!empty($empwho)) {
$empwho = array_unique($empwho);
$bd_usl_managers = " AND (events_clients.user_id IN (".implode(',', $empwho)."))";
}
}
$agencyId = User::getUserAgencyID();
$bd_usl .= " AND who_work=0 AND id_agent in
(SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))";
$_SESSION['filter_work_ahency'] = $post['filter_work_ahency'];
} else {
unset($_SESSION['filter_work_ahency']);
}
if($post['filter_confirm']){
if($post['filter_stage_work']){
//$bd_usl .= " AND (`who_work` = ".$_SESSION['id']." OR `id_agent` = ".$_SESSION['id'].") AND (`confirm` = 0 or `confirm` = 1) or ((doers_confirm = 0 or doers_confirm = 1) AND doers like '%"".$_SESSION['id']."":0%' AND funnel_id={$funnel_id})";
} else {
$bd_usl .= " AND ((`who_work` > 0) AND `confirm` = 0";
$sql_doer = "SELECT * FROM clients_doers WHERE user_id = {$_SESSION['id']} AND confirm = 1";
$q_doer = mysql_query($sql_doer);
while($r_doer = mysql_fetch_assoc($q_doer)){
$clientsIdsDop[] = $r_doer['client_id'];
}
if(!empty($clientsIdsDop)){
$bd_usl .= ' OR clients.id in ('.implode(',', $clientsIdsDop).')';
}
$bd_usl .= ")";
}
$mmid[] = "id_agent = $searchUserId";
$_SESSION['filter_confirm'] = $post['filter_confirm'];
} else {
unset($_SESSION['filter_confirm']);
}
if($post['fields']){
$whereq=$this->queryField($post['fields']);
$bd_usl .= $whereq;
}
// Массив для условий задач
$tasksConditions = [];
// Проверяем, выбраны ли оба фильтра "с задачами" и "без задач" одновременно
$bothTasksSelected = !empty($post['order']) && !empty($post['noTasks']);
// "С задачами"
if (!empty($post['order']) && !$bothTasksSelected) {
$tasksConditions[] = "(SELECT count(id) FROM user_client_events
WHERE calendar_view = 0
AND schedule_date IS NOT NULL
AND cancel = 0
AND client_id = clients.id
AND schedule_date > '2001-03-10 17:16:18') > 0";
$_SESSION['order'] = 1;
} else {
unset($_SESSION['order']);
}
// "Без задач"
if (!empty($post['noTasks']) && !$bothTasksSelected) {
$tasksConditions[] = "NOT EXISTS (SELECT 1 FROM user_client_events
WHERE calendar_view = 0
AND schedule_date IS NOT NULL
AND cancel = 0
AND client_id = clients.id)";
$_SESSION['noTasks'] = 1;
} else {
unset($_SESSION['noTasks']);
}
// "Задачи на сегодня"
if (!empty($post['todayTasks'])) {
$tasksConditions[] = "(SELECT count(id) FROM user_client_events
WHERE calendar_view = 0
AND schedule_date IS NOT NULL
AND cancel = 0
AND client_id = clients.id
AND DATE(schedule_date) = CURDATE()) > 0";
$_SESSION['todayTasks'] = 1;
} else {
unset($_SESSION['todayTasks']);
}
// "Просроченные задачи"
if (!empty($post['overTasks'])) {
$tasksConditions[] = "(SELECT count(id) FROM user_client_events
WHERE calendar_view = 0
AND schedule_date IS NOT NULL
AND cancel = 0
AND client_id = clients.id
AND schedule_date <= '".date('Y-m-d H:i:s')."') > 0";
$_SESSION['overTasks'] = 1;
} else {
unset($_SESSION['overTasks']);
}
// Формируем SQL
if (!empty($tasksConditions)) {
if ($bothTasksSelected) {
// Очищаем условия, чтобы показать всех клиентов
$tasksConditions = [];
}
// Если есть оставшиеся условия
if (!empty($tasksConditions)) {
$combinedCondition = "(" . implode(" OR ", $tasksConditions) . ")";
$bd_usl .= " AND " . $combinedCondition;
}
}
if ($post['priority1'] || $post['priority2'] || $post['priority3'] || $post['priority4']) {
$p_sql .= " AND (";
for ($i = 1; $i <= 4; $i++) {
if ($post['priority' . $i]) {
$p_sql .= 'priority =' .$i. ' or ';
} else {
unset($_SESSION['priority'. $i]);
}
}
$p_sql = substr($p_sql, 0, -4);
$p_sql .= ")";
$bd_usl .= $p_sql;
}
if($post['transmitted']){
$bd_usl .= " AND (SELECT count(id) FROM events_clients WHERE event='transmitted'
and user_id=".$post['emp']." and date $date_between and client_id=clients.id) > 0";
}
if($post['accepted']){
$bd_usl .= " AND (SELECT count(id) FROM events_clients WHERE event='accepted'
and user_id=".$post['emp']." and date $date_between and client_id=clients.id) > 0";
}
if(isset($post['of_objects']) && $post['of_objects']) {
$_SESSION['of_objects'] = $post['of_objects'];
$bd_usl .= " AND of_objects = $post[of_objects]";
} else {
unset($_SESSION['of_objects']);
}
if($post['isPartner']){
$bd_usl .= " AND doer_clients = 1";
// $_SESSION['isPartner'] = 1;
} else {
unset($_SESSION['isPartner']);
}
$one_page_clients = 10;
if ($_SESSION['id'] == 93) {
$one_page_clients = 5;
}
$limit = ' limit '.$one_page_clients;
if($post['page'] && $post['page'] > 1){
$page = $post['page'];
} else {
$page = 1;
}
if($post['kanban']){
$one_page_clients = 4;
$page = $post['kanban_page'];
}
if(isset($post['expired_stages']) && $post['expired_stages'] > 0){
$idExpiredStages = $this->getIdExpiredStages($bd_usl_managers.$bd_usl);
if(!empty($idExpiredStages)){
$bd_usl = " AND clients.id in(".implode(',', $idExpiredStages).")";
}
}
$bd_usl .= " AND cancel = 0";
$limit = ' limit '.(($page-1)*$one_page_clients).', '.$one_page_clients;
if($post['kanban']) {
//$limit = '';
$_SESSION['kanban'] = 1;
} else {
unset($_SESSION['kanban']);
}
if($post['list_view']) {
//$limit = '';
$_SESSION['clients_list_view'] = 1;
} else {
unset($_SESSION['clients_list_view']);
}
if($post['table_view']) {
//$limit = '';
$_SESSION['clients_table_view'] = 1;
} else {
unset($_SESSION['clients_table_view']);
}
$order = null;
$sortOrder = (isset($_GET['sort_order'])) ? $_GET['sort_order'] : ((isset($_POST['sort_order'])) ? $_POST['sort_order'] : null);
if (!$sortOrder && isset($_SESSION['clients_sort_order']))
$sortOrder = $_SESSION['clients_sort_order'];
if ($sortOrder) {
$_SESSION['clients_sort_order'] = $sortOrder;
switch (intval($sortOrder)) {
case 1:
{
$order = ' clients.date_add ASC ';
if($post['filter_stage_close']){
$order = " (SELECT date_update FROM `events_clients` WHERE client_id = clients.id and event='delete' order by id desc limit 1) ASC";
if((int)$post['date_tasks'] == 11){
$order = " clients.date_add ASC";
}
}
break;
}
case 2:{
$order = 'clients.date_add DESC ';
if($post['filter_stage_close']){
$order = " (SELECT date_update FROM `events_clients` WHERE client_id = clients.id and event='delete' order by id desc limit 1) DESC";
if((int)$post['date_tasks'] == 11){
$order = " clients.date_add DESC";
}
}
break;
}
}
}
if($post['kanban']) {
//if (!$hasFilterStage) {
$n_user_id = (int)$_SESSION['agency_id'];
$n_agents = "SELECT id FROM users
WHERE id IN (
SELECT id FROM users
WHERE id = $n_user_id
OR id_manager = $n_user_id
OR id_manager IN (
SELECT id FROM users
WHERE id_manager = $n_user_id
OR id_manager IN (
SELECT id FROM users
WHERE id_manager = $n_user_id
)
)
)
UNION
SELECT user_id FROM users_delete
WHERE agency_id = $n_user_id
";
$n_agents_res = mysql_query($n_agents);
$n_agent_ids = [];
while ($row = mysql_fetch_assoc($n_agents_res)) {
$n_agent_ids[] = $row['id'];
}
$n_agent_ids_sql = implode(', ', $n_agent_ids);
$n_agent_ids_z = '(' . implode(',', array_merge([0], $n_agent_ids)) . ')';
$bd_usl_managers = preg_replace(
'/\(\(who_work\s*=\s*(\d+)/',
'((who_work = 0 OR who_work = $1',
$bd_usl_managers,
1
);
$bd_usl_managers = preg_replace(
'/\)\)(?!\s*AND\s+id_agent\s+IN)/i',
')) AND id_agent IN (' . $n_agent_ids_sql . ')',
$bd_usl_managers,
1
);
// }
$part_order = "clients.date_update_event desc";
$mounthArr = ["января", "февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"];
$funnel_id = 0;
if($post['funnel']){
$funnel_id = $post['funnel'];
}
$total = 0;
if ($funnel_id == 0) {
for($j = 1; $j <= 8; $j++){
if($j == 8){
$sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add
FROM clients WHERE 1 AND deleted = '1'
$bd_usl_managers $bd_usl $bd_stage
ORDER BY " . (($order) ? $order : " turn, turntime desc,clients.date_update_event desc") . $limit;
$countRes = mysql_query("SELECT COUNT(*) FROM clients WHERE 1 AND stage = $j AND deleted = '1' $bd_usl_managers $bd_usl $bd_stage");
$countRow = mysql_fetch_row($countRes);
$result['count'][8] = $countRow[0];
$total += $countRow[0];
} else {
$sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add
FROM clients WHERE 1 AND stage = $j AND deleted <> '1'
$bd_usl_managers $bd_usl $bd_stage
ORDER BY " . (($order) ? $order : " turn, turntime desc,clients.date_update_event desc") . $limit;
/*if($_SESSION['id'] == 4){
file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_sql_client.txt", date('d.m.y H:i:s').' '.$sql."\n", FILE_APPEND);
}*/
$countRes = mysql_query("SELECT COUNT(*) FROM clients WHERE 1 AND stage = $j AND deleted <> '1' $bd_usl_managers $bd_usl $bd_stage");
$countRow = mysql_fetch_row($countRes);
$result['count'][$j]= $countRow[0];
$total += $countRow[0];
}
$rez = mysql_query($sql);
while($client = mysql_fetch_assoc($rez))
{
$data_add = date('d', strtotime($client['date_add']));
$mounth = $mounthArr[((int)date('m', strtotime($client['date_add'])) - 1)];
$data_add .= ' '.$mounth.' '.date('Y', strtotime($client['date_add']));
$client['add_date'] = $data_add;
$client_id = (int)$client['id'];
$tasks_sql = "SELECT schedule_date, comment, user_id, name, type
FROM user_client_events
WHERE client_id = $client_id AND type IN ('even', 'call', 'deal', 'show', 'meet') AND calendar_view = 0
ORDER BY schedule_date ASC";
$tasks_result = mysql_query($tasks_sql);
if ($tasks_result) {
while ($row = mysql_fetch_assoc($tasks_result)) {
$sql_user = "SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio
FROM users
WHERE id = {$row['user_id']}";
$responsible = mysql_fetch_assoc(mysql_query($sql_user))['user_fio'];
$client['tasks_data'][] = [
'schedule_date' => $row['schedule_date'],
'comment' => $row['comment'],
'name' => $row['name'],
'responsible' => $responsible,
'type' => $row['type'],
];
}
}
$events = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0
and schedule_date is not null and client_id=" . $client['id'] . " and schedule_date < '" . date("Y-m-d H:i:s") . "' and cancel=0";
$events1 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0
and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') = '" . date("Y-m-d") . "' and cancel=0";
$events2 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0
and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') > '" . date("Y-m-d") . "' and cancel=0";
$phone = $client['phone'];
if (strpos($phone, '+7') !== false) {
$phone = substr($phone, 0, 2)."(".substr($phone, 2, 3).")".substr($phone, 5, 3)."-".substr($phone, 8, 2)."-".substr($phone, 10, 2);
}
$client['phone'] = $phone;
$q_events = mysql_query($events);
$events_res = (int)mysql_fetch_assoc($q_events)['res'];
$client['events_res'] = $events_res;
if ($client['events_res'] == 0) {
$q_events1 = mysql_query($events1);
$events_res1 = (int)mysql_fetch_assoc($q_events1)['res'];
$client['events_res1'] = $events_res1;
if ($client['events_res1'] == 0) {
$q_events2 = mysql_query($events2);
$events_res2 = (int)mysql_fetch_assoc($q_events2)['res'];
$client['events_res2'] = $events_res2;
}
}
$client['activities'] = array() ;
$sql_a = "SELECT * FROM clients_activities WHERE client_id = {$client['id']}";
$q_a = mysql_query($sql_a);
while($r_a = mysql_fetch_assoc($q_a)){
$sql_a_name = "SELECT * FROM activities WHERE id = {$r_a['activity_id']}";
$q_a_name = mysql_query($sql_a_name);
$r_a_name = mysql_fetch_assoc($q_a_name);
$client['activities'][] = $r_a_name;
}
$result['clients'][$j][] = $client;
}
}
} else {
// if($_SESSION['id'] == 5238){
$funnel_step = mysql_query("SELECT * FROM funnel_steps WHERE funnel_id = ".$funnel_id." and deleted=0 order by order_number, branch");
$isActive = true;
$stage = null;
if((int)$change_step['step_id'] == 0){
$isActive = false;
}
$arr_steps = array();
$lost_step = 0;
while($step = mysql_fetch_assoc($funnel_step)){
$arr_steps[$step['id']] = $step;
$lost_step = $step['id'];
$sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add, date_add as date_create
FROM clients WHERE step_id = ".$step['id']."
$bd_usl_managers $bd_usl $bd_stage
ORDER BY " . (($order) ? $order : " clients.date_update_event desc") . $limit;
$sql_res = "SELECT COUNT(*) FROM clients WHERE step_id = ".$step['id']." $bd_usl_managers $bd_usl $bd_stage";
$countRes = mysql_query($sql_res);
$countRow = mysql_fetch_row($countRes);
$result['count'][$step['id']] = $countRow[0];
$total += $countRow[0];
$result['sql'] = $sql;
$rez = mysql_query($sql);
while ($client = mysql_fetch_assoc($rez)) {
$data_add = date('d', strtotime($client['date_add']));
$mounth = $mounthArr[((int)date('m', strtotime($client['date_add'])) - 1)];
$data_add .= ' ' . $mounth . ' ' . date('Y', strtotime($client['date_add']));
$client['add_date'] = $data_add;
$client_id = (int)$client['id'];
$tasks_sql = "SELECT schedule_date, comment, user_id, name, type
FROM user_client_events
WHERE client_id = $client_id AND type IN ('even', 'call', 'deal', 'show', 'meet') AND calendar_view = 0
ORDER BY schedule_date ASC";
$tasks_result = mysql_query($tasks_sql);
if ($tasks_result) {
while ($row = mysql_fetch_assoc($tasks_result)) {
$sql_user = "SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio
FROM users
WHERE id = {$row['user_id']}";
$responsible = mysql_fetch_assoc(mysql_query($sql_user))['user_fio'];
$client['tasks_data'][] = [
'schedule_date' => $row['schedule_date'],
'comment' => $row['comment'],
'name' => $row['name'],
'responsible' => $responsible,
'type' => $row['type'],
];
}
}
$events = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0
and schedule_date is not null and client_id=" . $client['id'] . " and schedule_date < '" . date("Y-m-d H:i:s") . "' and cancel=0";
$events1 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0
and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') = '" . date("Y-m-d") . "' and cancel=0";
$events2 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0
and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') > '" . date("Y-m-d") . "' and cancel=0";
$phone = $client['phone'];
if (strpos($phone, '+7') !== false) {
$phone = substr($phone, 0, 2) . "(" . substr($phone, 2, 3) . ")" . substr($phone, 5, 3) . "-" . substr($phone, 8, 2) . "-" . substr($phone, 10, 2);
}
$client['phone'] = $phone;
$q_events = mysql_query($events);
$events_res = (int)mysql_fetch_assoc($q_events)['res'];
$client['events_res'] = $events_res;
if ($client['events_res'] == 0) {
$q_events1 = mysql_query($events1);
$events_res1 = (int)mysql_fetch_assoc($q_events1)['res'];
$client['events_res1'] = $events_res1;
if ($client['events_res1'] == 0) {
$q_events2 = mysql_query($events2);
$events_res2 = (int)mysql_fetch_assoc($q_events2)['res'];
$client['events_res2'] = $events_res2;
}
}
$client['activities'] = array() ;
$sql_a = "SELECT * FROM clients_activities WHERE client_id = {$client['id']}";
$q_a = mysql_query($sql_a);
while($r_a = mysql_fetch_assoc($q_a)){
$sql_a_name = "SELECT * FROM activities WHERE id = {$r_a['activity_id']}";
$q_a_name = mysql_query($sql_a_name);
$r_a_name = mysql_fetch_assoc($q_a_name);
$client['activities'][] = $r_a_name;
}
//var_dump($next_id);
$result['clients'][$step['id']][] = $client;
}
}
$sql = "SELECT *, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add, date_add as date_create
FROM clients WHERE step_id = -1
$bd_usl_managers $bd_usl $bd_stage
ORDER BY " . (($order) ? $order : "clients.date_update_event desc") . $limit;
$result['sql'] = $sql;
$rez = mysql_query($sql);
while ($client = mysql_fetch_assoc($rez)) {
$data_add = date('d', strtotime($client['date_add']));
$mounth = $mounthArr[((int)date('m', strtotime($client['date_add'])) - 1)];
$data_add .= ' ' . $mounth . ' ' . date('Y', strtotime($client['date_add']));
$client['add_date'] = $data_add;
$client_id = (int)$client['id'];
$tasks_sql = "SELECT schedule_date, comment, user_id, name, type
FROM user_client_events
WHERE client_id = $client_id AND type IN ('even', 'call', 'deal', 'show', 'meet') AND calendar_view = 0
ORDER BY schedule_date ASC";
$tasks_result = mysql_query($tasks_sql);
if ($tasks_result) {
while ($row = mysql_fetch_assoc($tasks_result)) {
$sql_user = "SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) as user_fio
FROM users
WHERE id = {$row['user_id']}";
$responsible = mysql_fetch_assoc(mysql_query($sql_user))['user_fio'];
$client['tasks_data'][] = [
'schedule_date' => $row['schedule_date'],
'comment' => $row['comment'],
'name' => $row['name'],
'responsible' => $responsible,
'type' => $row['type'],
];
}
}
$events = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0
and schedule_date is not null and client_id=" . $client['id'] . " and schedule_date < '" . date("Y-m-d H:i:s") . "' and cancel=0";
$events1 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0
and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') = '" . date("Y-m-d") . "' and cancel=0";
$events2 = "SELECT count(id) as res FROM user_client_events WHERE calendar_view = 0
and schedule_date is not null and client_id=" . $client['id'] . " and DATE_FORMAT(schedule_date, '%Y-%m-%d') > '" . date("Y-m-d") . "' and cancel=0";
$phone = $client['phone'];
if (strpos($phone, '+7') !== false) {
$phone = substr($phone, 0, 2) . "(" . substr($phone, 2, 3) . ")" . substr($phone, 5, 3) . "-" . substr($phone, 8, 2) . "-" . substr($phone, 10, 2);
}
$client['phone'] = $phone;
$q_events = mysql_query($events);
$events_res = (int)mysql_fetch_assoc($q_events)['res'];
$client['events_res'] = $events_res;
if ($client['events_res'] == 0) {
$q_events1 = mysql_query($events1);
$events_res1 = (int)mysql_fetch_assoc($q_events1)['res'];
$client['events_res1'] = $events_res1;
if ($client['events_res1'] == 0) {
$q_events2 = mysql_query($events2);
$events_res2 = (int)mysql_fetch_assoc($q_events2)['res'];
$client['events_res2'] = $events_res2;
}
}
$client['activities'] = array() ;
$sql_a = "SELECT * FROM clients_activities WHERE client_id = {$client['id']}";
$q_a = mysql_query($sql_a);
while($r_a = mysql_fetch_assoc($q_a)){
$sql_a_name = "SELECT * FROM activities WHERE id = {$r_a['activity_id']}";
$q_a_name = mysql_query($sql_a_name);
$r_a_name = mysql_fetch_assoc($q_a_name);
$client['activities'][] = $r_a_name;
}
//var_dump($next_id);
$result['clients'][$lost_step][] = $client;
}
$result['arr_steps'] = $arr_steps;
}
/*$sql = "SELECT id
FROM clients WHERE 1
$bd_usl_managers $bd_usl $bd_stage";
$rez = mysql_query($sql);
$total = mysql_num_rows($rez);*/
$result['total'] = $total;
} else {
if (!$hasFilterStage) {
$n_user_id = (int)$_SESSION['agency_id'];
$n_agents = "SELECT id FROM users
WHERE id IN (
SELECT id FROM users
WHERE id = $n_user_id
OR id_manager = $n_user_id
OR id_manager IN (
SELECT id FROM users
WHERE id_manager = $n_user_id
OR id_manager IN (
SELECT id FROM users
WHERE id_manager = $n_user_id
)
)
)
UNION
SELECT user_id FROM users_delete
WHERE agency_id = $n_user_id
";
$n_agents_res = mysql_query($n_agents);
$n_agent_ids = [];
while ($row = mysql_fetch_assoc($n_agents_res)) {
$n_agent_ids[] = $row['id'];
}
$n_agent_ids_sql = implode(', ', $n_agent_ids);
$n_agent_ids_z = '(' . implode(',', array_merge([0], $n_agent_ids)) . ')';
$bd_usl_managers = preg_replace(
'/\(\(who_work\s*=\s*(\d+)/',
'((who_work = 0 OR who_work = $1',
$bd_usl_managers,
1
);
$bd_usl_managers = preg_replace(
'/\)\)(?!\s*AND\s+id_agent\s+IN)/i',
')) AND id_agent IN (' . $n_agent_ids_sql . ')',
$bd_usl_managers,
1
);
}
$sql = "SELECT count(id) as total
FROM clients $join WHERE 1
$bd_usl_managers $bd_usl $bd_stage";
$rez = mysql_query($sql);
$total = mysql_fetch_assoc($rez)['total'];
$all_pages = ceil($total/$one_page_clients);
$part_order = " clients.date_update_event DESC";
$hasFilterStage = false;
foreach (array_keys($post) as $key) {
if (strpos($key, 'filter_stage_') === 0) {
$hasFilterStage = true;
break;
}
}
if($post['filter_stage_close']){
$part_order = " (SELECT date_update FROM `events_clients` WHERE client_id = clients.id and event='delete' order by id desc limit 1) DESC";
if((int)$post['date_tasks'] == 11){
$part_order = " clients.date_add DESC";
}
}
if (!$hasFilterStage) {
if (strpos($bd_usl_managers, 'who_work') !== false) {
// Расширяем первое условие: who_work = 0 OR ...
$n_user_id = (int)$_SESSION['agency_id'];
$n_agents = "SELECT id FROM users
WHERE id IN (
SELECT id FROM users
WHERE id = $n_user_id
OR id_manager = $n_user_id
OR id_manager IN (
SELECT id FROM users
WHERE id_manager = $n_user_id
OR id_manager IN (
SELECT id FROM users
WHERE id_manager = $n_user_id
)
)
)
UNION
SELECT user_id FROM users_delete
WHERE agency_id = $n_user_id
";
$n_agents_res = mysql_query($n_agents);
$n_agent_ids = [];
while ($row = mysql_fetch_assoc($n_agents_res)) {
$n_agent_ids[] = $row['id'];
}
$n_agent_ids_sql = implode(', ', $n_agent_ids);
$bd_usl_managers = preg_replace(
'/\(\(who_work\s*=/',
'((who_work = 0 OR who_work =',
$bd_usl_managers,
1
);
// Заменяем )))) в конце на нужную конструкцию
$bd_usl_managers = preg_replace(
'/\)\)$/',
')) AND clients.id_agent IN (' . $n_agent_ids_sql . ')',
$bd_usl_managers,
1
);
}
}
$sql = "SELECT clients.*, DATE_FORMAT(date_add, '%d.%m.%Y') AS date_add, date_add as date_create
FROM clients $join WHERE 1
$bd_usl_managers $bd_usl $bd_stage
ORDER BY " . (($order) ? $order : $part_order) . $limit;
$rez = mysql_query($sql);
$clientIds = [];
while($cl = mysql_fetch_assoc($rez)) {
$clientIds[] = $cl['id'];
$cl['eventDate'] = null;
$cl['activities'] = null;
$cl['is_show_dop'] = false;
$result['clients'][] = $cl;
}
//только для таблицы
if ($post['table_view']) {
$eventDateSql = "SELECT DATE_FORMAT(schedule_date, '%d.%m.%Y %H:%i') AS schedule_date, client_id FROM user_client_events WHERE calendar_view = 0
and schedule_date is not null and client_id in (" . implode(", ", $clientIds) . ") and schedule_date >= '" . date("Y-m-d H:i:s") . "'";
$q_events = mysql_query($eventDateSql);
while ($task = mysql_fetch_assoc($q_events)) {
foreach ($result['clients'] as $key => $clnt) {
if ($clnt['id'] == $task['client_id']) {
$result['clients'][$key]['eventDate'] = $task['schedule_date'];
}
}
}
}
$sqlAddInfoAct = "SELECT activity_id, client_id FROM clients_activities WHERE client_id in (" . implode(", ", $clientIds) . ")";
$rezAddInfoRes = mysql_query($sqlAddInfoAct);
if (mysql_num_rows($rezAddInfoRes) > 0) {
while($row = mysql_fetch_array($rezAddInfoRes)) {
foreach ($result['clients'] as $key => $clnt) {
if ($clnt['id'] == $row['client_id']) {
if ($result['clients'][$key]['activities'] == null) {
$result['clients'][$key]['activities'] = array();
}
$result['clients'][$key]['activities'][] = $row['activity_id'];
}
}
}
}
$result['all_pages'] = $all_pages;
$result['total'] = $total;
}
$_SESSION['where_clients'] = "$bd_usl_managers $bd_usl $bd_stage ORDER BY " . (($order) ? $order : $part_order);
$_SESSION['where_campaigns'] = "$bd_usl_managers $bd_usl $bd_stage";
/*if($_SESSION['id'] == 16964){
echo $sql;
//file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_sql_client.txt", date('d.m.y H:i:s').' '.$sql."\n", FILE_APPEND);
}*/
//echo $sql;die();
return $result;
}
public function queryField($fields){
$query = "";
$user = new User;
$user->get($_SESSION['id']);
$agencyId = $user->agencyId;
$agencyFielsds =array();
$sql = "SELECT * FROM client_req_fields WHERE `agency_id`=$agencyId order by id desc";
$q = mysql_query($sql);
while($r = mysql_fetch_assoc($q)){
$agencyFielsds[$r['id']] = $r;
}
$agencyFielsdsP =array();
$sql = "SELECT * FROM client_req_fields_podgroup WHERE `agency_id`=$agencyId order by id desc";
$q = mysql_query($sql);
while($r = mysql_fetch_assoc($q)){
$agencyFielsdsP[$r['id']] = $r;
}
$fieldsJson = array();
$fieldsInt = array();
$fieldsString = array();
$fieldsPod = array();
$search = false;
if(!empty($agencyFielsds)) {
foreach($fields as $key => $field){
$arrField = explode("_", $key);
$typeField = 1;
if($arrField[0] == 'modelp'){
$typeField = 2;
}
$field_id = (int)$arrField[1];
$res = null;
if (is_array($field)) {
$res = array();
foreach($field as $k => $v){
//пробуем привести к числу, так как в БД хранится как массив чисел
if (is_numeric($v)) {
$res[] = (int) $v;
} else {
$res[] = $v;
}
}
} else {
$res = $field;
}
$value = trim(json_encode($res, JSON_UNESCAPED_UNICODE), '"');
$fids = array();
$sql = "SELECT id, field_id FROM client_data WHERE field_id = $field_id AND type = $typeField";
$q = mysql_query($sql);
while ($r = mysql_fetch_assoc($q)){
$type = -1;
if($typeField == 1){
if($agencyFielsds[$r['field_id']]['is_podgroup'] == 0){
$type = $agencyFielsds[$r['field_id']]['type'];
} else {
$type = 10;
}
} else if ($typeField == 2){
$type = $agencyFielsdsP[$r['field_id']]['type'];
}
if($type == 0 || $type == 5){
$fieldsString[] = array('data_id'=>$r['id'], 'value'=>$value);
} else if($type == 3){
$fieldsJson[] = array('data_id'=>$r['id'], 'value'=>$value);
}
else if($type == 1 || $type == 2 || $type == 4){
$fieldsInt[] = array('data_id'=>$r['id'], 'value'=>$value);
} else if($type == 10){
$fieldsPod[] = array('data_id'=>$r['id'], 'value'=>$value);
}
}
}
}
$client_ids = array();
$client_ids_temp = array();
if(!empty($fieldsPod)){
$ids = array();
$values = array();
foreach($fieldsPod as $fi){
$ids[] = $fi['data_id'];
$arrVal = json_decode($fi['value'], true);
if(is_array($arrVal)){
foreach ($arrVal as $val) {
if(!in_array($val, $values))
$values[] = $val;
}
} else {
if(!in_array($fi['value'], $values))
$values[] = $fi['value'];
}
}
$sql = "SELECT client_id FROM client_data WHERE id in (".implode(',', $ids).") AND value in (".implode(',', $values).")";
//echo $sql;
$q = mysql_query($sql);
while($r = mysql_fetch_assoc($q)){
$client_ids_temp[] = $r['client_id'];
}
}
if(!empty($fieldsInt)){
$ids = array();
$values = array();
foreach($fieldsInt as $fi){
$ids[] = $fi['data_id'];
$arrVal = json_decode($fi['value'], true);
if(is_array($arrVal)){
foreach ($arrVal as $val) {
if(!in_array($val, $values))
$values[] = $val;
}
} else {
if(!in_array($fi['value'], $values))
$values[] = $fi['value'];
}
}
$sql = "SELECT client_id FROM client_data WHERE id in (".implode(',', $ids).") AND value in (".implode(',', $values).")";
if(!empty($client_ids_temp)){
$sql .= " AND client_id in (".implode(',', $client_ids_temp).")";
}
//echo $sql;
$q = mysql_query($sql);
while($r = mysql_fetch_assoc($q)){
$client_ids[] = $r['client_id'];
}
}
if(!empty($fieldsString)){
$ids = array();
$values = '';
foreach($fieldsString as $fi){
$ids[] = $fi['data_id'];
if($values != ''){
$values .= ' OR ';
}
$values .= "value like '%".$fi['value']."%'";
}
$sql = "SELECT client_id FROM client_data WHERE id in (".implode(',', $ids).") AND ($values)";
if(!empty($client_ids_temp)){
$sql .= " AND client_id in (".implode(',', $client_ids_temp).")";
}
$q = mysql_query($sql);
while($r = mysql_fetch_assoc($q)){
$client_ids[] = $r['client_id'];
}
}
if(!empty($fieldsJson)){
$ids = array();
$values = '';
foreach($fieldsJson as $fi){
$ids[] = $fi['data_id'];
if($values != ''){
$values .= ' OR ';
}
$values .= "JSON_CONTAINS(`value`, '".$fi['value']."') > 0";
}
$sql = "SELECT client_id FROM client_data WHERE id in (".implode(',', $ids).") AND ($values)";
if(!empty($client_ids_temp)){
$sql .= " AND client_id in (".implode(',', $client_ids_temp).")";
}
$q = mysql_query($sql);
while($r = mysql_fetch_assoc($q)){
$client_ids[] = $r['client_id'];
}
}
if(!empty($client_ids)){
$query = " AND id in (".implode(',',$client_ids).")";
} else if((empty($fieldsJson) && empty($fieldsInt) && empty($fieldsString)) && !empty($client_ids_temp)){
$query = " AND id in (".implode(',',$client_ids_temp).")";
} else {
$query = " AND id in (0)";
}
return $query;
}
public function getCountAllClients() {
// находим ИД агентства и по нему ищем всех свободных клиентов
$agencyId = -1;
if ($_SESSION['agency']) {
$agencyId = $_SESSION['id'];
} else {
if ($_SESSION['manager']) {
$user = new User;
$user->checkPermissions();
$agencyId = $user->id_manager;
} else {
$user = new User;
$user->checkPermissions();
if ($user->id_manager > 0) {
$agency = new User;
$agency->get($user->id_manager);
if($agency->id_manager) {
$agency->get($agency->id_manager);
}
$agencyId = $agency->id;
}
}
}
$bd_usl = " deleted=0 AND who_work=0 AND id_agent in
(SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))";
$sql_count = "SELECT COUNT(*) FROM clients WHERE $bd_usl";
$vsego = mysql_result(mysql_query($sql_count),0);
if($vsego > 0) {
$counter = "".$vsego."";
}
else {
$counter = "";
}
return $counter;
}
public function getCountAllClientsSend($funnelId = 0) {
$bd_usl_managers = "";
$bd_usl = "";
// if (!$_GET['all'] || !$_POST['all']) {
$searchUserId = $_SESSION['id'];
if ($_SESSION['users_admin']) {
$currentUser = new User;
$currentUser->checkPermissions();
$searchUserId = $currentUser->agencyId;
}
//$mmid[] = "id_agent = $searchUserId";
$mmid[] = "who_work = $searchUserId";
if ($_GET['deleted']) {
$bd_usl = "AND deleted=1";
// если ищем по удаленным и под менеджером - пропускаем этот код - здесь идет добавление по агентству
if (!($_GET['deleted'] && $_SESSION['manager'])) {
$rez1 = mysql_query("SELECT id_manager FROM users WHERE id=$searchUserId");
while ($mm1 = mysql_fetch_row($rez1)) {
$mmid[] = "id_agent = " . $mm1[0];
$rez01 = mysql_query("SELECT id_manager FROM users WHERE id=$mm1[0]");
while ($mm01 = mysql_fetch_row($rez01)) {
$mmid[] = "id_agent = " . $mm01[0];
}
$rez02 = mysql_query("SELECT id FROM users WHERE id_manager=$mm1[0] and id_manager<>0");
while ($mm02 = mysql_fetch_row($rez02)) {
$mmid[] = "id_agent = " . $mm02[0];
}
}
}
$rez2 = mysql_query("SELECT id FROM users WHERE id_manager=$searchUserId");
while ($mm2 = mysql_fetch_row($rez2)) {
$mmid[] = "id_agent = " . $mm2[0];
$rez03 = mysql_query("SELECT id FROM users WHERE id_manager=$mm2[0]");
while ($mm03 = mysql_fetch_row($rez03)) {
$mmid[] = "id_agent = " . $mm03[0];
}
}
}
$rez3 = mysql_query("SELECT id FROM users WHERE id_manager=$searchUserId");
while ($mm = mysql_fetch_row($rez3)) {
$mmid[] = "who_work = " . $mm[0];
$rez04 = mysql_query("SELECT id FROM users WHERE id_manager=$mm[0]");
while ($mm2 = mysql_fetch_row($rez04)) {
$mmid[] = "who_work = " . $mm2[0];
}
}
$bd_usl_managers = " AND (".implode(" OR ",$mmid).")";
// echo $bd_usl_managers.'
';
// находим ИД агентства и по нему ищем всех свободных клиентов
$agencyId = -1;
if ($_SESSION['agency']) {
$agencyId = $_SESSION['id'];
} else {
if ($_SESSION['manager']) {
$user = new User;
$user->checkPermissions();
$agencyId = $user->id_manager;
} else {
$user = new User;
$user->checkPermissions();
if ($user->id_manager > 0) {
$agency = new User;
$agency->get($user->id_manager);
if($agency->id_manager) {
$agency->get($agency->id_manager);
}
$agencyId = $agency->id;
}
}
}
$bd_usl = " funnel_id=$funnelId AND deleted=0 AND confirm = 0 ".$bd_usl_managers." AND who_work != " . $_SESSION['id'];
$sql_count = "SELECT COUNT(*) FROM clients WHERE $bd_usl";
// echo $sql_count;
$vsego = mysql_result(mysql_query($sql_count),0);
$counter = $vsego;
return $counter;
}
public function getCountChartsClients() {
// находим ИД агентства и по нему ищем всех свободных клиентов
$agencyId = -1;
if ($_SESSION['agency']) {
$agencyId = $_SESSION['id'];
} else {
if ($_SESSION['manager']) {
$user = new User;
$user->checkPermissions();
$agencyId = $user->id_manager;
} else {
$user = new User;
$user->checkPermissions();
if ($user->id_manager > 0) {
$agency = new User;
$agency->get($user->id_manager);
if($agency->id_manager) {
$agency->get($agency->id_manager);
}
$agencyId = $agency->id;
}
}
}
$bd_usl = " deleted=0 AND who_work in
(SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))";
$sql_count = "SELECT COUNT(*) FROM clients WHERE $bd_usl";
$vsego = mysql_result(mysql_query($sql_count),0);
if($vsego > 0) {
$counter = "".$vsego."";
}
else {
$counter = "";
}
return $counter;
}
public function getCountAllClientsNumber($workType) {
// находим ИД агентства и по нему ищем всех свободных клиентов
$agencyId = -1;
if ($_SESSION['agency']) {
$agencyId = $_SESSION['id'];
} else {
if ($_SESSION['manager']) {
$user = new User;
$user->checkPermissions();
$agencyId = $user->id_manager;
} else {
$user = new User;
$user->checkPermissions();
if ($user->id_manager > 0) {
$agency = new User;
$agency->get($user->id_manager);
if($agency->id_manager) {
$agency->get($agency->id_manager);
}
$agencyId = $agency->id;
}
}
}
$bd_usl = " deleted=0 AND who_work=0 AND work_type = $workType AND id_agent in
(SELECT id FROM `users` WHERE id=$agencyId or id_manager=$agencyId or id_manager in (select id from users where id_manager=$agencyId) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$agencyId)))";
$sql_count = "SELECT COUNT(*) FROM clients WHERE $bd_usl";
return mysql_result(mysql_query($sql_count),0);
}
public function getUsersFilter($usersArr, $sessionUserId = false, $sessionUserAdmin = false){
if(count($usersArr) == 0) {
$userId = $sessionUserId;
if ($sessionUserAdmin) {
$currentUser = new User;
$currentUser->checkPermissions($userId, false);
$userId = $currentUser->agencyId;
}
$user = new User;
$user->get($userId);
$usersId[] = (int)$userId;
if(strpos($userId, 'allagency_') !== false){
$user->agency = 1;
$usersId[] = (int)str_replace("allagency_", "", $userId);
} else if(strpos($userId, 'all_') !== false){
$user->manager = 1;
$usersId[] = (int)str_replace("all_", "", $userId);
}
if($user->agency){
$rez3 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$userId");
while ($mm = mysql_fetch_row($rez3)) {
if(!in_array((int)$mm[0], $usersId)){
$usersId[] = (int)$mm[0];
}
if($mm[1] == 1){
$rez04 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$mm[0]");
while ($mm2 = mysql_fetch_row($rez04)) {
if(!in_array((int)$mm2[0], $usersId)){
$usersId[] = (int)$mm2[0];
}
if($mm2[1] == 1){
$rez004 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$mm2[0]");
while ($mm02 = mysql_fetch_row($rez004)) {
if(!in_array((int)$mm02[0], $usersId)){
$usersId[] = (int)$mm02[0];
}
}
}
}
}
}
} else if($user->manager){
$rez04 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$userId");
while ($mm2 = mysql_fetch_row($rez04)) {
if(!in_array((int)$mm2[0], $usersId)){
$usersId[] = (int)$mm2[0];
}
if($mm2[1] == 1){
$rez004 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$mm2[0]");
while ($mm02 = mysql_fetch_row($rez004)) {
if(!in_array((int)$mm02[0], $usersId)){
$usersId[] = (int)$mm02[0];
}
}
}
}
}
}
else
{
foreach($usersArr as $userId){
if(strpos($userId, 'allagency_') !== false){
$user->agency = 1;
$userId = (int)str_replace("allagency_", "", $userId);
if(!in_array($userId, $usersId)){
$usersId[] = $userId;
}
} else if(strpos($userId, 'all_') !== false){
$user->manager = 1;
$userId = (int)str_replace('all_', '', $userId);
if(!in_array($userId, $usersId)){
$usersId[] = $userId;
}
} else {
if(!in_array((int)$userId, $usersId)){
$usersId[] = $userId;
}
}
if($user->agency){
$rez3 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$userId");
while ($mm = mysql_fetch_row($rez3)) {
if(!in_array((int)$mm[0], $usersId)){
$usersId[] = (int)$mm[0];
}
if($mm[1] == 1){
$rez04 = mysql_query("SELECT id FROM users WHERE id_manager=$mm[0]");
while ($mm2 = mysql_fetch_row($rez04)) {
if(!in_array((int)$mm2[0], $usersId)){
$usersId[] = (int)$mm2[0];
}
}
}
}
} else if($user->manager){
$rez04 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$userId");
while ($mm2 = mysql_fetch_row($rez04)) {
if(!in_array((int)$mm2[0], $usersId)){
$usersId[] = (int)$mm2[0];
}
if($mm2[1] == 1){
$rez004 = mysql_query("SELECT id, manager FROM users WHERE id_manager=$mm2[0]");
while ($mm02 = mysql_fetch_row($rez004)) {
if(!in_array((int)$mm02[0], $usersId)){
$usersId[] = (int)$mm02[0];
}
}
}
}
}
}
}
return $usersId;
}
public static function get_class_etap($clientId, $funnelId) {
$change_step_query = mysql_query("SELECT * FROM clients_funnel_step WHERE client_id = " . $clientId);
$next_id = 0;
$change_step = array('step_id' => 0);
//$lostDate = $client['date_create'];
if (mysql_num_rows($change_step_query) > 0) {
$change_step = mysql_fetch_assoc($change_step_query);
$next_id = $change_step['next_id'];
$lostDate = $change_step['date_update'];
}
$next_steps = array();
$funnel_sql = "SELECT * FROM funnel_steps WHERE funnel_id = " . $funnelId . " and deleted=0 order by order_number, branch";
$funnel_step = mysql_query($funnel_sql);
$isActive = true;
$classF = ' active';
$stage = '';
$stageId = 0;
if ((int)$change_step['step_id'] == 0) {
$isActive = false;
}
$arr_steps = array();
$countStep = mysql_num_rows($funnel_step);
while ($step = mysql_fetch_assoc($funnel_step)) {
$step['isActive'] = (int)$isActive;
$step['nextStep'] = false;
if ($step['main'] == 1 && !$isActive) {
$next_steps[] = $step['id'];
}
if ($step['id'] == (int)$change_step['step_id']) {
//$stage = $step['name'];
$next_steps = json_decode(htmlspecialchars_decode($step['next_step']));
if ($next_id == 0) {
//$stage = $step['name'];
//$next_steps = json_decode( htmlspecialchars_decode($step['next_step']));
//if($step['branch'] < $branch){
$isActive = false;
// }
}
} else if ($step['id'] == (int)$next_id) {
$isActive = false;
}
$arr_steps[$step['id']] = $step;
}
if ($next_id != 0 && !empty($next_steps)) {
foreach ($next_steps as $key => $st) {
if ($st != $next_id) {
unset($next_steps[$key]);
}
}
}
foreach ($arr_steps as $idstep => $step) {
$arr_steps[$idstep]['isNext'] = 0;
if (in_array($idstep, $next_steps)) {
$stage = $step['name'];
$stageId = $step['id'];
$arr_steps[$idstep]['isNext'] = 1;
}
}
$isActive = true;
foreach ($arr_steps as $idstep => $step) {
$classF = '';
if ($isActive) $classF = ' active';
if ($step['isNext'] == 1) {
$classF = ' nextStep';
$isActive = false;
}
// Покажет сколько мне дней
if(!isset($lostDate)) $lostDate = date('d.m.Y H:i:s');
$interval = date_diff(new DateTime(), new DateTime($lostDate))->days;
if ($interval >= $step['days_step']) {
$classF .= ' expired';
}
$res[$idstep ] = $classF;
$res['stage'] = $stage;
$res['stageId'] = $stageId;
}
if($stageId == 0) $stageId = -1;
$sql = "UPDATE clients SET step_id = {$stageId} WHERE id = {$clientId}";
mysql_query($sql);
$res['sql'] = $sql;
//var_dump($res);
//return $res;
}
private function get_bar_etap($clientId, $funnelId, $stageId){
$res = array('bar'=>array());
$res['client_id'] = $clientId;
if($funnelId == 0){
$steps = $this->steps;
$stage = "Новый";
foreach($steps as $step){
if($step['id'] == $stageId){
$stage = $step['name'];
}
}
$res['bar'] = $steps;
$res['stage'] = $stage;
$res['stageId'] = $stageId;
return $res;
} else {
$change_step_query = $this->db->query("SELECT * FROM clients_funnel_step WHERE client_id = " . $clientId);
$next_id = 0;
$change_step = array('step_id' => 0);
//$lostDate = $client['date_create'];
if ($this->db->num_rows($change_step_query) > 0) {
$change_step = $this->db->fetch_assoc($change_step_query);
$next_id = $change_step['next_id'];
$lostDate = $change_step['date_update'];
} else {
$sql_client = "SELECT date_add FROM clients WHERE id = $clientId";
$q_client = $this->db->query($sql_client);
$r_client = $this->db->fetch_assoc($q_client);
$lostDate = $r_client['date_add'];
}
$next_steps = array();
$funnel_sql = "SELECT * FROM funnel_steps WHERE funnel_id = " . $funnelId . " and deleted=0 order by order_number, branch";
$funnel_step = $this->db->query($funnel_sql);
$isActive = true;
$classF = ' active';
$stage = '';
$stageId = 0;
if ((int)$change_step['step_id'] == 0) {
$isActive = false;
}
$arr_steps = array();
$countStep = $this->db->num_rows($funnel_step);
while ($step = $this->db->fetch_assoc($funnel_step)) {
$step['isActive'] = (int)$isActive;
$step['nextStep'] = false;
if ($step['main'] == 1 && !$isActive) {
$next_steps[] = $step['id'];
}
if ($step['id'] == (int)$change_step['step_id']) {
//$stage = $step['name'];
$next_steps = json_decode(htmlspecialchars_decode($step['next_step']));
if ($next_id == 0) {
//$stage = $step['name'];
//$next_steps = json_decode( htmlspecialchars_decode($step['next_step']));
//if($step['branch'] < $branch){
$isActive = false;
// }
}
} else if ($step['id'] == (int)$next_id) {
$isActive = false;
}
$arr_steps[$step['id']] = $step;
}
if ($next_id != 0 && !empty($next_steps)) {
foreach ($next_steps as $key => $st) {
if ($st != $next_id) {
unset($next_steps[$key]);
}
}
}
foreach ($arr_steps as $idstep => $step) {
$arr_steps[$idstep]['isNext'] = 0;
if (in_array($idstep, $next_steps)) {
$stage = $step['name'];
$stageId = $step['id'];
$arr_steps[$idstep]['isNext'] = 1;
}
}
$isActive = true;
foreach ($arr_steps as $idstep => $step) {
$classF = '';
if ($isActive) $classF = ' active';
if ($step['isNext'] == 1) {
$classF = ' nextStep';
$isActive = false;
}
// Покажет сколько мне дней
if(!isset($lostDate)) $lostDate = date('d.m.Y H:i:s');
$interval = date_diff(new DateTime(), new DateTime($lostDate))->days;
if ($interval >= $step['days_step']) {
$classF .= ' expired';
}
$step['classF'] = $classF;
$res['bar'][] = $step;
$res['stage'] = $stage;
$res['stageId'] = $stageId;
}
if($stageId == 0) $stageId = -1;
// $sql = "UPDATE requisitions SET step_id = {$stageId} WHERE id = {$reqId}";
//$this->db->query($sql);
//$res['sql'] = $sql;
return $res;
}
}
public function get_client_id($id, $agency_id){
$sql = "SELECT * FROM clients WHERE id = {$id}";
$q = mysql_query($sql);
$r = mysql_fetch_assoc($q);
//Название воронки
if($r['funnel_id'] == 0){
$r['name_funnel'] = "Обычные";
} else {
$sql_fun = "SELECT name FROM funnel WHERE id = ".$r['funnel_id'];
$r['name_funnel'] = $this->db->fetch_assoc($this->db->query($sql_fun))['name'];
}
$r['steps'] = $this->get_bar_etap($r['id'], $r['funnel_id'], $r['stage']);
$r['work_type'] = str_replace(['[',']','_',','],['','',' ',', '],$r['work_type']);
$r['role_name'] = str_replace(['[',']','_',','],['','',' ',', '],$r['role']);
$r['type_name'] = str_replace(['[',']','_',','],['','',' ',', '], $r['type']);
$r['activities'] = array() ;
$r['activities_name'] = '';
$sql_a = "SELECT * FROM clients_activities WHERE client_id = {$r['id']}";
$q_a = $this->db->query($sql_a);
while($r_a = $this->db->fetch_assoc($q_a)){
$r['activities'][] = $r_a['activity_id'];
$sql_a_name = "SELECT * FROM activities WHERE id = {$r_a['activity_id']}";
$q_a_name = $this->db->query($sql_a_name);
$r_a_name = $this->db->fetch_assoc($q_a_name);
if($r['activities_name'] != '') $r['activities_name'] .= ", ";
$r['activities_name'] .= $r_a_name['name'];
}
$contract = new Contract($this->db);
$contract->setAgencyId($agency_id);
$typesContracs = $contract->getTypesName();
$r['contracts'] = array();
$r['contracts_name'] = '';
$sql_a = "SELECT * FROM contracts_client WHERE client_id = {$r['id']}";
$q_a = $this->db->query($sql_a);
while($r_a = $this->db->fetch_assoc($q_a)){
$expired = false;
$diff_date = ($r_a['date_end'] - time())/86400;
if($diff_date < (int)$r_a['days']){
$expired = true;
}
$name = $typesContracs[$r_a['type']]['type']." №".$r_a['number']." от ".date('d.m.Y',$r_a['date_start']). " по ".date('d.m.Y', $r_a['date_end']);
$r['contracts'][] = array('id'=>$r_a['id'], 'name'=>$name, 'expired'=>$expired);
if($r['contracts_name'] != '') $r['contracts_name'] .= ", ";
$r['contracts_name'] .= $name;
}
$r['objects'] = json_decode(html_entity_decode($r['objects']), true);
$who_work = $r['who_work'];
$master_work = '';
if ((int)$who_work > 0) {
if (isset($usersToUse) && isset($usersToUse[$who_work])) {
$mstr = $usersToUse[$who_work];
} else {
$mstr = $this->db->fetch_assoc($this->db->query("SELECT agency, manager, agency_name, first_name, last_name, middle_name, role_id, phone, 0 as del FROM users WHERE id=$who_work UNION
SELECT agency, manager, agency_name, first_name, last_name, middle_name, role_id, phone, 1 as del FROM users_delete WHERE user_id=$who_work"));
}
$master_phone = $mstr['phone'];
$master_work = trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']);
} else {
$master_work = 'Все агентство';
}
$r['master_work'] = $master_work;
$partner = "";
if (isset($r['employee_id']) && $r['employee_id'] > 0) {
$partners = new Partners;
$partner = $partners->getPartnerByEmployee(intval($r['employee_id']));
}
// $r['source_name'] .= ($partner) ? ((isset($source)) ? " | " : '') . $partner['name'] . ((!empty($partner['resident'])) ? ' (' . $partner['resident']. ')' : '') : '';
$r['employe_name'] = $partner['fullname'];
if(!empty($partner['position'])){
$r['employe_name'] .= ", ".$partner['position'];
}
return $r;
}
public function prev_step_event($clientId, $stepId, $is_open_step = false){
$sql = "SELECT * FROM funnel_steps WHERE id = $stepId";
// echo $sql."\n";
$q = $this->db->query($sql);
$r = $this->db->fetch_assoc($q);
$sql_client = "SELECT * FROM clients WHERE id=$clientId";
$q_client = $this->db->query($sql_client);
$client = $this->db->fetch_assoc($q_client);
if(!empty($r['pole_prev'])){
$pole_prev = json_decode(htmlspecialchars_decode($r['pole_prev']));
// var_dump($pole_prev);
foreach($pole_prev as $pole => $value_pole){
switch ($pole){
case 'tasks':{
if(!$is_open_step){
$name = '';
if($client['who_work'] > 0){
foreach($value_pole as $vp){
if(!empty($vp->type)){
$set = " SET client_id = {$clientId}";
if(!empty($vp->name)){
$name = $vp->name;
} else if ($vp->type == 'even'){
$name = "Мероприятие";
}
$date_time = date('Y-m-d H:i:s');
if(!empty($vp->time)){
$date_time = date('Y-m-d H:i:s', strtotime($vp->time));
}
$set .= ", user_id = {$client['who_work']}, type = '{$vp->type}', comment='{$vp->comment}', schedule_date = '{$date_time}', from_id = {$client['who_work']}, open_step=1";
if(!empty($name)){
$set .= ", name='{$name}'";
}
$insert_ev = "INSERT INTO user_client_events {$set}";
// echo $insert_ev;
$this->db->query($insert_ev);
}
}
}
}
break;
}
case 'tasks_all':{
if(!$is_open_step){
$name = '';
if($client['who_work'] > 0){
foreach($value_pole as $vp){
if(!empty($vp->type)){
$set = " SET client_id = {$clientId}";
if(!empty($vp->name)){
$name = $vp->name;
} else if ($vp->type == 'even'){
$name = "Мероприятие";
}
$date_time = date('Y-m-d H:i:s');
if(!empty($vp->time)){
$date_time = date('Y-m-d H:i:s', strtotime($vp->time));
}
$set .= ", user_id = {$client['who_work']}, type = '{$vp->type}', comment='{$vp->comment}', schedule_date = '{$date_time}', from_id = {$client['who_work']}, open_step=1";
if(!empty($name)){
$set .= ", name='{$name}'";
}
$insert_ev = "INSERT INTO user_client_events {$set}";
// echo $insert_ev;
$this->db->query($insert_ev);
}
}
}
}
break;
}
case 'comment':{
if(!$is_open_step){
if(!empty($value_pole)){
// $set .= ", user_id = {$req['who_work']}, type = '{$vp->type}', comment='{$vp->comment}', schedule_date = '{$date_time}', from_id = {$req['who_work']}, open_step=1";
$insert_ev = "INSERT INTO user_client_events SET client_id = {$clientId}, user_id = {$client['who_work']}, type = 'comment', comment='{$value_pole}', from_id = {$client['who_work']}, open_step=1";
//echo $insert_ev;
$this->db->query($insert_ev);
}
}
break;
}
case 'new_who_work':{
//Добавляем событие передачи
if(!$is_open_step){
if($pole_prev->is_new_who_work != 0 && !empty($value_pole) && (int)$value_pole != 0){
$confirm = 0;
if($client['who_work'] == $value_pole) {
$confirm = 1;
}
if ($confirm == 0) {
$sql_client_up = "UPDATE clients SET who_work={$value_pole}, confirm=0 WHERE id = {$clientId}";
$this->db->query($sql_client_up);
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `dop_text`, `event`) VALUES ({$client['who_work']}, {$clientId}, {$value_pole}, '(автоматическая передача при переходе на этап)', 'transmitted')";
$this->db->query($sql_conf);
}
}
}
break;
}
case 'new_doers':{
if(!$is_open_step)
{
if($pole_prev->is_new_doers > 0){
if(!empty($value_pole)){
$doers = array();
$doers_confirm = $client['doers_confirm'];
//$doer_clients = $req['doer_clients'];
if(!empty($client['doers'])){
$doers = json_decode(htmlspecialchars_decode($client['doers']), true);
}
foreach($value_pole as $doer_id){
if(!isset($doers[$doer_id]) && $doer_id != $client['who_work']){
$doers_confirm = 0;
$doers[$doer_id] = 0;
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `dop_text`, `event`) VALUES ({$client['who_work']}, {$clientId}, {$doer_id}, '(автоматически при переходе на этап)','transmitted_parallel')";
$this->db->query($sql_conf);
}
}
if(!empty($doers)){
$sql_up_doer = "UPDATE clients SET doers_confirm = {$doers_confirm}, doers = '". clearInputElement(json_encode($doers))."' WHERE id = ".$clientId;
$this->db->query($sql_up_doer);
}
}
}
}
break;
}
case 'files_attach': {
if(!$is_open_step){
if(!empty($value_pole)){
foreach($value_pole as $vp){
$sql_file = "SELECT * FROM files_steps_funnel_prev WHERE id = {$vp->id}";
$q_file = $this->db->query($sql_file);
while($r_file = $this->db->fetch_assoc($q_file)){
$patch_new = $_SERVER['DOCUMENT_ROOT']."/upload/clients/".$clientId;
//echo $patch_new;
if(!file_exists($patch_new)){
mkdir($patch_new, 0777);
}
$patch = $_SERVER['DOCUMENT_ROOT']."/upload/funnels/prev_steps/".$r_file['funnel_id'];
$name = $r_file['guid'].'.'.$r_file['type'];
// Источник может быть только в Селектеле — локальную копию удаляет
// cron clearFunnelPrevStepFilesExistsInSelectel.php после заливки в облако.
$source_local = $patch."/".$name;
$source_cdn = "https://uf.joywork.ru/upload/funnels/prev_steps/".$r_file['funnel_id']."/".$name;
$source_content = false;
if (file_exists($source_local)) {
$source_content = @file_get_contents($source_local);
} else {
// Один HTTP-запрос вместо HEAD+GET. При 404/timeout — false.
$ctx = stream_context_create(['http' => ['timeout' => 15]]);
$source_content = @file_get_contents($source_cdn, false, $ctx);
if ($source_content === '') {
$source_content = false;
}
}
if ($source_content !== false) {
$name_new = md5(time().$name);
@file_put_contents($patch_new."/".$name_new.".".$r_file['type'], $source_content);
//отпарвляем файл в Селектел (токен получаем один раз на все файлы этапа)
if (empty($token)) {
$token = SelectelApi::getNewToken();
}
$contType = "application/octet-stream";
$type = $r_file['type'];
if ($type) {
$type = strtolower($type);
}
if ($type === "doc") {
$contType = "application/msword";
}
if ($type === "docx") {
$contType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
}
if ($type === "xls") {
$contType = "application/vnd.ms-excel";
}
if ($type === "xlsx") {
$contType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
}
if ($type === "pdf") {
$contType = "application/pdf";
}
if ($type === "jpeg" || $type === "jpg") {
$contType = "image/jpeg";
}
if ($type === "gif") {
$contType = "image/gif";
}
if ($type === "png") {
$contType = "image/png";
}
if ($type === "mp3") {
$contType = "audio/mpeg";
}
if ($type === "zip") {
$contType = "application/zip";
}
if ($type === "rar") {
$contType = "application/vnd.rar";
}
$new_path = "/upload/clients/". $clientId . "/" . $name_new . '.' . $type;
$r = SelectelApi::uploadUserFile($token, $patch_new."/".$name_new.".".$r_file['type'], $new_path, $contType);
$sql_event_file = "INSERT INTO user_client_events SET client_id = {$clientId}, user_id = {$client['who_work']}, type = 'file', comment = '{$vp->comment}', from_id = {$client['who_work']}, open_step=1";
$this->db->query($sql_event_file);
$event_id = $this->db->insert_id();
$sql_in_file = "INSERT INTO clients_files (guid, client_id, type, name, event_id)
VALUES ('{$name_new}', '{$clientId}', '{$r_file['type']}', '{$r_file['name']}', '{$event_id}')";
$this->db->query($sql_in_file);
$client_file_id = $this->db->insert_id();
if(!empty($vp->name)){
$sql = "INSERT INTO names_client_files SET name = '{$vp->name}'";
$this->db->query($sql);
$id_name = $this->db->insert_id();
$sql = "UPDATE `clients_files` SET `name_id` = {$id_name} WHERE `id` = {$client_file_id}";
$this->db->query($sql);
}
} else {
error_log("prev_step_event(client={$clientId}): files_attach source missing local={$source_local} cdn={$source_cdn}");
}
}
}
}
}
break;
}
case 'list_users_select':{
if($pole_prev->is_mes > 0){
if(!empty($value_pole)){
$tempid = 0;
$users_mes = $value_pole;
$userId = (int)$_SESSION['id'];
$who_work = 0;
$user1 = $this->db->fetch_assoc($this->db->query("SELECT * FROM users WHERE id = {$userId}"));
$post = "Сотрудник";
if ($user1['agency'] == 1) {
$post = "Агенство";
} else if ($user1['manager'] == 1) {
$post = "Менеджер";
}
$text = "".$post . " " . trim($user1['last_name'] . ' ' . $user1['first_name'] . ' ' . $user1['middle_name'])."
перевел(а) клиента на этап «".$r['name']."» ";
if($is_open_step){
$text .= "(этап открыт повторно) ";
}
$who_work = $req['who_work'];
$text .= "
Клиент: ".$client['phone'].' '.$client['fio']." ID: ".$client['id']."
";
}
$text = htmlspecialchars($text);
$userMes = array();
$send = 0;
if($close){
$tempid = time();
$send = 1;
}
// $user_id_mes = false;
foreach ($users_mes as $key => $user_id_mes_) {
unset($user_id_mes);
if ($users_mes[$key] === 'manager') {
$managerWhoWork = $this->db->fetch_assoc($this->db->query("SELECT * FROM users WHERE id = {$who_work}"));
$user_id_mes = $managerWhoWork['id_manager'];
} else if($users_mes[$key] == 0){
$user_id_mes = $who_work;
} else {
$user_id_mes = $user_id_mes_;
}
if(!in_array($user_id_mes, $userMes) && $user_id_mes != $_SESSION['id']){
$sqlMesIn = "INSERT INTO step_notify_closure SET user_id = {$user_id_mes}, from_id={$userId}, step_id={$stepId}, text='{$text}', send={$send}, temp_id={$tempid}";
$this->db->query($sqlMesIn);
$userMes[] = $user_id_mes;
}
}
}
break;
}
case 'adjacent_funnels':{
if(!$is_open_step){
if($pole_prev->is_adjacent_funnels > 0){
if(!empty($value_pole)){
$adjacent_funnels=$value_pole;
foreach($adjacent_funnels as $funnel){
$sql_a_f = "SELECT id FROM adjacent_funnels WHERE funnel_id = {$funnel} AND client_id = {$clientId}";
$row_a_f = $this->db->num_rows($this->db->query($sql_a_f));
if($row_a_f == 0){
$this->db->query("INSERT INTO adjacent_funnels (funnel_id, client_id, parent_funnel_id, parent_step_id) VALUES ({$funnel}, {$clientId}, {$client['funnel_id']}, {$client['step_id']})");
$comment = "Клиент переведен в смежную воронку ";
$sql_funnel = "SELECT name FROM funnel WHERE id = {$funnel}";
$nameFunnel = "«".$this->db->fetch_assoc($this->db->query($sql_funnel))['name']."»";
$comment = $comment.' '.$nameFunnel;
$sql_event_adj = "INSERT INTO user_client_events SET client_id = {$clientId}, user_id = {$client['who_work']}, type = 'comment', comment = '{$comment}', from_id = {$client['who_work']}, open_step=1";
$this->db->query($sql_event_adj);
}
}
}
}
}
break;
}
}
}
}
}
//Дополнительные поля
private function add_client_info($client_id, $post){
$sql = "SELECT id FROM clients_dop_info WHERE client_id = {$client_id}";
$q = mysql_query($sql);
$persone_no_ip = 0;
if($post['persone_no_ip']){
$persone_no_ip = 1;
}
if(mysql_num_rows($q) > 0){
$sql_in = "UPDATE clients_dop_info SET
persone_no_ip = {$persone_no_ip},
passport = '{$post['passport']}',
date_of_issue_passport = '{$post['date_of_issue_passport']}',
passport_issued_by = '{$post['passport_issued_by']}',
birthplace = '{$post['birthplace']}',
registration_address = '{$post['registration_address']}',
post_address = '{$post['post_address']}',
persone_snils = '{$post['persone_snils']}',
persone_nationality = '{$post['persone_nationality']}',
persone_gender = '{$post['persone_gender']}',
persone_full_name = '{$post['persone_full_name']}',
persone_short_name = '{$post['persone_short_name']}',
persone_ogrn = '{$post['persone_ogrn']}',
persone_inn = '{$post['persone_inn']}',
persone_kpp = '{$post['persone_kpp']}',
persone_legal_address = '{$post['persone_legal_address']}',
persone_fact_address = '{$post['persone_fact_address']}',
persone_info_bank = '{$post['persone_info_bank']}',
persone_name_bank = '{$post['persone_name_bank']}',
persone_bik_bank = '{$post['persone_bik_bank']}',
persone_rs_bank = '{$post['persone_rs_bank']}',
persone_kors_bank = '{$post['persone_kors_bank']}',
persone_fio_rukovod = '{$post['persone_fio_rukovod']}',
persone_powers = '{$post['persone_powers']}',
persone_kod_podrazdelenia = '{$post['persone_kod_podrazdelenia']}'
WHERE client_id = {$client_id}
";
} else {
$sql_in = "INSERT INTO clients_dop_info SET
client_id = {$client_id},
persone_no_ip = {$persone_no_ip},
passport = '{$post['passport']}',
date_of_issue_passport = '{$post['date_of_issue_passport']}',
passport_issued_by = '{$post['passport_issued_by']}',
birthplace = '{$post['birthplace']}',
registration_address = '{$post['registration_address']}',
post_address = '{$post['post_address']}',
persone_snils = '{$post['persone_snils']}',
persone_nationality = '{$post['persone_nationality']}',
persone_gender = '{$post['persone_gender']}',
persone_full_name = '{$post['persone_full_name']}',
persone_short_name = '{$post['persone_short_name']}',
persone_ogrn = '{$post['persone_ogrn']}',
persone_inn = '{$post['persone_inn']}',
persone_kpp = '{$post['persone_kpp']}',
persone_legal_address = '{$post['persone_legal_address']}',
persone_fact_address = '{$post['persone_fact_address']}',
persone_name_bank = '{$post['persone_name_bank']}',
persone_info_bank = '{$post['persone_info_bank']}',
persone_bik_bank = '{$post['persone_bik_bank']}',
persone_rs_bank = '{$post['persone_rs_bank']}',
persone_kors_bank = '{$post['persone_kors_bank']}',
persone_fio_rukovod = '{$post['persone_fio_rukovod']}',
persone_powers = '{$post['persone_powers']}',
persone_kod_podrazdelenia = '{$post['persone_kod_podrazdelenia']}'";
}
mysql_query($sql_in);
}
//Объединение клиентов
public function union_client($id, $ids, $user_id, $is_union_req){
if($id > 0 && !empty($ids) && $user_id > 0){
$phone_arr = [];
$sql = "SELECT * FROM clients WHERE id = {$id}";
$q = $this->db->query($sql);
$r = $this->db->fetch_assoc($q);
if(!empty($r['phone2'])){
$phone_arr = json_decode(html_entity_decode($r['phone2']), ENT_QUOTES);
}
$reqs = array();
$sql_req = "SELECT * FROM requisitions WHERE client_id = {$id} AND deleted=0 and cancel=0";
$q_req = $this->db->query($sql_req);
while($r_req = $this->db->fetch_assoc($q_req)){
$reqs[] = $r_req;
}
$phones = [];
$text = "Объединен с клиентами: ";
$sql_clients = "SELECT * FROM clients WHERE id in (".implode(',', $ids).")";
$q_clients = $this->db->query($sql_clients);
while($r_clients = $this->db->fetch_assoc($q_clients)){
if($text != "Объединен с клиентами: ") $text .= ", ";
$text .= $r_clients['phone'];
$phone_arr[] = $r_clients['phone'];
$sql_phone2 = "SELECT * FROM clients_phone2 WHERE client_id = {$r_clients['id']}";
$q_phone2 = $this->db->query($sql_phone2);
while($r_phone2 = $this->db->fetch_assoc($q_phone2)){
$phone_arr[] = $r_phone2['phone'];
}
$sql_update_event = "UPDATE user_client_events SET client_id = {$id} WHERE client_id = {$r_clients['id']}";
//echo $sql_update_event;
$this->db->query($sql_update_event);
if($is_union_req > 0){
$sql_req_dop = "SELECT * FROM requisitions WHERE client_id = {$r_clients['id']} AND deleted=0 and cancel=0";
$q_req_dop = $this->db->query($sql_req_dop);
while($r_req_dop = $this->db->fetch_assoc($q_req_dop)){
$is_union_req = false;
foreach($reqs as $req){
// var_dump($r_req_dop['type_id'] == $req['type_id'] && $r_req_dop['who_work'] == $req['who_work']);
if($r_req_dop['type_id'] == $req['type_id'] && $r_req_dop['who_work'] == $req['who_work']){
$is_union_req = true;
$sql_update_event_req = "UPDATE user_client_events SET req_id = {$req['id']} WHERE req_id = {$r_req_dop['id']}";
$this->db->query($sql_update_event_req);
$sql_cancel = "UPDATE requisitions SET cancel = 1 WHERE id = {$r_req_dop['id']}";
$this->db->query($sql_cancel);
}
}
if(!$is_union_req){
$sql_update_req = "UPDATE requisitions SET client_id = {$id} WHERE client_id = {$r_clients['id']}";
//echo $sql_update_req;
$this->db->query($sql_update_req);
}
}
} else {
$sql_update_req = "UPDATE requisitions SET client_id = {$id} WHERE client_id = {$r_clients['id']}";
//echo $sql_update_req;
$this->db->query($sql_update_req);
}
//if($_SESSION['id'] == 6635){
$sql_update_client_obj = "UPDATE client_objects SET client_id = {$id} WHERE client_id = {$r_clients['id']}";
$this->db->query($sql_update_client_obj);
//}
$this->del($r_clients['id']);
}
if(!empty($phone_arr)){
$phones = htmlentities(json_encode($phone_arr));
$sql_up = "UPDATE clients SET phone2 = '{$phones}' WHERE id = {$id}";
$this->db->query($sql_up);
$this->update_phone2($id, null, $phone_arr);
}
$sql_ev = "INSERT INTO events_clients (user_id, client_id, `event`, dop_text, `read`) VALUES ({$user_id}, {$id}, 'update','{$text}', 1)";
//echo $sql_ev;
$this->db->query($sql_ev);
}
}
}
?>