2026-05-22 20:21:54 +02:00
< ? php
class Clients {
public $activities ;
public $errors = [];
private $db = null ;
private $steps = array (
0 => array ( 'id' => 1 , 'name' => 'Новый' , 'title' => 'Новый клиент' , 'classF' => 'stage-new' ),
1 => array ( 'id' => 2 , 'name' => 'В работе' , 'title' => 'В работе' , 'classF' => 'stage-work' ),
2 => array ( 'id' => 3 , 'name' => 'Презентация' , 'title' => 'Презентация' , 'classF' => 'stage-offer' ),
3 => array ( 'id' => 4 , 'name' => 'Показ' , 'title' => 'Показ' , 'classF' => 'stage-showing' ),
4 => array ( 'id' => 5 , 'name' => 'Бронь' , 'title' => 'Бронь' , 'classF' => 'stage-reservation' ),
5 => array ( 'id' => 6 , 'name' => 'Подаем на ипотеку' , 'title' => 'Подаем на ипотеку' , 'classF' => 'stage-meet' ),
6 => array ( 'id' => 7 , 'name' => 'Сделка' , 'title' => 'Сделка' , 'classF' => 'stage-deal' ),
7 => array ( 'id' => 8 , 'name' => 'Закрыт' , 'title' => 'Клиент закрыт' , 'classF' => 'stage-end' ),
);
private $params_search = [];
public function __construct ( $db = null ){
if ( $db ){
$this -> db = $db ;
} else {
$pdo = new MysqlPdo ( hst , ndb , user , pass );
$sql = " SET NAMES 'utf8' " ;
$pdo -> query ( $sql );
$this -> db = $pdo ;
}
}
public function set_params_search ( $params ){
$this -> params_search = $params ;
}
public function get ( $id )
{
$this -> errors = [];
$sql = " SELECT `clients`.*,
`credit` . `bancks_credit` ,
`credit` . `summa_credit` ,
`credit` . `komissiya_credit` ,
`credit` . `cel_credit` ,
`credit` . `age_credit` ,
`credit` . `propiska_credit` ,
`credit` . `nagruzka_credit` ,
`credit` . `dohod_credit` ,
`credit` . `dava_ndfl_credit` ,
`credit` . `spravka_credit` ,
`credit` . `phone_credit` ,
`credit` . `podachi_credit` ,
`credit` . `not_own_credit` ,
`credit` . `yes_deduction_credit` ,
`credit` . `overdue_credit` ,
`credit` . `mfo_credit` ,
`credit` . `kvartira_credit` ,
`credit` . `dom_credit` ,
`credit` . `uchastok_credit` ,
`credit` . `car_credit` ,
`credit` . `kol_nagruzka_credit` ,
clients_dop_info . persone_no_ip ,
clients_dop_info . passport ,
clients_dop_info . date_of_issue_passport ,
clients_dop_info . passport_issued_by ,
clients_dop_info . birthplace ,
clients_dop_info . registration_address ,
clients_dop_info . post_address ,
clients_dop_info . persone_snils ,
clients_dop_info . persone_nationality ,
clients_dop_info . persone_gender ,
clients_dop_info . persone_full_name ,
clients_dop_info . persone_short_name ,
clients_dop_info . persone_ogrn ,
clients_dop_info . persone_inn ,
clients_dop_info . persone_kpp ,
clients_dop_info . persone_legal_address ,
clients_dop_info . persone_fact_address ,
clients_dop_info . persone_info_bank ,
clients_dop_info . persone_name_bank ,
clients_dop_info . persone_bik_bank ,
clients_dop_info . persone_rs_bank ,
clients_dop_info . persone_kors_bank ,
clients_dop_info . persone_fio_rukovod ,
clients_dop_info . persone_powers ,
clients_dop_info . persone_kod_podrazdelenia
FROM `clients`
LEFT JOIN `credit` ON `clients` . `id` = `credit` . `client_id`
LEFT JOIN `clients_dop_info` ON `clients` . `id` = `clients_dop_info` . `client_id`
WHERE `clients` . `id` = '$id' " ;
if ( $rez = mysql_query ( $sql )) {
if ( mysql_num_rows ( $rez )) {
$cl = mysql_fetch_assoc ( $rez );
$sql_req = " SELECT `id` FROM `requisitions` WHERE `client_id` = ' $id ' " ;
$q_req = mysql_query ( $sql_req );
$req = '' ;
if ( mysql_num_rows ( $q_req ) > 0 ) {
while ( $r_req = mysql_fetch_assoc ( $q_req )) {
if ( $req != '' )
$req .= ',' ;
$req .= $r_req [ 'id' ];
}
}
$cl [ 'req' ] = $req ;
$objects = array ();
$sql_objects = " SELECT object_id FROM client_objects WHERE client_id = { $id } " ;
$q_objects = mysql_query ( $sql_objects );
while ( $r_objects = mysql_fetch_assoc ( $q_objects )){
$objects [] = ( int ) $r_objects [ 'object_id' ];
}
$cl [ 'objects' ] = '' ;
if ( ! empty ( $objects )){
$cl [ 'objects' ] = json_encode ( $objects );
}
foreach ( $cl as $k => $v ) {
if ( $k == 'birthday' ) {
if ( empty ( $v ) || $v == '0000-00-00' )
$v = '' ;
else
$v = date ( 'd.m.Y' , strtotime ( $v ));
}
$this -> $k = html_entity_decode ( $v );
}
$activities = [];
$sqlAddInfo = " SELECT `activity_id` FROM `clients_activities` WHERE `client_id` = ' $id ' " ;
if ( $rezAddInfo = mysql_query ( $sqlAddInfo )) {
if ( mysql_num_rows ( $rezAddInfo ) > 0 ) {
while ( $row = mysql_fetch_array ( $rezAddInfo )) {
$activities [] = $row [ 'activity_id' ];
}
}
} else {
$this -> errors [] = mysql_error ();
}
$this -> source_see = 1 ;
if ( $cl [ 'source' ] > 0 ){
$sql_source = " SELECT * FROM advertising_sources WHERE id = $cl[source] " ;
//$this->source = $sql_source;
$q_source = mysql_query ( $sql_source );
if ( mysql_num_rows ( $q_source ) > 0 ) {
$r_source = mysql_fetch_assoc ( $q_source );
if ( is_see ( $r_source [ 'is_no_see' ], $r_source [ 'users_no_see' ]) === false ){
$this -> source_see = 0 ;
}
}
}
$this -> activities = json_encode ( $activities );
}
} else {
$this -> errors [] = mysql_error ();
}
if ( count ( $this -> errors ))
return false ;
else
return $this ;
}
public function del ( $id ) {
/* $sql = " SELECT * FROM `clients` WHERE id = " . $id ;
$q = mysql_query ( $sql );
$r = mysql_fetch_assoc ( $q );
$sql_i = " INSERT INTO clients_arhiv (`fio`,
`phone` ,
`email` ,
`birthday` ,
`type` ,
`opis` ,
`id_agent` ,
`date_add` ,
`deleted` ,
`reason` ,
`status` ,
`budget` ,
`summa` ,
`who_work` ,
`confirm` ,
`who_delete` ,
`work_type` ,
`role` ,
`objects` ,
`source` ,
`stage` ,
`hot` ,
`priority` ,
`turn` ,
`turntime` ) VALUES ( '{$r[' fio ']}' ,
'{$r[' phone ']}' ,
'{$r[' email ']}' ,
'{$r[' birthday ']}' ,
'{$r[' type ']}' ,
'{$r[' opis ']}' ,
'{$r[' id_agent ']}' ,
'{$r[' date_add ']}' ,
'{$r[' deleted ']}' ,
'{$r[' reason ']}' ,
'{$r[' status ']}' ,
'{$r[' budget ']}' ,
'{$r[' summa ']}' ,
'{$r[' who_work ']}' ,
'{$r[' confirm ']}' ,
'{$r[' who_delete ']}' ,
'{$r[' work_type ']}' ,
'{$r[' role ']}' ,
'{$r[' objects ']}' ,
'{$r[' source ']}' ,
'{$r[' stage ']}' ,
'{$r[' hot ']}' ,
'{$r[' priority ']}' ,
'{$r[' turn ']}' ,
'{$r[' turntime ']}' ) " ;
// echo $sql_i;
mysql_query ( $sql_i ); */
$sql_del = " UPDATE clients SET cancel = 1, objects='' WHERE id = { $id } " ;
mysql_query ( $sql_del );
$sql = " DELETE FROM client_objects WHERE client_id= $id " ;
$rez = mysql_query ( $sql );
$sql = " DELETE FROM user_client_events WHERE client_id= $id " ;
$rez = mysql_query ( $sql );
$sql = " DELETE FROM clients_phone2 WHERE client_id = { $id } " ;
$rez = mysql_query ( $sql );
//Удаление заявок этого клиента
$pdo = new MysqlPdo ( hst , ndb , user , pass );
$req = new Requisitions ( $pdo );
$req -> cancelReqsClient ( $id );
}
public static function updateFunnel ( $post ) {
$errors = [];
if ( $post [ 'id' ]) {
$funnel = null ;
$sqlSelFun = " select funnel_id from clients WHERE id= $post[id] " ;
if ( ! ( $resSelFun = mysql_query ( $sqlSelFun ))) {
$errors [] = mysql_error ();
} else {
$rowSelFun = mysql_fetch_assoc ( $resSelFun );
$funnel = $rowSelFun [ 'funnel_id' ];
}
if ( isset ( $post [ 'new_funnel_id' ])) {
$newFunnel = ( int ) $post [ 'new_funnel_id' ];
} else {
$newFunnel = 0 ;
}
if ( $funnel != $newFunnel ) {
$funnelName = " Обычные " ;
if ( $newFunnel > 0 ) {
$sqlFunnel = " SELECT name FROM funnel WHERE id = $newFunnel " ;
$resFunnel = mysql_query ( $sqlFunnel );
$phRow = mysql_fetch_assoc ( $resFunnel );
$funnelName = $phRow [ 'name' ];
}
$sql = " UPDATE clients SET funnel_id = ' $newFunnel ', `stage`='1' WHERE id= $post[id] " ;
if ( ! mysql_query ( $sql )) {
$errors [] = mysql_error ();
}
$sqlDeleteOldFunnel = " DELETE FROM clients_funnel_step WHERE client_id = $post[id] " ;
if ( ! mysql_query ( $sqlDeleteOldFunnel )) {
$errors [] = mysql_error ();
}
self :: get_class_etap ( $post [ 'id' ], $newFunnel );
$sql_conf = " INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES ( " . $_SESSION [ 'id' ] . " , " . $post [ 'id' ] . " , '0', 'update', 'Передан в воронку « " . $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 .= " <br> " ;
$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 .= " <br> " ;
$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 = " <p>Клиент с указанной электронной почтой или телефоном уже привязан к агенту $user[fio] !</p> " ;
if ( $need_req_link )
$error .= " <p><a class='double_client_req' href='javascript: { }' data-id=' " . $user [ 'client_id' ] . " '>Добавить новую заявку по данному клиенту?</a></p> " ;
$mstr = mysql_fetch_assoc ( mysql_query ( " SELECT agency, manager, fio FROM users WHERE id= " . $_SESSION [ id ]));
if ( $mstr [ 'agency' ]) $master = " агентством $mstr[fio] " ;
elseif ( $mstr [ 'manager' ]) $master = " менеджером $mstr[fio] " ;
else $master = " агентом $mstr[fio] " ;
$dop_text = " - попытка добавить клиента " . $master ;
if ( $post [ 'source' ]){
$source = mysql_fetch_assoc ( mysql_query ( " SELECT `source` FROM `advertising_sources` WHERE `id` = " . ( int ) $post [ 'source' ]))[ 'source' ];
$dop_text .= " с источника " . $source ;
}
$sql_conf = " INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`) VALUES ( " . $_SESSION [ 'id' ] . " , " . $user [ 'client_id' ] . " , '0', 'double_client', ' " . $dop_text . " ', '1') " ;
mysql_query ( $sql_conf );
}
}
}
}
if ( $error != '' ){
return $error ;
}
if ( ! isset ( $post [ 'stage' ]) || ! $post [ 'stage' ]) {
$post [ 'stage' ] = '1' ;
}
// прошли проверку - добавляем
if ( $post [ 'id' ]) {
$sql_prev = " SELECT `email`, `phone`, `phone2`, `type`, `work_type`, `role`, `opis`, `objects`, `birthday`, `source`, `employee_id`, `budget`, `fio` FROM `clients` WHERE id= $post[id] " ;
$q_prev = mysql_query ( $sql_prev );
$r_prev = mysql_fetch_assoc ( $q_prev );
$opis = mysql_real_escape_string ( $post [ 'opis' ]);
// hide_client_contacts: жёсткая защита прямо перед UPDATE.
// Если у юзера скрыты контакты, ИЛИ если в $post проскочила маска (есть `*` либо
// <4 цифр в телефоне, либо `*` в email) — берём из $r_prev (только что прочитанные
// оригинальные значения). Это последний рубеж: даже если выше защиты не сработали,
// в БД попадёт оригинал.
$isHideUser = function_exists ( 'should_hide_contacts_for_current_user' ) && should_hide_contacts_for_current_user ();
$postPhoneStr = isset ( $post [ 'phone' ]) ? ( string ) $post [ 'phone' ] : '' ;
$postEmailStr = isset ( $post [ 'email' ]) ? ( string ) $post [ 'email' ] : '' ;
$phoneLooksMasked = ( strpos ( $postPhoneStr , '*' ) !== false ) || ( preg_match_all ( '/\d/' , $postPhoneStr ) < 4 );
$emailLooksMasked = ( strpos ( $postEmailStr , '*' ) !== false );
if ( $isHideUser || $phoneLooksMasked ) {
$post [ 'phone' ] = $r_prev [ 'phone' ];
}
if ( $isHideUser || $emailLooksMasked ) {
$post [ 'email' ] = $r_prev [ 'email' ];
}
if ( $isHideUser ) {
$post [ 'phone2' ] = $r_prev [ 'phone2' ];
}
$sql = " UPDATE clients SET fio=' $post[fio] ', email=' " . trim ( $post [ 'email' ]) . " ', phone=' $post[phone] ', phone2=' $post[phone2] ', `type`=' $post[type] ', work_type=' $workType ', opis=' $opis ', status=' $post[status] ', budget=' $post[budget] ', who_work=' $post[who_work] ', confirm=' $post[confirm] ', `role`=' $post[role] ', `objects`=' $post[objects] ', `source`=' $post[source] ', `employee_id`=' $post[employee] ', `birthday`=' $post[birthday] ', `stage`=' $post[stage] ', `hot`=' $post[hot] ', `priority`=' $post[priority] ' WHERE id= $post[id] " ;
self :: update_objects ( $post [ 'id' ], $post [ 'objects' ]);
self :: update_phone2 ( $post [ 'id' ], $post [ 'phone2' ]);
/* if ( empty ( $post [ objects ]) || $post [ objects ] == 'null' ){
$sql = " UPDATE clients SET fio=' $post[fio] ', email=' " . trim ( $post [ 'email' ]) . " ', phone=' $post[phone] ', phone2=' $post[phone2] ', `type`=' $post[type] ', work_type=' $workType ', opis=' $post[opis] ', status=' $post[status] ', budget=' $post[budget] ', who_work=' $post[who_work] ', confirm=' $post[confirm] ', `role`=' $post[role] ', `source`=' $post[source] ', `birthday`=' $post[birthday] ', `stage`=' $post[stage] ', `hot`=' $post[hot] ' WHERE id= $post[id] " ;
} */
//Проверяем запись в ипотеке
$sql_i = " SELECT `id` from `ipoteka` WHERE `client_id` = " . $post [ 'id' ];
$q_i = mysql_query ( $sql_i );
if ( mysql_num_rows ( $q_i ) > 0 ){
$r_i = mysql_fetch_assoc ( $q_i );
$sql_u_i = " UPDATE `ipoteka` SET "
. " `client_id`= $post[id] , "
. " `rynok`=' $post[rynok] ', "
. " `yes_object`= " . ( int ) $post [ yes_object ] . " , "
. " `jc`=' $post[jc] ', "
. " `ante_pr`=' $post[ante_pr] ', "
. " `ante_rub`=' $post[ante_rub] ', "
. " `comment`=' $post[comment_ipoteka] ', "
. " `yes_doc`= " . ( int ) $post [ yes_doc ] . " , "
. " `number_doc`=' $post[number_doc] ', "
. " `date_doc`=' $post[date_doc] ', "
. " `doc_komis_pr`=' $post[doc_komis_pr] ', "
. " `doc_komis`=' $post[doc_komis] ', "
. " `yes_bank`= " . ( int ) $post [ yes_bank ] . " , "
. " `date_bank`=' $post[date_bank] ', "
. " `employee_bank`=' $post[employee_bank] ', "
. " `banks`=' $post[banks] ', "
. " `yes_resolve`= " . ( int ) $post [ yes_resolve ] . " , "
. " `resolve`=' $post[resolve] ', "
. " `comment_resolve`=' $post[comment_resolve] ', "
. " `yes_issue`= " . ( int ) $post [ yes_issue ] . " , "
. " `bank_issue`=' $post[bank_issue] ', "
. " `rate_issue`=' $post[rate_issue] ', "
. " `term_issue`=' $post[term_issue] ', "
. " `yes_brak`=' $post[yes_brak] ', "
. " `relationship`=' $post[relationship] ', "
. " `summa_object`=' $post[summa_object] ', "
. " `age`=' $post[age] ', "
. " `co_borrower_fio`=' $post[co_borrower_fio] ', "
. " `co_borrower_age`=' $post[co_borrower_age] ', "
. " `contacts`=' $post[contacts] ', "
. " `co_borrower_dohod`=' $post[co_borrower_dohod] ', "
. " `income`=' $post[income] ', "
. " `credit_load`=' $post[credit_load] ' "
. " WHERE `id` = " . $r_i [ 'id' ];
//echo $sql_u_i;
mysql_query ( $sql_u_i );
} else {
$sql_ipoteka = " INSERT INTO "
. " `ipoteka` SET "
. " `client_id`= $post[id] , "
. " `rynok`=' $post[rynok] ', "
. " `yes_object`= " . ( int ) $post [ yes_object ] . " , "
. " `jc`=' $post[jc] ', "
. " `ante_pr`=' $post[ante_pr] ', "
. " `ante_rub`=' $post[ante_rub] ', "
. " `comment`=' $post[comment_ipoteka] ', "
. " `yes_doc`= " . ( int ) $post [ yes_doc ] . " , "
. " `number_doc`=' $post[number_doc] ', "
. " `date_doc`=' $post[date_doc] ', "
. " `doc_komis_pr`=' $post[doc_komis_pr] ', "
. " `doc_komis`=' $post[doc_komis] ', "
. " `yes_bank`= " . ( int ) $post [ yes_bank ] . " , "
. " `date_bank`=' $post[date_bank] ', "
. " `employee_bank`=' $post[employee_bank] ', "
. " `banks`=' $post[banks] ', "
. " `yes_resolve`= " . ( int ) $post [ yes_resolve ] . " , "
. " `resolve`=' $post[resolve] ', "
. " `comment_resolve`=' $post[comment_resolve] ', "
. " `yes_issue`= " . ( int ) $post [ yes_issue ] . " , "
. " `bank_issue`=' $post[bank_issue] ', "
. " `rate_issue`=' $post[rate_issue] ', "
. " `term_issue`=' $post[term_issue] ', "
. " `yes_brak`=' $post[yes_brak] ', "
. " `relationship`=' $post[relationship] ', "
. " `summa_object`=' $post[summa_object] ', "
. " `age`=' $post[age] ', "
. " `co_borrower_fio`=' $post[co_borrower_fio] ', "
. " `co_borrower_age`=' $post[co_borrower_age] ', "
. " `contacts`=' $post[contacts] ', "
. " `co_borrower_dohod`=' $post[co_borrower_dohod] ', "
. " `income`=' $post[income] ', "
. " `credit_load`=' $post[credit_load] ' " ;
mysql_query ( $sql_ipoteka );
}
//Проверяем информацию о кредите
$sql_c = " SELECT `id` FROM `credit` WHERE client_id = " . $post [ 'id' ];
$q_c = mysql_query ( $sql_c );
if ( mysql_num_rows ( $q_c ) > 0 ){
$sql_u_c = " UPDATE `credit`
SET
`bancks_credit` = '$post[bancks_credit]' ,
`summa_credit` = '$post[summa_credit]' ,
`komissiya_credit` = '$post[komissiya_credit]' ,
`cel_credit` = '$post[cel_credit]' ,
`age_credit` = '$post[age_credit]' ,
`propiska_credit` = '$post[propiska_credit]' ,
`nagruzka_credit` = '$post[nagruzka_credit]' ,
`dohod_credit` = '$post[dohod_credit]' ,
`dava_ndfl_credit` = '$post[dava_ndfl_credit]' ,
`spravka_credit` = '$post[spravka_credit]' ,
`phone_credit` = '$post[phone_credit]' ,
`podachi_credit` = '$post[podachi_credit]' ,
`not_own_credit` = '$post[not_own_credit]' ,
`yes_deduction_credit` = '$post[yes_deduction_credit]' ,
`overdue_credit` = '$post[overdue_credit]' ,
`mfo_credit` = '$post[mfo_credit]' ,
`kvartira_credit` = '$post[kvartira_credit]' ,
`dom_credit` = '$post[dom_credit]' ,
`uchastok_credit` = '$post[uchastok_credit]' ,
`car_credit` = '$post[car_credit]' ,
`kol_nagruzka_credit` = '$post[kol_nagruzka_credit]'
WHERE `client_id` = " . $post['id'] ;
mysql_query ( $sql_u_c );
} else {
/* Инфа по кредитам */
$sql_credit = " INSERT INTO `credit`
( `client_id` ,
`bancks_credit` ,
`summa_credit` ,
`komissiya_credit` ,
`cel_credit` ,
`age_credit` ,
`propiska_credit` ,
`nagruzka_credit` ,
`dohod_credit` ,
`dava_ndfl_credit` ,
`spravka_credit` ,
`phone_credit` ,
`podachi_credit` ,
`not_own_credit` ,
`yes_deduction_credit` ,
`overdue_credit` ,
`mfo_credit` ,
`kvartira_credit` ,
`dom_credit` ,
`uchastok_credit` ,
`car_credit` ,
`kol_nagruzka_credit` )
VALUES
({ $post [ 'id' ]},
'$post[bancks_credit]' ,
'$post[summa_credit]' ,
'$post[komissiya_credit]' ,
'$post[cel_credit]' ,
'$post[age_credit]' ,
'$post[propiska_credit]' ,
'$post[nagruzka_credit]' ,
'$post[dohod_credit]' ,
'$post[dava_ndfl_credit]' ,
'$post[spravka_credit]' ,
'$post[phone_credit]' ,
'$post[podachi_credit]' ,
'$post[not_own_credit]' ,
'$post[yes_deduction_credit]' ,
'$post[overdue_credit]' ,
'$post[mfo_credit]' ,
'$post[kvartira_credit]' ,
'$post[dom_credit]' ,
'$post[uchastok_credit]' ,
'$post[car_credit]' ,
'$post[kol_nagruzka_credit]'
);
" ;
//echo $sql_credit;
mysql_query ( $sql_credit );
}
if ( $post [ 'who_work' ] != $_SESSION [ 'id' ] && $post [ 'confirm' ] == 0 ){
// Получаем ID клиента и нового владельца
$client_id_check_event = intval ( $post [ 'id' ]);
$new_owner_id_check_event = intval ( $post [ 'who_work' ]);
if ( $client_id_check_event > 0 && $new_owner_id_check_event > 0 ) {
// Помечаем как прочитанные все события по этому клиенту, кроме нового владельца
$sql_clear = " UPDATE events_clients SET `read` = 1, date_update = NOW() WHERE client_id = $client_id_check_event AND event = 'transmitted' AND user_id != $new_owner_id_check_event " ;
mysql_query ( $sql_clear );
}
//Добавляем событие передачи
$sql_conf = " INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`) VALUES ( " . $_SESSION [ 'id' ] . " , " . $post [ 'id' ] . " , " . $post [ 'who_work' ] . " , 'transmitted') " ;
mysql_query ( $sql_conf );
if ( $post [ 'who_work' ] == 0 ){ //Если передача в общие то восстанавливаем клиента
mysql_query ( " UPDATE clients SET deleted=0 WHERE id= { $post [ 'id' ] } " );
$dop_text_ev = " Переведен в общие " ;
$sql_ev = " INSERT INTO events_clients (client_id, event, dop_text, user_id) VALUES ( { $post [ 'id' ] } , 'update', ' { $dop_text_ev } ', { $_SESSION [ 'id' ] } ) " ;
mysql_query ( $sql_ev );
}
$agent = new User ;
$agent -> get ( $_SESSION [ 'id' ]);
if ((( int ) $agent -> agencyId == 8353 || ( int ) $agent -> agencyId == 16001 ) && $post [ who_work ] != 0 ){
$sql = " UPDATE clients SET confirm=1, who_work= $post[who_work] WHERE id= $post[id] " ;
mysql_query ( $sql );
$sql = " UPDATE user_client_events SET user_id= $post[who_work] WHERE client_id= $post[id] " ;
mysql_query ( $sql );
// if(isset($_GET['event'])){
$sql = " UPDATE `events_clients` set `read` = 1, date_update=' " . date ( 'Y-m-d H:i:s' ) . " ' WHERE client_id= $post[id] " ;
// echo $sql;
mysql_query ( $sql );
// }
$sql = " INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES (' " . $post [ who_work ] . " ', ' " . $post [ id ] . " ', ' " . $post [ who_work ] . " ', 'accepted', '1') " ;
mysql_query ( $sql );
$sqlUser = " SELECT `agency_name`, `last_name`, `middle_name`, `phone` FROM `users` where id= " . $post [ who_work ];
$qUser = mysql_query ( $sqlUser );
$rUser = mysql_fetch_assoc ( $qUser );
$sobstv = trim ( $rUser [ 'last_name' ] . ' ' . $rUser [ 'first_name' ] . ' ' . $rUser [ 'middle_name' ]);
if ( $rUser [ 'agency' ]) {
$sobstv = $sobstv . " , агентство " . $rUser [ 'agency_name' ];
} else {
$agency = new User ;
$agency -> get ( $post [ who_work ]);
if ( isset ( $agency -> agencyName )) {
$sobstv = trim ( $rUser [ 'last_name' ] . ' ' . $rUser [ 'first_name' ] . ' ' . $rUser [ 'middle_name' ]) . " , агентство " . $agency -> agencyName ;
} else {
$sobstv = trim ( $rUser [ 'last_name' ] . ' ' . $rUser [ 'first_name' ] . ' ' . $rUser [ 'middle_name' ]);
}
}
$num_search = num_search ( $rUser [ 'phone' ]);
$sql_confirm_obj = " SELECT * FROM client_confirm_objects WHERE client_id = $post[id] AND status = 0 " ;
$q_confirm_obj = mysql_query ( $sql_confirm_obj );
$is_confirm_obj = false ;
if ( mysql_num_rows ( $q_confirm_obj ) > 0 ){
$r_confirm_obj = mysql_fetch_assoc ( $q_confirm_obj );
$is_confirm_obj = ( bool ) $r_confirm_obj [ 'confirm_objects' ];
}
if ( $is_confirm_obj ){
$db_sphinx = new MysqlPdo ( hstsph2 , null , null , null , true , '9306' );
//Передача объекта
$sql_client = " SELECT * FROM `client_objects` WHERE client_id = $post[id] " ;
$q_client = mysql_query ( $sql_client );
while ( $object = mysql_fetch_assoc ( $q_client )){
$sql_up = " UPDATE objects SET id_add_user = ' " . $post [ who_work ] . " ', phone=' " . $rUser [ 'phone' ] . " ', sobstv=' " . $sobstv . " ' WHERE id = " . $object [ 'object_id' ];
//echo $sql_up;
mysql_query ( $sql_up );
// перенос Зипал
$sql = " UPDATE zipal_objects SET user_id= $post[who_work] , send_to_update=1 WHERE object_id= { $object [ 'object_id' ] } " ;
mysql_query ( $sql );
$sqlPack = " UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id= { $object [ 'object_id' ] } " ;
mysql_query ( $sqlPack );
$sql_sph = " UPDATE objects SET id_add_user = { $_SESSION [ 'id' ] } WHERE id = " . $object [ 'object_id' ];
$db_sphinx -> query ( $sql_sph );
}
}
mysql_query ( " UPDATE client_confirm_objects SET status = 1 WHERE client_id = $post[id] AND status = 0 " );
}
} else {
if ( $post [ who_work ] == $_SESSION [ id ]){
$agent = new User ;
$agent -> get ( $_SESSION [ 'id' ]);
if ((( int ) $agent -> agencyId == 8353 || ( int ) $agent -> agencyId == 16001 ) && $post [ who_work ] != 0 ){
$sqlUser = " SELECT `agency_name`, `first_name`, `last_name`, `middle_name`, `phone` FROM `users` where id= " . $post [ who_work ];
$qUser = mysql_query ( $sqlUser );
$rUser = mysql_fetch_assoc ( $qUser );
$sobstv = trim ( $rUser [ 'last_name' ] . ' ' . $rUser [ 'first_name' ] . ' ' . $rUser [ 'middle_name' ]);
if ( $rUser [ 'agency' ]) {
$sobstv = $sobstv . " , агентство " . $rUser [ 'agency_name' ];
} else {
$agency = new User ;
$agency -> get ( $post [ who_work ]);
if ( isset ( $agency -> agencyName )) {
$sobstv = trim ( $rUser [ 'last_name' ] . ' ' . $rUser [ 'first_name' ] . ' ' . $rUser [ 'middle_name' ]) . " , агентство " . $agency -> agencyName ;
} else {
$sobstv = trim ( $rUser [ 'last_name' ] . ' ' . $rUser [ 'first_name' ] . ' ' . $rUser [ 'middle_name' ]);
}
}
$num_search = num_search ( $rUser [ 'phone' ]);
//Передача объекта
$sql_confirm_obj = " SELECT * FROM client_confirm_objects WHERE client_id = $post[id] AND status = 0 " ;
$q_confirm_obj = mysql_query ( $sql_confirm_obj );
$is_confirm_obj = false ;
if ( mysql_num_rows ( $q_confirm_obj ) > 0 ){
$r_confirm_obj = mysql_fetch_assoc ( $q_confirm_obj );
$is_confirm_obj = ( bool ) $r_confirm_obj [ 'confirm_objects' ];
}
if ( $is_confirm_obj ){
$db_sphinx = new MysqlPdo ( hstsph2 , null , null , null , true , '9306' );
$sql_client = " SELECT * FROM `client_objects` WHERE client_id = $post[id] " ;
$q_client = mysql_query ( $sql_client );
while ( $object = mysql_fetch_assoc ( $q_client )){
$sql_up = " UPDATE objects SET id_add_user = ' " . $post [ who_work ] . " ', phone=' " . $rUser [ 'phone' ] . " ', sobstv=' " . $sobstv . " ' WHERE id = " . $object [ 'object_id' ];
//echo $sql_up;
mysql_query ( $sql_up );
// перенос Зипал
$sql = " UPDATE zipal_objects SET user_id= $post[who_work] , send_to_update=1 WHERE object_id= { $object [ 'object_id' ] } " ;
mysql_query ( $sql );
$sqlPack = " UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id= { $object [ 'object_id' ] } " ;
mysql_query ( $sqlPack );
$sql_sph = " UPDATE objects SET id_add_user = { $_SESSION [ 'id' ] } WHERE id = " . $object [ 'object_id' ];
$db_sphinx -> query ( $sql_sph );
}
}
mysql_query ( " UPDATE client_confirm_objects SET status = 1 WHERE client_id = $post[id] AND status = 0 " );
}
}
//Событие изменений
$dop_text = '' ;
// hide_client_contacts: для таких юзеров мы не записываем изменения телефона
// и email в журнал событий — иначе либо ничего не поменялось (моя защита уже
// вернула оригинал из БД), либо в лог утечёт маска "+X *** ..." как "новое значение".
$skipContactsLog = function_exists ( 'should_hide_contacts_for_current_user' ) && should_hide_contacts_for_current_user ();
if (( string ) $r_prev [ 'fio' ] !== $post [ 'fio' ]) $dop_text .= " Изменено имя клиента с « " . $r_prev [ 'fio' ] . " » на « " . $post [ fio ] . " » " ;
if ( ! $skipContactsLog && $r_prev [ 'phone' ] !== $post [ 'phone' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
$dop_text .= " Изменен телефон клиента с « " . $r_prev [ 'phone' ] . " » на « " . $post [ phone ] . " » " ;
}
if (( int ) $r_prev [ 'budget' ] !== ( int ) $post [ 'budget' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if ( empty ( $r_prev [ 'budget' ])){
$dop_text .= " Добавлен бюджет " . $post [ 'budget' ];
} else if ( empty ( $post [ 'budget' ])){
$dop_text .= " Удален бюджет " . $r_prev [ 'budget' ];
} else {
$dop_text .= " Изменен бюджет клиента с « " . $r_prev [ 'budget' ] . " » на « " . $post [ budget ] . " » " ;
}
}
if ( ! $skipContactsLog && $r_prev [ 'email' ] !== $post [ 'email' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if ( empty ( $r_prev [ 'email' ])){
$dop_text .= " Добавлен email " . $post [ 'email' ];
} else if ( empty ( $post [ 'email' ])){
$dop_text .= " Удален email " . $r_prev [ 'email' ];
} else {
$dop_text .= " Изменен email клиента с « " . $r_prev [ 'email' ] . " » на « " . $post [ email ] . " » " ;
}
}
if ( $post [ 'type' ] !== $r_prev [ 'type' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if ( empty ( $post [ 'type' ]) || $post [ 'type' ] === 'null' ){
$dop_text .= " Удален тип недвижимости " . str_replace ([ '[' , ']' , '_кв' , '_' , ',' ],[ '' , '' , '.кв.' , ' ' , ', ' ], $r_prev [ 'type' ]);
} else if ( empty ( $r_prev [ 'type' ]) || $r_prev [ 'type' ] === 'null' ){
$dop_text .= " Добавлен тип недвижимости " . str_replace ([ '[' , ']' , '_кв' , '_' , ',' ],[ '' , '' , '.кв.' , ' ' , ', ' ], $post [ 'type' ]);
} else {
$dop_text .= " Изменен тип недвижимости с " . str_replace ([ '[' , ']' , '_кв' , '_' , ',' ],[ '' , '' , '.кв.' , ' ' , ', ' ], $r_prev [ 'type' ]) . " на " . str_replace ([ '[' , ']' , '_кв' , '_' , ',' ],[ '' , '' , '.кв.' , ' ' , ', ' ], $post [ 'type' ]);
}
}
if ( $post [ 'work_type' ] !== $r_prev [ 'work_type' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if ( empty ( $post [ 'work_type' ]) || $post [ 'work_type' ] === 'null' ){
$dop_text .= " Удален тип клиента " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $r_prev [ 'work_type' ]);
} else if ( empty ( $r_prev [ 'work_type' ]) || $r_prev [ 'work_type' ] === 'null' ){
$dop_text .= " Добавлен тип клиента " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $post [ 'work_type' ]);
} else {
$dop_text .= " Изменен тип клиента с " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $r_prev [ 'work_type' ]) . " на " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $post [ 'work_type' ]);
}
}
if ( $post [ 'role' ] !== $r_prev [ 'role' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if ( empty ( $post [ 'role' ]) || $post [ 'role' ] === 'null' ){
$dop_text .= " Удалена роль клиента " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $r_prev [ 'role' ]);
} else if ( empty ( $r_prev [ 'role' ]) || $r_prev [ 'role' ] === 'null' ){
$dop_text .= " Добавлена роль клиента " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $post [ 'role' ]);
} else {
$dop_text .= " Изменена роль клиента с " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $r_prev [ 'role' ]) . " на " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $post [ 'role' ]);
}
}
if ( $post [ 'opis' ] !== $r_prev [ 'opis' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if ( empty ( $post [ 'opis' ]) || $post [ 'opis' ] === '' ){
$dop_text .= " Удален комментарий " . $r_prev [ 'opis' ];
} else if ( empty ( $r_prev [ 'opis' ]) || $r_prev [ 'opis' ] === '' ){
$dop_text .= " Добавлен комментарий « " . $post [ 'opis' ] . " » " ;
} else {
$dop_text .= " Изменен комментарий с « " . $r_prev [ 'opis' ] . " » на « " . $post [ 'opis' ] . " » " ;
}
}
if (( int ) $post [ 'source' ] !== ( int ) $r_prev [ 'source' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if (( int ) $post [ 'source' ] == 0 ){
$prev_source = mysql_fetch_assoc ( mysql_query ( " SELECT `source` FROM `advertising_sources` WHERE `id` = " . ( int ) $r_prev [ 'source' ]))[ 'source' ];
$dop_text .= " Удален источник « " . $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 .= " <br> " ;
if (( int ) $post [ 'employee' ] == 0 ) {
$prev_employee = mysql_fetch_assoc ( mysql_query ( " SELECT `name` FROM `partners_employees` WHERE `id` = " . ( int ) $r_prev [ 'employee_id' ]))[ 'name' ];
$dop_text .= " Сотрудник партнёра « $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 .= " <br> " ;
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 .= " <br> " ;
$dop_text .= " Добавлены доп. телефоны: " ;
foreach ( $phone2_arr as $ph ){
if ( ! in_array ( $ph , $prevphone2_arr )){
$dop_text .= $ph . " , " ;
}
}
} else if ( count ( $phone2_arr ) < count ( $prevphone2_arr )){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
$dop_text .= " Удалены доп. телефоны: " ;
foreach ( $prevphone2_arr as $ph ){
if ( ! in_array ( $ph , $phone2_arr )){
$dop_text .= $ph . " , " ;
}
}
}
}
foreach ( $phone2_arr as $key => $ph ){
if ( isset ( $prevphone2_arr [ $key ]) && $ph !== $prevphone2_arr [ $key ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
$dop_text .= " Изменен номер с " . $prevphone2_arr [ $key ] . " на " . $ph ;
}
}
$objects_arr = json_decode ( html_entity_decode ( $post [ 'objects' ]), ENT_QUOTES );
$prevobjects_arr = json_decode ( html_entity_decode ( $r_prev [ 'objects' ]), ENT_QUOTES );
/* if ( count ( $objects_arr ) == 0 && count ( $prevobjects_arr ) == 0 ){}
else {
foreach ( $prevobjects_arr as $obj ){
if ( ! in_array ( $obj , $objects_arr )){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
$obj_res = mysql_fetch_assoc ( mysql_query ( " SELECT `adres` `nazv` FROM `objects` WHERE `id` = " . $obj ));
$nazv_obj = $obj_res [ 'nazv' ] . ' ' . $obj_res [ 'adres' ];
$dop_text .= " Удален объект « " . $nazv_obj . " » " ;
}
}
foreach ( $objects_arr as $obj ){
if ( ! in_array ( $obj , $prevobjects_arr )){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
$obj_res = mysql_fetch_assoc ( mysql_query ( " SELECT `adres` `nazv` FROM `objects` WHERE `id` = " . $obj ));
$nazv_obj = $obj_res [ 'nazv' ] . ' ' . $obj_res [ 'adres' ];
$dop_text .= " Добавлен объект « " . $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 .= " <br> " ;
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 .= " <br> " ;
if ( empty ( $r_prev [ 'email' ])){
$dop_text .= " Добавлен email " . $post [ 'email' ];
} else if ( empty ( $post [ 'email' ])){
$dop_text .= " Удален email " . $r_prev [ 'email' ];
} else {
$dop_text .= " Изменен email клиента с « " . $r_prev [ 'email' ] . " » на « " . $post [ email ] . " » " ;
}
}
if ( $post [ 'type' ] !== $r_prev [ 'type' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if ( empty ( $post [ 'type' ]) || $post [ 'type' ] === 'null' ){
$dop_text .= " Удален тип недвижимости " . str_replace ([ '[' , ']' , '_кв' , '_' , ',' ],[ '' , '' , '.кв.' , ' ' , ', ' ], $r_prev [ 'type' ]);
} else if ( empty ( $r_prev [ 'type' ]) || $r_prev [ 'type' ] === 'null' ){
$dop_text .= " Добавлен тип недвижимости " . str_replace ([ '[' , ']' , '_кв' , '_' , ',' ],[ '' , '' , '.кв.' , ' ' , ', ' ], $post [ 'type' ]);
} else {
$dop_text .= " Изменен тип недвижимости с " . str_replace ([ '[' , ']' , '_кв' , '_' , ',' ],[ '' , '' , '.кв.' , ' ' , ', ' ], $r_prev [ 'type' ]) . " на " . str_replace ([ '[' , ']' , '_кв' , '_' , ',' ],[ '' , '' , '.кв.' , ' ' , ', ' ], $post [ 'type' ]);
}
}
if ( $post [ 'work_type' ] !== $r_prev [ 'work_type' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if ( empty ( $post [ 'work_type' ]) || $post [ 'work_type' ] === 'null' ){
$dop_text .= " Удален тип клиента " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $r_prev [ 'work_type' ]);
} else if ( empty ( $r_prev [ 'work_type' ]) || $r_prev [ 'work_type' ] === 'null' ){
$dop_text .= " Добавлен тип клиента " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $post [ 'work_type' ]);
} else {
$dop_text .= " Изменен тип клиента с " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $r_prev [ 'work_type' ]) . " на " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $post [ 'work_type' ]);
}
}
if ( $post [ 'role' ] !== $r_prev [ 'role' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if ( empty ( $post [ 'role' ]) || $post [ 'role' ] === 'null' ){
$dop_text .= " Удалена роль клиента " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $r_prev [ 'role' ]);
} else if ( empty ( $r_prev [ 'role' ]) || $r_prev [ 'role' ] === 'null' ){
$dop_text .= " Добавлена роль клиента " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $post [ 'role' ]);
} else {
$dop_text .= " Изменена роль клиента с " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $r_prev [ 'role' ]) . " на " . str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $post [ 'role' ]);
}
}
if ( $post [ 'opis' ] !== $r_prev [ 'opis' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if ( empty ( $post [ 'opis' ]) || $post [ 'opis' ] === '' ){
$dop_text .= " Удален комментарий " . $r_prev [ 'opis' ];
} else if ( empty ( $r_prev [ 'opis' ]) || $r_prev [ 'opis' ] === '' ){
$dop_text .= " Добавлен комментарий « " . $post [ 'opis' ] . " » " ;
} else {
$dop_text .= " Изменен комментарий с « " . $r_prev [ 'opis' ] . " » на « " . $post [ 'opis' ] . " » " ;
}
}
if (( int ) $post [ 'source' ] !== ( int ) $r_prev [ 'source' ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
if (( int ) $post [ 'source' ] == 0 ){
$prev_source = mysql_fetch_assoc ( mysql_query ( " SELECT `source` FROM `advertising_sources` WHERE `id` = " . ( int ) $r_prev [ 'source' ]))[ 'source' ];
$dop_text .= " Удален источник « " . $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 .= " <br> " ;
if ( empty ( $post [ 'employee' ]) || $post [ 'employee' ] === '' ) {
$prev_employee = mysql_fetch_assoc ( mysql_query ( " SELECT `name` FROM `partners_employees` WHERE `id` = " . ( int ) $r_prev [ 'employee_id' ]))[ 'name' ];
$dop_text .= " Сотрудник партнёра « $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 .= " <br> " ;
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 .= " <br> " ;
$dop_text .= " Добавлены доп. телефоны: " ;
foreach ( $phone2_arr as $ph ){
if ( ! in_array ( $ph , $prevphone2_arr )){
$dop_text .= $ph . " , " ;
}
}
} else if ( count ( $phone2_arr ) < count ( $prevphone2_arr )){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
$dop_text .= " Удалены доп. телефоны: " ;
foreach ( $prevphone2_arr as $ph ){
if ( ! in_array ( $ph , $phone2_arr )){
$dop_text .= $ph . " , " ;
}
}
}
}
foreach ( $phone2_arr as $key => $ph ){
if ( isset ( $prevphone2_arr [ $key ]) && $ph !== $prevphone2_arr [ $key ]){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
$dop_text .= " Изменен номер с " . $prevphone2_arr [ $key ] . " на " . $ph ;
}
}
$objects_arr = json_decode ( html_entity_decode ( $post [ 'objects' ]), ENT_QUOTES );
$prevobjects_arr = json_decode ( html_entity_decode ( $r_prev [ 'objects' ]), ENT_QUOTES );
/* if ( count ( $objects_arr ) == 0 && count ( $prevobjects_arr ) == 0 ){
} else {
foreach ( $prevobjects_arr as $obj ){
if ( ! in_array ( $obj , $objects_arr )){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
$obj_res = mysql_fetch_assoc ( mysql_query ( " SELECT `adres` `nazv` FROM `objects` WHERE `id` = " . $obj ));
$nazv_obj = $obj_res [ 'nazv' ] . ' ' . $obj_res [ 'adres' ];
$dop_text .= " Удален объект « " . $nazv_obj . " » " ;
}
}
foreach ( $objects_arr as $obj ){
if ( ! in_array ( $obj , $prevobjects_arr )){
if ( $dop_text != '' ) $dop_text .= " <br> " ;
$obj_res = mysql_fetch_assoc ( mysql_query ( " SELECT `adres` `nazv` FROM `objects` WHERE `id` = " . $obj ));
$nazv_obj = $obj_res [ 'nazv' ] . ' ' . $obj_res [ 'adres' ];
$dop_text .= " Добавлен объект « " . $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 .= " <p><a class='double_client_req' href='javascript: { }' data-id=' " . $user [ 'idc' ] . " '>Добавить новую заявку по данному клиенту?</a></p> " ;
return $errorText ;
}
}
}
}
return 0 ;
}
public function delReason ( $post ) {
$errors = [];
$dop_text = " " ;
$select_text = " " ;
if ( $post [ 'note' ] == 1 ){
// При закрытии отказом (denial) JS передаёт текущую дату в $post['datazakl'],
// парсить её не нужно — используем текущее время напрямую.
$t = date_create ();
$formatted_date = date_format ( $t , " Y-m-d H:i:s " );
$formatted_dateZajavki = date_format ( $t , " d.m.Y H:i:s " );
} else {
$test = substr ( $post [ 'datazakl' ], 0 , - 3 );
$dateZajavki = date ( 'd.m.Y' , intval ( $test ));
$phpdate = strtotime ( $dateZajavki );
$formatted_d = date ( 'Y-m-d' , $phpdate );
$today = date ( 'Y-m-d' );
if ( $today == $formatted_d ){
$formatted_date = date ( 'Y-m-d H:i:s' );
} else {
$formatted_date = date ( 'Y-m-d H:i:s' , $phpdate );
}
$formatted_dateZajavki = date ( 'd.m.Y' , $phpdate );
}
if ( $post [ 'denial' ]) {
$sql_d = " SELECT * FROM denial_work WHERE id = " . $post [ 'denial' ];
if ( $q_d = mysql_query ( $sql_d )) {
$r_d = mysql_fetch_assoc ( $q_d );
$select_text = $r_d [ 'name' ];
} else {
$errors [] = mysql_error ();
}
}
if ( $post [ 'tempid' ]) {
$sql_mes = " SELECT * FROM step_notify_closure WHERE temp_id = { $post [ 'tempid' ] } " ;
if ( $q_mes = mysql_query ( $sql_mes )) {
if ( mysql_num_rows ( $q_mes ) > 0 ) {
$mes = mysql_fetch_assoc ( $q_mes );
}
} else {
$errors [] = mysql_error ();
}
}
if ( ! empty ( $post [ 'reason' ]) || $select_text != " " ) {
$dop_text .= " Причина: « " . $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 = " <b class= \" jw__counter who_work \" > " . $rez . " </b> " ;
}
else {
$counter = " " ;
}
return $counter ;
}
public function getCountNewClients ( $id_user ) {
//$sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work > 0)) AND confirm=0 AND deleted<>1";
$sql_count = " SELECT COUNT(*) FROM clients WHERE who_work= $id_user AND confirm=0 AND deleted<>1 AND cancel = 0 " ;
$rez = mysql_result ( mysql_query ( $sql_count ), 0 );
if ( $rez > 0 ) {
$counter = " <b class= \" jw__counter new \" > " . $rez . " </b> " ;
}
else {
$counter = " " ;
}
return $counter ;
}
public function getCountResClients ( $id_user ) {
//$sql_count = "SELECT COUNT(*) FROM clients WHERE (who_work=$id_user or (id_agent=$id_user and who_work > 0)) AND confirm=0 AND deleted<>1";
$sql_count = " SELECT COUNT(*) FROM clients WHERE who_work= $id_user AND confirm=0 AND deleted<>1 AND cancel = 0 " ;
$rez = mysql_result ( mysql_query ( $sql_count ), 0 );
$counter = $rez ;
return $counter ;
}
public function getCountWorkTypeClientsNumber ( $id_user , $workType ) {
$sql_count = " SELECT COUNT(*) FROM clients WHERE (who_work= $id_user or (id_agent= $id_user and who_work = 0)) AND deleted<>1 AND cancel = 0 AND work_type= $workType " ;
return mysql_result ( mysql_query ( $sql_count ), 0 );
}
public function getCountNewClientsNumber ( $id_user , $workType ) {
$sql_count = " SELECT COUNT(*) FROM clients WHERE (who_work= $id_user or (id_agent= $id_user and who_work > 0)) AND confirm=0 AND deleted<>1 AND cancel = 0 AND work_type= $workType " ;
return mysql_result ( mysql_query ( $sql_count ), 0 );
}
public function getCountEndClientsNumber ( $id_user , $workType ) {
$sql_count = " SELECT COUNT(*) FROM clients WHERE (who_work= $id_user or (id_agent= $id_user and who_work > 0)) AND status=2 AND deleted<>1 AND cancel = 0 AND work_type= $workType " ;
return mysql_result ( mysql_query ( $sql_count ), 0 );
}
public function getCountWorkClientsNumber ( $id_user , $workType ) {
$sql_count = " SELECT COUNT(*) FROM clients WHERE who_work= $id_user AND and confirm= 1 AND status <> 2 AND deleted<>1 AND work_type= $workType AND cancel = 0 " ;
return mysql_result ( mysql_query ( $sql_count ), 0 );
}
public function getCountEndClients ( $id_user ) {
$sql_count = " SELECT COUNT(*) FROM clients WHERE who_work= $id_user AND status=2 AND deleted<>1 AND cancel = 0 " ;
$rez = mysql_result ( mysql_query ( $sql_count ), 0 );
if ( $rez > 0 ) {
$counter = " <b class= \" jw__counter end \" > " . $rez . " </b> " ;
}
else {
$counter = " " ;
}
return $counter ;
}
public function getCountWorkClients ( $id_user ) {
$sql_count = " SELECT COUNT(*) FROM clients WHERE who_work= $id_user AND deleted<>1 AND cancel = 0 " ;
$rez = mysql_result ( mysql_query ( $sql_count ), 0 );
return $rez ;
}
//Получение id клиентов с просроченными этапами
public function getIdExpiredStages ( $where ){
$user = new User ;
$user -> get ( $_SESSION [ 'id' ]);
$agency_id = $user -> agencyId ;
$expiredStagesClients = array ();
$stepIds = array ();
$stepDays = array ();
$funnelIds = array ();
if ( $agency_id > 0 ){
//Этапы
$sql_f = " SELECT id FROM `funnel` WHERE agency_id= $agency_id AND deleted = 0 " ;
$q_f = mysql_query ( $sql_f );
while ( $r_f = mysql_fetch_assoc ( $q_f )){
$funnelIds [] = ( int ) $r_f [ 'id' ];
}
$sql_st = " SELECT id, days_step FROM funnel_steps WHERE funnel_id in ( " . implode ( ',' , $funnelIds ) . " ) " ;
$q_st = mysql_query ( $sql_st );
while ( $r_st = mysql_fetch_assoc ( $q_st )){
$stepDays [( int ) $r_st [ 'id' ]] = $r_st [ 'days_step' ];
}
$sql = " SELECT id, step_id, date_add, (SELECT date_update FROM clients_funnel_step WHERE client_id=clients.id) as date_update FROM clients WHERE 1 $where AND funnel_id > 0 AND step_id > 0 " ;
$q = mysql_query ( $sql );
while ( $r = mysql_fetch_assoc ( $q )){
if ( $stepDays [( int ) $r [ 'step_id' ]] > 0 ){
$days_step = $stepDays [( int ) $r [ 'step_id' ]];
if ( ! empty ( $r [ 'date_update' ])){
$lostDate = $r [ 'date_update' ];
$interval = date_diff ( new DateTime (), new DateTime ( $lostDate )) -> days ;
if ( $interval > $days_step ){
$expiredStagesClients [] = $r [ 'id' ];
}
} else {
$lostDate = $r [ 'date_add' ];
$interval = date_diff ( new DateTime (), new DateTime ( $lostDate )) -> days ;
if ( $interval > $days_step ){
$expiredStagesClients [] = $r [ 'id' ];
}
}
}
}
}
return $expiredStagesClients ;
}
public function getAllClients () {
$result = array ();
$bd_usl_managers = " " ;
$bd_usl = " " ;
$p_sql = " " ;
$join = " " ;
$depClass = new Department ();
$adminDep = false ;
$dep_user = $depClass -> getDepartment (( int ) $_SESSION [ 'id' ]);
$searchCheckUserId = $_SESSION [ 'id' ];
$sql_check_permissions = " SELECT `menu_all_clients`, `menu_all_clients_edit` FROM user_permissions WHERE user_id = $searchCheckUserId " ;
$q_check_permissions = mysql_query ( $sql_check_permissions );
$r_check_permissions = mysql_fetch_assoc ( $q_check_permissions );
$clientsIdsDop = [];
if ( ! $_GET [ 'all' ] || ! $_POST [ 'all' ]) {
$get = clearInputData ( $_GET );
$post = clearInputData ( $_POST );
$searchUserId = $_SESSION [ 'id' ];
if ( $_SESSION [ 'users_admin' ]) {
$currentUser = new User ;
$currentUser -> checkPermissions ();
$searchUserId = $currentUser -> agencyId ;
} else if ( $r_check_permissions [ 'menu_all_clients' ] == 1 ) {
$currentUser = new User ;
$currentUser -> checkPermissions ();
$searchUserId = $currentUser -> agencyId ;
} else if ( $dep_user [ 'role' ] == 'manager_office' ){
$currentUser = new User ;
$currentUser -> checkPermissions ();
$searchUserId = $dep_user [ 'admin' ];
$adminDep = true ;
} else if ( $dep_user [ 'role' ] == 'manager_office_menager' ) {
//$currentUser = new User;
//$$currentUser->checkPermissions();
//$currentUser->checkPermissions();
//$searchUserId = $currentUser->id_manager;
$searchUserId = $_SESSION [ 'id_manager' ];
$adminDep = true ;
}
//$mmid[] = "id_agent = $searchUserId";
if ( $post [ 'filter_stage' ] && $post [ 'filter_stage' ] == 'filter_work_add' && ! isset ( $post [ 'step' ])){
$mmid [] = " id_agent = $searchUserId " ;
} else {
$mmid [] = " who_work = $searchUserId " ;
$wid [] = $searchUserId ;
if ( $post [ 'emp' ] ){
$wid [] = $post [ 'emp' ];
}
}
if ( $_GET [ 'deleted' ]) {
$bd_usl = " AND deleted=1 " ;
// если ищем по удаленным и под менеджером - пропускаем этот код - здесь идет добавление по агентству
if ( ! ( $_GET [ 'deleted' ] && $_SESSION [ 'manager' ])) {
$rez1 = mysql_query ( " SELECT id_manager FROM users WHERE id= $searchUserId " );
while ( $mm1 = mysql_fetch_row ( $rez1 )) {
$mmid [] = " id_agent = " . $mm1 [ 0 ];
$rez01 = mysql_query ( " SELECT id_manager FROM users WHERE id= $mm1[0] " );
while ( $mm01 = mysql_fetch_row ( $rez01 )) {
$mmid [] = " id_agent = " . $mm01 [ 0 ];
}
$rez02 = mysql_query ( " SELECT id FROM users WHERE id_manager= $mm1[0] and id_manager<>0 " );
while ( $mm02 = mysql_fetch_row ( $rez02 )) {
$mmid [] = " id_agent = " . $mm02 [ 0 ];
}
}
}
$rez2 = mysql_query ( " SELECT id FROM users WHERE id_manager= $searchUserId " );
while ( $mm2 = mysql_fetch_row ( $rez2 )) {
$mmid [] = " id_agent = " . $mm2 [ 0 ];
$rez03 = mysql_query ( " SELECT id FROM users WHERE id_manager= $mm2[0] " );
while ( $mm03 = mysql_fetch_row ( $rez03 )) {
$mmid [] = " id_agent = " . $mm03 [ 0 ];
}
}
}
$arrWho_work = array ();
$rez3 = mysql_query ( " SELECT id FROM users WHERE id_manager= $searchUserId " );
while ( $mm = mysql_fetch_row ( $rez3 )) {
if ( $post [ 'filter_stage' ] && $post [ 'filter_stage' ] == 'filter_work_add' && ! isset ( $post [ 'step' ])){
$mmid [] = " id_agent = " . $mm [ 0 ];
$wid [] = $mm [ 0 ];
} else {
$mmid [] = " who_work = " . $mm [ 0 ];
$arrWho_work [] = $mm [ 0 ];
$wid [] = $mm [ 0 ];
}
$rez04 = mysql_query ( " SELECT id, manager FROM users WHERE id_manager= $mm[0] " );
while ( $mm2 = mysql_fetch_row ( $rez04 )) {
if ( $post [ 'filter_stage' ] && $post [ 'filter_stage' ] == 'filter_work_add' && ! isset ( $post [ 'step' ])){
$mmid [] = " id_agent = " . $mm2 [ 0 ];
} else {
$mmid [] = " who_work = " . $mm2 [ 0 ];
$arrWho_work [] = $mm [ 0 ];
$wid [] = $mm [ 0 ];
if ( $mm2 [ 1 ] > 0 ){
$rez004 = mysql_query ( " SELECT id FROM users WHERE id_manager= $mm2[0] " );
while ( $mm04 = mysql_fetch_row ( $rez004 )){
if ( ! in_array ( $mm04 [ 0 ], $arrWho_work )){
$arrWho_work [] = $mm04 [ 0 ];
$mmid [] = " who_work = " . $mm04 [ 0 ];
$wid [] = $mm04 [ 0 ];
}
}
}
}
}
}
$bd_usl_managers = " AND ( " . implode ( " OR " , $mmid ) . " ) " ;
if ( ! empty ( $wid )){
$sql_doer = " SELECT * FROM clients_doers WHERE user_id in ( " . implode ( ',' , $wid ) . " ) AND confirm = 1 " ;
$q_doer = mysql_query ( $sql_doer );
while ( $r_doer = mysql_fetch_assoc ( $q_doer )){
$clientsIdsDop [] = $r_doer [ 'client_id' ];
}
$bd_usl_managers = " AND (( " . implode ( " OR " , $mmid ) . " ) " ;
if ( ! empty ( $clientsIdsDop )){
$bd_usl_managers .= " OR clients.id in ( " . implode ( ',' , $clientsIdsDop ) . " ) " ;
}
$bd_usl_managers .= " ) " ;
}
// echo $bd_usl_managers.'<br>';
} else {
// находим ИД агентства и по нему ищем всех свободных клиентов
$agencyId = - 1 ;
if ( $_SESSION [ 'agency' ]) {
$agencyId = $_SESSION [ 'id' ];
} else if ( $r_check_permissions [ 'menu_all_clients' ] == 1 ) {
$currentUser = new User ;
$currentUser -> checkPermissions ();
$searchUserId = $dep_user [ 'admin' ];
} else {
if ( $_SESSION [ 'users_admin' ]) {
$currentUser = new User ;
$currentUser -> checkPermissions ();
$agencyId = $currentUser -> agencyId ;
// } else if($dep_user['role'] == 'manager_office'){
// $currentUser = new User;
// $currentUser->checkPermissions();
// $searchUserId = $dep_user['admin'];
// $adminDep = true;
} else if ( $dep_user [ 'role' ] == 'manager_office_menager' ) {
//$currentUser = new User;
//$currentUser->checkPermissions();
$searchUserId = $_SESSION [ 'id_manager' ];
} else {
if ( $_SESSION [ 'manager' ]) {
$user = new User ;
$user -> checkPermissions ();
$agencyId = $user -> id_manager ;
} else {
$user = new User ;
$user -> checkPermissions ();
if ( $user -> id_manager > 0 ) {
$agency = new User ;
$agency -> get ( $user -> id_manager );
if ( $agency -> id_manager ) {
$agency -> get ( $agency -> id_manager );
}
$agencyId = $agency -> id ;
}
}
}
}
$bd_usl = " AND deleted=0 AND who_work=0 AND id_agent in
( SELECT id FROM `users` WHERE id = $agencyId or id_manager = $agencyId or id_manager in ( select id from users where id_manager = $agencyId ) or id_manager in ( select id from users where id_manager in ( select id from users where id_manager = $agencyId ))) " ;
}
$get = clearInputData ( $_GET );
$post = clearInputData ( $_POST );
if ( ! empty ( $this -> params_search )){
$post = $this -> params_search ;
}
if ( isset ( $get [ 'workType' ])) {
$bd_usl .= " AND work_type = " . $get [ 'workType' ];
}
if ( $get [ 'search' ])
{
$phone = preg_replace ( '/[+\-\(\)\/\?,.;:%№!\s]/' , '' , $get [ 'search' ]);
$bd_usl .= " AND (fio LIKE '% $get[search] %' OR phone LIKE '% $phone %' OR phone2 LIKE '% $phone %' OR email LIKE '% $get[search] %') " ;
$result [ 'str_url_add' ] = " search= " . $get [ 'search' ];
}
if ( $post [ 'search' ])
{
$phone = preg_replace ( '/[+\-\(\)\/\?,.;:%№!\s]/' , '' , $post [ 'search' ]);
$_SESSION [ 'client_search' ] = $post [ 'search' ];
$post [ 'search' ] = mb_strtolower ( trim ( $post [ 'search' ]), " UTF-8 " );
$bd_usl .= " AND (fio LIKE '% $post[search] %' OR phone LIKE '% $phone %' OR id in (SELECT client_id FROM clients_phone2 WHERE phone LIKE '% $phone %') OR email LIKE '% $post[search] %' " ;
if ( preg_match ( '/^\d+$/' , $post [ 'search' ]))
$bd_usl .= " or id = " . $post [ 'search' ];
$bd_usl .= " ) " ;
$result [ 'str_url_add' ] = " search= " . $post [ 'search' ];
} else {
unset ( $_SESSION [ 'client_search' ]);
}
if ( $post [ 'id' ]){
$bd_usl .= " AND id = { $post [ 'id' ] } " ;
}
if ( $post [ 'fio' ]){
$bd_usl .= " AND fio LIKE '% $post[fio] %' " ;
}
if ( $post [ 'phone' ]){
$bd_usl .= " AND (phone LIKE '% $post[phone] %' OR id in (SELECT client_id FROM clients_phone2 WHERE phone LIKE '% $post[phone] %')) " ;
}
if ( $post [ 'period' ]){
if ( $post [ 'accepted' ] || $post [ 'transmitted' ]){
$dates = getPeriod ( $post [ 'period' ], $post [ 'onDate' ], $post [ 'offDate' ]);
$date_between = $dates [ 'between' ];
$whereTasks = $dates [ 'whereTasks' ];
} else if ( $post [ 'step' ] || $post [ 'source' ]){
$dates = getPeriod ( $post [ 'period' ], $post [ 'onDate' ], $post [ 'offDate' ]);
$date_between = $dates [ 'between' ];
$bd_usl .= " AND `date_add` $date_between " ;
} else if ( $post [ 'filter_stage_close' ] || $post [ 'filter_stage_hit' ]){
$dates = getPeriod ( $post [ 'period' ], $post [ 'onDate' ], $post [ 'offDate' ]);
$date_between = $dates [ 'between' ];
if ( $post [ 'filter_stage_close' ] && ( int ) $post [ 'date_tasks' ] == 11 ){
$bd_usl .= " AND `date_add` $date_between " ;
} else {
$bd_usl .= " AND (if((SELECT count(*) FROM `events_clients` WHERE client_id=clients.id and event='delete' and user_id=clients.who_delete order by id desc limit 1)>0, "
. " (SELECT date_update FROM `events_clients` WHERE client_id=clients.id and event='delete' and user_id=clients.who_delete order by id desc limit 1) $date_between , "
. " clients.date_add $date_between )) " ;
}
}
else {
if ( $post [ 'period' ] == 'period' ){
$onDate = date ( 'Y-m-d 00:00:00' , strtotime ( $post [ 'onDate' ]));
if ( empty ( $onDate )) $onDate = '1970-01-01 00:00:00' ;
if ( ! empty ( $post [ 'offDate' ])) {
$offDate = date ( 'Y-m-d 23:59:59' , strtotime ( $post [ 'offDate' ]));
} else {
$offDate = date ( 'Y-m-d 23:59:59' );
}
if ( $post [ 'filter_stage' ] && $post [ 'filter_stage' ] == 'filter_work_all_do' ){
$bd_usl .= " AND `date_add` < ' { $onDate } ' " ;
} else {
$bd_usl .= " AND `date_add` between ' { $onDate } ' AND ' { $offDate } ' " ;
}
$_SESSION [ 'on_date' ] = date ( 'd.m.Y' , strtotime ( $onDate ));
$_SESSION [ 'off_date' ] = date ( 'd.m.Y' , strtotime ( $offDate ));
} else {
unset ( $_SESSION [ 'on_date' ]);
unset ( $_SESSION [ 'off_date' ]);
$dates = getPeriod ( $post [ 'period' ], $post [ 'onDate' ], $post [ 'offDate' ]);
$date_between = $dates [ 'between' ];
//$arrPeriod = ['today' => '-0 day', 'week' => '-6 day', 'month' => '-30 day', 'quarter' => '-120 day', 'year' => '-365'];
//$days = date('Y-m-d', strtotime($arrPeriod[$post['period']]));
if ( $post [ 'filter_stage' ] && $post [ 'filter_stage' ] == 'filter_work_all_do' ){
$bd_usl .= " AND `date_add` < ' { $dates [ 'dateStart' ] } ' " ;
} else {
$bd_usl .= " AND `date_add` $date_between " ;
}
}
}
$_SESSION [ 'client_period' ] = $post [ 'period' ];
} else {
unset ( $_SESSION [ 'client_period' ]);
}
$bd_stage = " " ;
if ( $post [ 'filter_stage_work' ]){
if ( $post [ 'filter_confirm' ] || $post [ 'filter_stage_send' ]){
$bd_stage = " and deleted <> '1' " ;
} else {
$bd_stage = " and deleted <> '1' and confirm > 0 " ;
}
$_SESSION [ 'filter_stage_work' ] = 1 ;
} else {
unset ( $_SESSION [ 'filter_stage_work' ]);
}
if ( $post [ 'filter_stage_close' ]){
$bd_stage .= " and deleted = '1' AND confirm <> '10' " ;
$_SESSION [ 'filter_stage_close' ] = 1 ;
} else {
unset ( $_SESSION [ 'filter_stage_close' ]);
}
if ( isset ( $post [ 'denial' ])){
$bd_stage .= " and denial = ' " . $post [ 'denial' ] . " ' " ;
}
if ( $post [ 'filter_stage_hit' ]){
$bd_stage .= " AND deleted = '1' AND confirm = 10 " ;
$_SESSION [ 'filter_stage_hit' ] = 1 ;
} else {
unset ( $_SESSION [ 'filter_stage_hit' ]);
}
/* if ( $bd_stage != " " ){
$bd_stage = " AND " . $bd_stage . " ) " ;
} */
if ( $post [ 'filter_stage_send' ]){
if ( $post [ 'filter_stage_work' ]){
//$bd_usl.= " AND deleted <> '1' AND (confirm = 0 or confirm = 1) AND who_work != " . $_SESSION['id'] ;
} else {
$bd_usl .= " AND deleted <> '1' AND confirm = 0 AND who_work != " . $_SESSION [ 'id' ] ;
}
$_SESSION [ 'filter_stage_send' ] = 1 ;
} else {
unset ( $_SESSION [ 'filter_stage_send' ]);
}
if ( $post [ 'filter_stage_hot' ]){
if ( $post [ 'filter_stage_work' ]){
$bd_usl .= " or `hot` = 1 " ;
} else {
$bd_usl .= " AND `hot` = 1 " ;
}
$_SESSION [ 'filter_stage_hot' ] = 1 ;
} else {
unset ( $_SESSION [ 'filter_stage_hot' ]);
}
$funnel_id = 0 ;
if ( $post [ 'funnel' ]){
if ( $post [ 'funnel' ] != 'all' ){
$bd_usl .= " AND `funnel_id` in ( " . $post [ 'funnel' ] . " ) " ;
}
$funnel_id = $post [ 'funnel' ];
} else if ( ! empty ( $this -> params_search )) {
//$bd_usl.= " AND `funnel_id` = 0";
} else {
$bd_usl .= " AND `funnel_id` = 0 " ;
}
if ( $post [ 'step' ]){
if ( $post [ 'step' ] != 'all' ){
$bd_usl .= " AND `step_id` = " . $post [ 'step' ];
}
}
if ( $post [ 'source' ]){
$sourcesArr = explode ( " , " , $post [ 'source' ]);
$sourceArr = array ();
if ( ! empty ( $sourcesArr )){
foreach ( $sourcesArr as $sourceCl ){
if ( strpos ( $sourceCl , 'all_' ) !== false ){
$source_group = ( int ) str_replace ( 'all_' , '' , $sourceCl );
if ( $source_group > 0 ){
$sql_adv = " SELECT * FROM `advertising_sources` WHERE group_id = { $source_group } " ;
$q_adv = $this -> db -> query ( $sql_adv );
while ( $r_adv = $this -> db -> fetch_assoc ( $q_adv )){
$sourceArr [] = " `source` = ' { $r_adv [ 'id' ] } ' " ;
}
} else if ( $source_group == 0 ){
$users_ids_this = array ();
$CallEvents = new CallEvents ();
$user_this = new User ;
$user_this -> get ( $_SESSION [ 'id' ]);
$users_ids_this = array_keys ( $CallEvents -> getAllUserAgency ( $user_this -> agencyId , $users_ids_this ));
$sql_adv = " SELECT * FROM `advertising_sources` WHERE group_id = { $source_group } AND (user_id in ( " . implode ( ',' , $users_ids_this ) . " ) or manager_id in ( " . implode ( ',' , $users_ids_this ) . " )) " ;
$q_adv = $this -> db -> query ( $sql_adv );
while ( $r_adv = $this -> db -> fetch_assoc ( $q_adv )){
$sourceArr [] = " `source` = ' { $r_adv [ 'id' ] } ' " ;
}
}
} else {
if ( $sourceCl == - 1 ){
$sourceArr [] = " `source` is null " ;
$sourceArr [] = " `source` = '' " ;
$sourceArr [] = " `source` = 'null' " ;
$sourceArr [] = " `source` = '0' " ;
} else {
$sourceArr [] = " `source` = ' { $sourceCl } ' " ;
}
}
}
$bd_usl .= " AND ( " . implode ( " OR " , $sourceArr ) . " ) " ;
}
}
if ( $post [ 'filter_emp' ]){
$doers_who = array ();
$clientsIdsDop = array ();
$empwho = array ();
$empArr = json_decode ( html_entity_decode ( $post [ 'filter_emp' ]), ENT_QUOTES );
foreach ( $empArr as $empId ){
$temp_where = '' ;
//$empwho[] = "id_agent = $empId";
if ( strpos ( $empId , " all_ " ) !== false ){
$agencyId = str_replace ( 'all_' , '' , $empId );
$sql_user = " SELECT id FROM `users` WHERE id= $agencyId or id_manager= $agencyId or id_manager in (select id from users where id_manager= $agencyId ) or id_manager in (select id from users where id_manager in (select id from users where id_manager= $agencyId )) " ;
$q_user = mysql_query ( $sql_user );
while ( $r_user = mysql_fetch_assoc ( $q_user )){
if ( $post [ 'filter_stage' ] && $post [ 'filter_stage' ] == 'filter_work_add' && ! isset ( $post [ 'step' ]) && ! isset ( $post [ 'source' ])){
$empwho [] = " id_agent = " . $r_user [ 'id' ];
} else {
$empwho [] = " who_work = " . $r_user [ 'id' ];
$doers_who [] = ( int ) $r_user [ 'id' ];
}
}
if ( $post [ 'emp' ]){
$doers_who [] = $post [ 'emp' ];
// $stremp .= $stremp .= " or (doers like '%"".$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 = " <b class= \" jw__counter all \" > " . $vsego . " </b> " ;
}
else {
$counter = " " ;
}
return $counter ;
}
public function getCountAllClientsSend ( $funnelId = 0 ) {
$bd_usl_managers = " " ;
$bd_usl = " " ;
// if (!$_GET['all'] || !$_POST['all']) {
$searchUserId = $_SESSION [ 'id' ];
if ( $_SESSION [ 'users_admin' ]) {
$currentUser = new User ;
$currentUser -> checkPermissions ();
$searchUserId = $currentUser -> agencyId ;
}
//$mmid[] = "id_agent = $searchUserId";
$mmid [] = " who_work = $searchUserId " ;
if ( $_GET [ 'deleted' ]) {
$bd_usl = " AND deleted=1 " ;
// если ищем по удаленным и под менеджером - пропускаем этот код - здесь идет добавление по агентству
if ( ! ( $_GET [ 'deleted' ] && $_SESSION [ 'manager' ])) {
$rez1 = mysql_query ( " SELECT id_manager FROM users WHERE id= $searchUserId " );
while ( $mm1 = mysql_fetch_row ( $rez1 )) {
$mmid [] = " id_agent = " . $mm1 [ 0 ];
$rez01 = mysql_query ( " SELECT id_manager FROM users WHERE id= $mm1[0] " );
while ( $mm01 = mysql_fetch_row ( $rez01 )) {
$mmid [] = " id_agent = " . $mm01 [ 0 ];
}
$rez02 = mysql_query ( " SELECT id FROM users WHERE id_manager= $mm1[0] and id_manager<>0 " );
while ( $mm02 = mysql_fetch_row ( $rez02 )) {
$mmid [] = " id_agent = " . $mm02 [ 0 ];
}
}
}
$rez2 = mysql_query ( " SELECT id FROM users WHERE id_manager= $searchUserId " );
while ( $mm2 = mysql_fetch_row ( $rez2 )) {
$mmid [] = " id_agent = " . $mm2 [ 0 ];
$rez03 = mysql_query ( " SELECT id FROM users WHERE id_manager= $mm2[0] " );
while ( $mm03 = mysql_fetch_row ( $rez03 )) {
$mmid [] = " id_agent = " . $mm03 [ 0 ];
}
}
}
$rez3 = mysql_query ( " SELECT id FROM users WHERE id_manager= $searchUserId " );
while ( $mm = mysql_fetch_row ( $rez3 )) {
$mmid [] = " who_work = " . $mm [ 0 ];
$rez04 = mysql_query ( " SELECT id FROM users WHERE id_manager= $mm[0] " );
while ( $mm2 = mysql_fetch_row ( $rez04 )) {
$mmid [] = " who_work = " . $mm2 [ 0 ];
}
}
$bd_usl_managers = " AND ( " . implode ( " OR " , $mmid ) . " ) " ;
// echo $bd_usl_managers.'<br>';
// находим ИД агентства и по нему ищем всех свободных клиентов
$agencyId = - 1 ;
if ( $_SESSION [ 'agency' ]) {
$agencyId = $_SESSION [ 'id' ];
} else {
if ( $_SESSION [ 'manager' ]) {
$user = new User ;
$user -> checkPermissions ();
$agencyId = $user -> id_manager ;
} else {
$user = new User ;
$user -> checkPermissions ();
if ( $user -> id_manager > 0 ) {
$agency = new User ;
$agency -> get ( $user -> id_manager );
if ( $agency -> id_manager ) {
$agency -> get ( $agency -> id_manager );
}
$agencyId = $agency -> id ;
}
}
}
$bd_usl = " funnel_id= $funnelId AND deleted=0 AND confirm = 0 " . $bd_usl_managers . " AND who_work != " . $_SESSION [ 'id' ];
$sql_count = " SELECT COUNT(*) FROM clients WHERE $bd_usl " ;
// echo $sql_count;
$vsego = mysql_result ( mysql_query ( $sql_count ), 0 );
$counter = $vsego ;
return $counter ;
}
public function getCountChartsClients () {
// находим ИД агентства и по нему ищем всех свободных клиентов
$agencyId = - 1 ;
if ( $_SESSION [ 'agency' ]) {
$agencyId = $_SESSION [ 'id' ];
} else {
if ( $_SESSION [ 'manager' ]) {
$user = new User ;
$user -> checkPermissions ();
$agencyId = $user -> id_manager ;
} else {
$user = new User ;
$user -> checkPermissions ();
if ( $user -> id_manager > 0 ) {
$agency = new User ;
$agency -> get ( $user -> id_manager );
if ( $agency -> id_manager ) {
$agency -> get ( $agency -> id_manager );
}
$agencyId = $agency -> id ;
}
}
}
$bd_usl = " deleted=0 AND who_work in
( SELECT id FROM `users` WHERE id = $agencyId or id_manager = $agencyId or id_manager in ( select id from users where id_manager = $agencyId ) or id_manager in ( select id from users where id_manager in ( select id from users where id_manager = $agencyId ))) " ;
$sql_count = " SELECT COUNT(*) FROM clients WHERE $bd_usl " ;
$vsego = mysql_result ( mysql_query ( $sql_count ), 0 );
if ( $vsego > 0 ) {
$counter = " <b class= \" jw__counter all \" > " . $vsego . " </b> " ;
}
else {
$counter = " " ;
}
return $counter ;
}
public function getCountAllClientsNumber ( $workType ) {
// находим ИД агентства и по нему ищем всех свободных клиентов
$agencyId = - 1 ;
if ( $_SESSION [ 'agency' ]) {
$agencyId = $_SESSION [ 'id' ];
} else {
if ( $_SESSION [ 'manager' ]) {
$user = new User ;
$user -> checkPermissions ();
$agencyId = $user -> id_manager ;
} else {
$user = new User ;
$user -> checkPermissions ();
if ( $user -> id_manager > 0 ) {
$agency = new User ;
$agency -> get ( $user -> id_manager );
if ( $agency -> id_manager ) {
$agency -> get ( $agency -> id_manager );
}
$agencyId = $agency -> id ;
}
}
}
$bd_usl = " deleted=0 AND who_work=0 AND work_type = $workType AND id_agent in
( SELECT id FROM `users` WHERE id = $agencyId or id_manager = $agencyId or id_manager in ( select id from users where id_manager = $agencyId ) or id_manager in ( select id from users where id_manager in ( select id from users where id_manager = $agencyId ))) " ;
$sql_count = " SELECT COUNT(*) FROM clients WHERE $bd_usl " ;
return mysql_result ( mysql_query ( $sql_count ), 0 );
}
public function getUsersFilter ( $usersArr , $sessionUserId = false , $sessionUserAdmin = false ){
if ( count ( $usersArr ) == 0 ) {
$userId = $sessionUserId ;
if ( $sessionUserAdmin ) {
$currentUser = new User ;
$currentUser -> checkPermissions ( $userId , false );
$userId = $currentUser -> agencyId ;
}
$user = new User ;
$user -> get ( $userId );
$usersId [] = ( int ) $userId ;
if ( strpos ( $userId , 'allagency_' ) !== false ){
$user -> agency = 1 ;
$usersId [] = ( int ) str_replace ( " allagency_ " , " " , $userId );
} else if ( strpos ( $userId , 'all_' ) !== false ){
$user -> manager = 1 ;
$usersId [] = ( int ) str_replace ( " all_ " , " " , $userId );
}
if ( $user -> agency ){
$rez3 = mysql_query ( " SELECT id, manager FROM users WHERE id_manager= $userId " );
while ( $mm = mysql_fetch_row ( $rez3 )) {
if ( ! in_array (( int ) $mm [ 0 ], $usersId )){
$usersId [] = ( int ) $mm [ 0 ];
}
if ( $mm [ 1 ] == 1 ){
$rez04 = mysql_query ( " SELECT id, manager FROM users WHERE id_manager= $mm[0] " );
while ( $mm2 = mysql_fetch_row ( $rez04 )) {
if ( ! in_array (( int ) $mm2 [ 0 ], $usersId )){
$usersId [] = ( int ) $mm2 [ 0 ];
}
if ( $mm2 [ 1 ] == 1 ){
$rez004 = mysql_query ( " SELECT id, manager FROM users WHERE id_manager= $mm2[0] " );
while ( $mm02 = mysql_fetch_row ( $rez004 )) {
if ( ! in_array (( int ) $mm02 [ 0 ], $usersId )){
$usersId [] = ( int ) $mm02 [ 0 ];
}
}
}
}
}
}
} else if ( $user -> manager ){
$rez04 = mysql_query ( " SELECT id, manager FROM users WHERE id_manager= $userId " );
while ( $mm2 = mysql_fetch_row ( $rez04 )) {
if ( ! in_array (( int ) $mm2 [ 0 ], $usersId )){
$usersId [] = ( int ) $mm2 [ 0 ];
}
if ( $mm2 [ 1 ] == 1 ){
$rez004 = mysql_query ( " SELECT id, manager FROM users WHERE id_manager= $mm2[0] " );
while ( $mm02 = mysql_fetch_row ( $rez004 )) {
if ( ! in_array (( int ) $mm02 [ 0 ], $usersId )){
$usersId [] = ( int ) $mm02 [ 0 ];
}
}
}
}
}
}
else
{
foreach ( $usersArr as $userId ){
if ( strpos ( $userId , 'allagency_' ) !== false ){
$user -> agency = 1 ;
$userId = ( int ) str_replace ( " allagency_ " , " " , $userId );
if ( ! in_array ( $userId , $usersId )){
$usersId [] = $userId ;
}
} else if ( strpos ( $userId , 'all_' ) !== false ){
$user -> manager = 1 ;
$userId = ( int ) str_replace ( 'all_' , '' , $userId );
if ( ! in_array ( $userId , $usersId )){
$usersId [] = $userId ;
}
} else {
if ( ! in_array (( int ) $userId , $usersId )){
$usersId [] = $userId ;
}
}
if ( $user -> agency ){
$rez3 = mysql_query ( " SELECT id, manager FROM users WHERE id_manager= $userId " );
while ( $mm = mysql_fetch_row ( $rez3 )) {
if ( ! in_array (( int ) $mm [ 0 ], $usersId )){
$usersId [] = ( int ) $mm [ 0 ];
}
if ( $mm [ 1 ] == 1 ){
$rez04 = mysql_query ( " SELECT id FROM users WHERE id_manager= $mm[0] " );
while ( $mm2 = mysql_fetch_row ( $rez04 )) {
if ( ! in_array (( int ) $mm2 [ 0 ], $usersId )){
$usersId [] = ( int ) $mm2 [ 0 ];
}
}
}
}
} else if ( $user -> manager ){
$rez04 = mysql_query ( " SELECT id, manager FROM users WHERE id_manager= $userId " );
while ( $mm2 = mysql_fetch_row ( $rez04 )) {
if ( ! in_array (( int ) $mm2 [ 0 ], $usersId )){
$usersId [] = ( int ) $mm2 [ 0 ];
}
if ( $mm2 [ 1 ] == 1 ){
$rez004 = mysql_query ( " SELECT id, manager FROM users WHERE id_manager= $mm2[0] " );
while ( $mm02 = mysql_fetch_row ( $rez004 )) {
if ( ! in_array (( int ) $mm02 [ 0 ], $usersId )){
$usersId [] = ( int ) $mm02 [ 0 ];
}
}
}
}
}
}
}
return $usersId ;
}
public static function get_class_etap ( $clientId , $funnelId ) {
$change_step_query = mysql_query ( " SELECT * FROM clients_funnel_step WHERE client_id = " . $clientId );
$next_id = 0 ;
$change_step = array ( 'step_id' => 0 );
//$lostDate = $client['date_create'];
if ( mysql_num_rows ( $change_step_query ) > 0 ) {
$change_step = mysql_fetch_assoc ( $change_step_query );
$next_id = $change_step [ 'next_id' ];
$lostDate = $change_step [ 'date_update' ];
}
$next_steps = array ();
$funnel_sql = " SELECT * FROM funnel_steps WHERE funnel_id = " . $funnelId . " and deleted=0 order by order_number, branch " ;
$funnel_step = mysql_query ( $funnel_sql );
$isActive = true ;
$classF = ' active' ;
$stage = '' ;
$stageId = 0 ;
if (( int ) $change_step [ 'step_id' ] == 0 ) {
$isActive = false ;
}
$arr_steps = array ();
$countStep = mysql_num_rows ( $funnel_step );
while ( $step = mysql_fetch_assoc ( $funnel_step )) {
$step [ 'isActive' ] = ( int ) $isActive ;
$step [ 'nextStep' ] = false ;
if ( $step [ 'main' ] == 1 && ! $isActive ) {
$next_steps [] = $step [ 'id' ];
}
if ( $step [ 'id' ] == ( int ) $change_step [ 'step_id' ]) {
//$stage = $step['name'];
$next_steps = json_decode ( htmlspecialchars_decode ( $step [ 'next_step' ]));
if ( $next_id == 0 ) {
//$stage = $step['name'];
//$next_steps = json_decode( htmlspecialchars_decode($step['next_step']));
//if($step['branch'] < $branch){
$isActive = false ;
// }
}
} else if ( $step [ 'id' ] == ( int ) $next_id ) {
$isActive = false ;
}
$arr_steps [ $step [ 'id' ]] = $step ;
}
if ( $next_id != 0 && ! empty ( $next_steps )) {
foreach ( $next_steps as $key => $st ) {
if ( $st != $next_id ) {
unset ( $next_steps [ $key ]);
}
}
}
foreach ( $arr_steps as $idstep => $step ) {
$arr_steps [ $idstep ][ 'isNext' ] = 0 ;
if ( in_array ( $idstep , $next_steps )) {
$stage = $step [ 'name' ];
$stageId = $step [ 'id' ];
$arr_steps [ $idstep ][ 'isNext' ] = 1 ;
}
}
$isActive = true ;
foreach ( $arr_steps as $idstep => $step ) {
$classF = '' ;
if ( $isActive ) $classF = ' active' ;
if ( $step [ 'isNext' ] == 1 ) {
$classF = ' nextStep' ;
$isActive = false ;
}
// Покажет сколько мне дней
if ( ! isset ( $lostDate )) $lostDate = date ( 'd.m.Y H:i:s' );
$interval = date_diff ( new DateTime (), new DateTime ( $lostDate )) -> days ;
if ( $interval >= $step [ 'days_step' ]) {
$classF .= ' expired' ;
}
$res [ $idstep ] = $classF ;
$res [ 'stage' ] = $stage ;
$res [ 'stageId' ] = $stageId ;
}
if ( $stageId == 0 ) $stageId = - 1 ;
$sql = " UPDATE clients SET step_id = { $stageId } WHERE id = { $clientId } " ;
mysql_query ( $sql );
$res [ 'sql' ] = $sql ;
//var_dump($res);
//return $res;
}
private function get_bar_etap ( $clientId , $funnelId , $stageId ){
$res = array ( 'bar' => array ());
$res [ 'client_id' ] = $clientId ;
if ( $funnelId == 0 ){
$steps = $this -> steps ;
$stage = " Новый " ;
foreach ( $steps as $step ){
if ( $step [ 'id' ] == $stageId ){
$stage = $step [ 'name' ];
}
}
$res [ 'bar' ] = $steps ;
$res [ 'stage' ] = $stage ;
$res [ 'stageId' ] = $stageId ;
return $res ;
} else {
$change_step_query = $this -> db -> query ( " SELECT * FROM clients_funnel_step WHERE client_id = " . $clientId );
$next_id = 0 ;
$change_step = array ( 'step_id' => 0 );
//$lostDate = $client['date_create'];
if ( $this -> db -> num_rows ( $change_step_query ) > 0 ) {
$change_step = $this -> db -> fetch_assoc ( $change_step_query );
$next_id = $change_step [ 'next_id' ];
$lostDate = $change_step [ 'date_update' ];
} else {
$sql_client = " SELECT date_add FROM clients WHERE id = $clientId " ;
$q_client = $this -> db -> query ( $sql_client );
$r_client = $this -> db -> fetch_assoc ( $q_client );
$lostDate = $r_client [ 'date_add' ];
}
$next_steps = array ();
$funnel_sql = " SELECT * FROM funnel_steps WHERE funnel_id = " . $funnelId . " and deleted=0 order by order_number, branch " ;
$funnel_step = $this -> db -> query ( $funnel_sql );
$isActive = true ;
$classF = ' active' ;
$stage = '' ;
$stageId = 0 ;
if (( int ) $change_step [ 'step_id' ] == 0 ) {
$isActive = false ;
}
$arr_steps = array ();
$countStep = $this -> db -> num_rows ( $funnel_step );
while ( $step = $this -> db -> fetch_assoc ( $funnel_step )) {
$step [ 'isActive' ] = ( int ) $isActive ;
$step [ 'nextStep' ] = false ;
if ( $step [ 'main' ] == 1 && ! $isActive ) {
$next_steps [] = $step [ 'id' ];
}
if ( $step [ 'id' ] == ( int ) $change_step [ 'step_id' ]) {
//$stage = $step['name'];
$next_steps = json_decode ( htmlspecialchars_decode ( $step [ 'next_step' ]));
if ( $next_id == 0 ) {
//$stage = $step['name'];
//$next_steps = json_decode( htmlspecialchars_decode($step['next_step']));
//if($step['branch'] < $branch){
$isActive = false ;
// }
}
} else if ( $step [ 'id' ] == ( int ) $next_id ) {
$isActive = false ;
}
$arr_steps [ $step [ 'id' ]] = $step ;
}
if ( $next_id != 0 && ! empty ( $next_steps )) {
foreach ( $next_steps as $key => $st ) {
if ( $st != $next_id ) {
unset ( $next_steps [ $key ]);
}
}
}
foreach ( $arr_steps as $idstep => $step ) {
$arr_steps [ $idstep ][ 'isNext' ] = 0 ;
if ( in_array ( $idstep , $next_steps )) {
$stage = $step [ 'name' ];
$stageId = $step [ 'id' ];
$arr_steps [ $idstep ][ 'isNext' ] = 1 ;
}
}
$isActive = true ;
foreach ( $arr_steps as $idstep => $step ) {
$classF = '' ;
if ( $isActive ) $classF = ' active' ;
if ( $step [ 'isNext' ] == 1 ) {
$classF = ' nextStep' ;
$isActive = false ;
}
// Покажет сколько мне дней
if ( ! isset ( $lostDate )) $lostDate = date ( 'd.m.Y H:i:s' );
$interval = date_diff ( new DateTime (), new DateTime ( $lostDate )) -> days ;
if ( $interval >= $step [ 'days_step' ]) {
$classF .= ' expired' ;
}
$step [ 'classF' ] = $classF ;
$res [ 'bar' ][] = $step ;
$res [ 'stage' ] = $stage ;
$res [ 'stageId' ] = $stageId ;
}
if ( $stageId == 0 ) $stageId = - 1 ;
// $sql = "UPDATE requisitions SET step_id = {$stageId} WHERE id = {$reqId}";
//$this->db->query($sql);
//$res['sql'] = $sql;
return $res ;
}
}
public function get_client_id ( $id , $agency_id ){
$sql = " SELECT * FROM clients WHERE id = { $id } " ;
$q = mysql_query ( $sql );
$r = mysql_fetch_assoc ( $q );
//Название воронки
if ( $r [ 'funnel_id' ] == 0 ){
$r [ 'name_funnel' ] = " Обычные " ;
} else {
$sql_fun = " SELECT name FROM funnel WHERE id = " . $r [ 'funnel_id' ];
$r [ 'name_funnel' ] = $this -> db -> fetch_assoc ( $this -> db -> query ( $sql_fun ))[ 'name' ];
}
$r [ 'steps' ] = $this -> get_bar_etap ( $r [ 'id' ], $r [ 'funnel_id' ], $r [ 'stage' ]);
$r [ 'work_type' ] = str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $r [ 'work_type' ]);
$r [ 'role_name' ] = str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $r [ 'role' ]);
$r [ 'type_name' ] = str_replace ([ '[' , ']' , '_' , ',' ],[ '' , '' , ' ' , ', ' ], $r [ 'type' ]);
$r [ 'activities' ] = array () ;
$r [ 'activities_name' ] = '' ;
$sql_a = " SELECT * FROM clients_activities WHERE client_id = { $r [ 'id' ] } " ;
$q_a = $this -> db -> query ( $sql_a );
while ( $r_a = $this -> db -> fetch_assoc ( $q_a )){
$r [ 'activities' ][] = $r_a [ 'activity_id' ];
$sql_a_name = " SELECT * FROM activities WHERE id = { $r_a [ 'activity_id' ] } " ;
$q_a_name = $this -> db -> query ( $sql_a_name );
$r_a_name = $this -> db -> fetch_assoc ( $q_a_name );
if ( $r [ 'activities_name' ] != '' ) $r [ 'activities_name' ] .= " , " ;
$r [ 'activities_name' ] .= $r_a_name [ 'name' ];
}
$contract = new Contract ( $this -> db );
$contract -> setAgencyId ( $agency_id );
$typesContracs = $contract -> getTypesName ();
$r [ 'contracts' ] = array ();
$r [ 'contracts_name' ] = '' ;
$sql_a = " SELECT * FROM contracts_client WHERE client_id = { $r [ 'id' ] } " ;
$q_a = $this -> db -> query ( $sql_a );
while ( $r_a = $this -> db -> fetch_assoc ( $q_a )){
$expired = false ;
$diff_date = ( $r_a [ 'date_end' ] - time ()) / 86400 ;
if ( $diff_date < ( int ) $r_a [ 'days' ]){
$expired = true ;
}
$name = $typesContracs [ $r_a [ 'type' ]][ 'type' ] . " № " . $r_a [ 'number' ] . " от " . date ( 'd.m.Y' , $r_a [ 'date_start' ]) . " по " . date ( 'd.m.Y' , $r_a [ 'date_end' ]);
$r [ 'contracts' ][] = array ( 'id' => $r_a [ 'id' ], 'name' => $name , 'expired' => $expired );
if ( $r [ 'contracts_name' ] != '' ) $r [ 'contracts_name' ] .= " , " ;
$r [ 'contracts_name' ] .= $name ;
}
$r [ 'objects' ] = json_decode ( html_entity_decode ( $r [ 'objects' ]), true );
$who_work = $r [ 'who_work' ];
$master_work = '' ;
if (( int ) $who_work > 0 ) {
if ( isset ( $usersToUse ) && isset ( $usersToUse [ $who_work ])) {
$mstr = $usersToUse [ $who_work ];
} else {
$mstr = $this -> db -> fetch_assoc ( $this -> db -> query ( " SELECT agency, manager, agency_name, first_name, last_name, middle_name, role_id, phone, 0 as del FROM users WHERE id= $who_work UNION
SELECT agency , manager , agency_name , first_name , last_name , middle_name , role_id , phone , 1 as del FROM users_delete WHERE user_id = $who_work " ));
}
$master_phone = $mstr [ 'phone' ];
$master_work = trim ( $mstr [ 'last_name' ] . ' ' . $mstr [ 'first_name' ] . ' ' . $mstr [ 'middle_name' ]);
} else {
$master_work = 'В с е агентство' ;
}
$r [ 'master_work' ] = $master_work ;
$partner = " " ;
if ( isset ( $r [ 'employee_id' ]) && $r [ 'employee_id' ] > 0 ) {
$partners = new Partners ;
$partner = $partners -> getPartnerByEmployee ( intval ( $r [ 'employee_id' ]));
}
// $r['source_name'] .= ($partner) ? ((isset($source)) ? " | " : '') . $partner['name'] . ((!empty($partner['resident'])) ? ' <span class="stagebar-title">(' . $partner['resident']. ')</span>' : '') : '';
$r [ 'employe_name' ] = $partner [ 'fullname' ];
if ( ! empty ( $partner [ 'position' ])){
$r [ 'employe_name' ] .= " , " . $partner [ 'position' ];
}
return $r ;
}
public function prev_step_event ( $clientId , $stepId , $is_open_step = false ){
$sql = " SELECT * FROM funnel_steps WHERE id = $stepId " ;
// echo $sql."\n";
$q = $this -> db -> query ( $sql );
$r = $this -> db -> fetch_assoc ( $q );
$sql_client = " SELECT * FROM clients WHERE id= $clientId " ;
$q_client = $this -> db -> query ( $sql_client );
$client = $this -> db -> fetch_assoc ( $q_client );
if ( ! empty ( $r [ 'pole_prev' ])){
$pole_prev = json_decode ( htmlspecialchars_decode ( $r [ 'pole_prev' ]));
// var_dump($pole_prev);
foreach ( $pole_prev as $pole => $value_pole ){
switch ( $pole ){
case 'tasks' : {
if ( ! $is_open_step ){
$name = '' ;
if ( $client [ 'who_work' ] > 0 ){
foreach ( $value_pole as $vp ){
if ( ! empty ( $vp -> type )){
$set = " SET client_id = { $clientId } " ;
if ( ! empty ( $vp -> name )){
$name = $vp -> name ;
} else if ( $vp -> type == 'even' ){
$name = " Мероприятие " ;
}
$date_time = date ( 'Y-m-d H:i:s' );
if ( ! empty ( $vp -> time )){
$date_time = date ( 'Y-m-d H:i:s' , strtotime ( $vp -> time ));
}
$set .= " , user_id = { $client [ 'who_work' ] } , type = ' { $vp -> type } ', comment=' { $vp -> comment } ', schedule_date = ' { $date_time } ', from_id = { $client [ 'who_work' ] } , open_step=1 " ;
if ( ! empty ( $name )){
$set .= " , name=' { $name } ' " ;
}
$insert_ev = " INSERT INTO user_client_events { $set } " ;
// echo $insert_ev;
$this -> db -> query ( $insert_ev );
}
}
}
}
break ;
}
case 'tasks_all' : {
if ( ! $is_open_step ){
$name = '' ;
if ( $client [ 'who_work' ] > 0 ){
foreach ( $value_pole as $vp ){
if ( ! empty ( $vp -> type )){
$set = " SET client_id = { $clientId } " ;
if ( ! empty ( $vp -> name )){
$name = $vp -> name ;
} else if ( $vp -> type == 'even' ){
$name = " Мероприятие " ;
}
$date_time = date ( 'Y-m-d H:i:s' );
if ( ! empty ( $vp -> time )){
$date_time = date ( 'Y-m-d H:i:s' , strtotime ( $vp -> time ));
}
$set .= " , user_id = { $client [ 'who_work' ] } , type = ' { $vp -> type } ', comment=' { $vp -> comment } ', schedule_date = ' { $date_time } ', from_id = { $client [ 'who_work' ] } , open_step=1 " ;
if ( ! empty ( $name )){
$set .= " , name=' { $name } ' " ;
}
$insert_ev = " INSERT INTO user_client_events { $set } " ;
// echo $insert_ev;
$this -> db -> query ( $insert_ev );
}
}
}
}
break ;
}
case 'comment' : {
if ( ! $is_open_step ){
if ( ! empty ( $value_pole )){
// $set .= ", user_id = {$req['who_work']}, type = '{$vp->type}', comment='{$vp->comment}', schedule_date = '{$date_time}', from_id = {$req['who_work']}, open_step=1";
$insert_ev = " INSERT INTO user_client_events SET client_id = { $clientId } , user_id = { $client [ 'who_work' ] } , type = 'comment', comment=' { $value_pole } ', from_id = { $client [ 'who_work' ] } , open_step=1 " ;
//echo $insert_ev;
$this -> db -> query ( $insert_ev );
}
}
break ;
}
case 'new_who_work' : {
//Добавляем событие передачи
if ( ! $is_open_step ){
if ( $pole_prev -> is_new_who_work != 0 && ! empty ( $value_pole ) && ( int ) $value_pole != 0 ){
$confirm = 0 ;
if ( $client [ 'who_work' ] == $value_pole ) {
$confirm = 1 ;
}
if ( $confirm == 0 ) {
$sql_client_up = " UPDATE clients SET who_work= { $value_pole } , confirm=0 WHERE id = { $clientId } " ;
$this -> db -> query ( $sql_client_up );
$sql_conf = " INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `dop_text`, `event`) VALUES ( { $client [ 'who_work' ] } , { $clientId } , { $value_pole } , '(автоматическая передача при переходе на этап)', 'transmitted') " ;
$this -> db -> query ( $sql_conf );
}
}
}
break ;
}
case 'new_doers' : {
if ( ! $is_open_step )
{
if ( $pole_prev -> is_new_doers > 0 ){
if ( ! empty ( $value_pole )){
$doers = array ();
$doers_confirm = $client [ 'doers_confirm' ];
//$doer_clients = $req['doer_clients'];
if ( ! empty ( $client [ 'doers' ])){
$doers = json_decode ( htmlspecialchars_decode ( $client [ 'doers' ]), true );
}
foreach ( $value_pole as $doer_id ){
if ( ! isset ( $doers [ $doer_id ]) && $doer_id != $client [ 'who_work' ]){
$doers_confirm = 0 ;
$doers [ $doer_id ] = 0 ;
$sql_conf = " INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `dop_text`, `event`) VALUES ( { $client [ 'who_work' ] } , { $clientId } , { $doer_id } , '(автоматически при переходе на этап)','transmitted_parallel') " ;
$this -> db -> query ( $sql_conf );
}
}
if ( ! empty ( $doers )){
$sql_up_doer = " UPDATE clients SET doers_confirm = { $doers_confirm } , doers = ' " . clearInputElement ( json_encode ( $doers )) . " ' WHERE id = " . $clientId ;
$this -> db -> query ( $sql_up_doer );
}
}
}
}
break ;
}
case 'files_attach' : {
if ( ! $is_open_step ){
if ( ! empty ( $value_pole )){
foreach ( $value_pole as $vp ){
$sql_file = " SELECT * FROM files_steps_funnel_prev WHERE id = { $vp -> id } " ;
$q_file = $this -> db -> query ( $sql_file );
while ( $r_file = $this -> db -> fetch_assoc ( $q_file )){
$patch_new = $_SERVER [ 'DOCUMENT_ROOT' ] . " /upload/clients/ " . $clientId ;
//echo $patch_new;
if ( ! file_exists ( $patch_new )){
mkdir ( $patch_new , 0777 );
}
$patch = $_SERVER [ 'DOCUMENT_ROOT' ] . " /upload/funnels/prev_steps/ " . $r_file [ 'funnel_id' ];
$name = $r_file [ 'guid' ] . '.' . $r_file [ 'type' ];
// Источник может быть только в Селектеле — локальную копию удаляет
// cron clearFunnelPrevStepFilesExistsInSelectel.php после заливки в облако.
$source_local = $patch . " / " . $name ;
$source_cdn = " https://uf.joywork.ru/upload/funnels/prev_steps/ " . $r_file [ 'funnel_id' ] . " / " . $name ;
$source_content = false ;
if ( file_exists ( $source_local )) {
$source_content = @ file_get_contents ( $source_local );
} else {
// Один HTTP-запрос вместо HEAD+GET. При 404/timeout — false.
$ctx = stream_context_create ([ 'http' => [ 'timeout' => 15 ]]);
$source_content = @ file_get_contents ( $source_cdn , false , $ctx );
if ( $source_content === '' ) {
$source_content = false ;
}
}
if ( $source_content !== false ) {
$name_new = md5 ( time () . $name );
@ file_put_contents ( $patch_new . " / " . $name_new . " . " . $r_file [ 'type' ], $source_content );
//отпарвляем файл в Селектел (токен получаем один раз на все файлы этапа)
if ( empty ( $token )) {
$token = SelectelApi :: getNewToken ();
}
$contType = " application/octet-stream " ;
$type = $r_file [ 'type' ];
if ( $type ) {
$type = strtolower ( $type );
}
if ( $type === " doc " ) {
$contType = " application/msword " ;
}
if ( $type === " docx " ) {
$contType = " application/vnd.openxmlformats-officedocument.wordprocessingml.document " ;
}
if ( $type === " xls " ) {
$contType = " application/vnd.ms-excel " ;
}
if ( $type === " xlsx " ) {
$contType = " application/vnd.openxmlformats-officedocument.spreadsheetml.sheet " ;
}
if ( $type === " pdf " ) {
$contType = " application/pdf " ;
}
if ( $type === " jpeg " || $type === " jpg " ) {
$contType = " image/jpeg " ;
}
if ( $type === " gif " ) {
$contType = " image/gif " ;
}
if ( $type === " png " ) {
$contType = " image/png " ;
}
if ( $type === " mp3 " ) {
$contType = " audio/mpeg " ;
}
if ( $type === " zip " ) {
$contType = " application/zip " ;
}
if ( $type === " rar " ) {
$contType = " application/vnd.rar " ;
}
$new_path = " /upload/clients/ " . $clientId . " / " . $name_new . '.' . $type ;
$r = SelectelApi :: uploadUserFile ( $token , $patch_new . " / " . $name_new . " . " . $r_file [ 'type' ], $new_path , $contType );
$sql_event_file = " INSERT INTO user_client_events SET client_id = { $clientId } , user_id = { $client [ 'who_work' ] } , type = 'file', comment = ' { $vp -> comment } ', from_id = { $client [ 'who_work' ] } , open_step=1 " ;
$this -> db -> query ( $sql_event_file );
$event_id = $this -> db -> insert_id ();
$sql_in_file = " INSERT INTO clients_files (guid, client_id, type, name, event_id)
VALUES ( '{$name_new}' , '{$clientId}' , '{$r_file[' type ']}' , '{$r_file[' name ']}' , '{$event_id}' ) " ;
$this -> db -> query ( $sql_in_file );
$client_file_id = $this -> db -> insert_id ();
if ( ! empty ( $vp -> name )){
$sql = " INSERT INTO names_client_files SET name = ' { $vp -> name } ' " ;
$this -> db -> query ( $sql );
$id_name = $this -> db -> insert_id ();
$sql = " UPDATE `clients_files` SET `name_id` = { $id_name } WHERE `id` = { $client_file_id } " ;
$this -> db -> query ( $sql );
}
} else {
error_log ( " prev_step_event(client= { $clientId } ): files_attach source missing local= { $source_local } cdn= { $source_cdn } " );
}
}
}
}
}
break ;
}
case 'list_users_select' : {
if ( $pole_prev -> is_mes > 0 ){
if ( ! empty ( $value_pole )){
$tempid = 0 ;
$users_mes = $value_pole ;
$userId = ( int ) $_SESSION [ 'id' ];
$who_work = 0 ;
$user1 = $this -> db -> fetch_assoc ( $this -> db -> query ( " SELECT * FROM users WHERE id = { $userId } " ));
$post = " Сотрудник " ;
if ( $user1 [ 'agency' ] == 1 ) {
$post = " Агенство " ;
} else if ( $user1 [ 'manager' ] == 1 ) {
$post = " Менеджер " ;
}
$text = " <b> " . $post . " " . trim ( $user1 [ 'last_name' ] . ' ' . $user1 [ 'first_name' ] . ' ' . $user1 [ 'middle_name' ]) . " </b><br>перевел(а ) клиента на этап « " . $r [ 'name' ] . " » " ;
if ( $is_open_step ){
$text .= " (этап открыт повторно) " ;
}
$who_work = $req [ 'who_work' ];
$text .= " <br><i>Клиент: </i> " . $client [ 'phone' ] . ' ' . $client [ 'fio' ] . " ID: " . $client [ 'id' ] . " <br> " ;
}
$text = htmlspecialchars ( $text );
$userMes = array ();
$send = 0 ;
if ( $close ){
$tempid = time ();
$send = 1 ;
}
// $user_id_mes = false;
foreach ( $users_mes as $key => $user_id_mes_ ) {
unset ( $user_id_mes );
if ( $users_mes [ $key ] === 'manager' ) {
$managerWhoWork = $this -> db -> fetch_assoc ( $this -> db -> query ( " SELECT * FROM users WHERE id = { $who_work } " ));
$user_id_mes = $managerWhoWork [ 'id_manager' ];
} else if ( $users_mes [ $key ] == 0 ){
$user_id_mes = $who_work ;
} else {
$user_id_mes = $user_id_mes_ ;
}
if ( ! in_array ( $user_id_mes , $userMes ) && $user_id_mes != $_SESSION [ 'id' ]){
$sqlMesIn = " INSERT INTO step_notify_closure SET user_id = { $user_id_mes } , from_id= { $userId } , step_id= { $stepId } , text=' { $text } ', send= { $send } , temp_id= { $tempid } " ;
$this -> db -> query ( $sqlMesIn );
$userMes [] = $user_id_mes ;
}
}
}
break ;
}
case 'adjacent_funnels' : {
if ( ! $is_open_step ){
if ( $pole_prev -> is_adjacent_funnels > 0 ){
if ( ! empty ( $value_pole )){
$adjacent_funnels = $value_pole ;
foreach ( $adjacent_funnels as $funnel ){
$sql_a_f = " SELECT id FROM adjacent_funnels WHERE funnel_id = { $funnel } AND client_id = { $clientId } " ;
$row_a_f = $this -> db -> num_rows ( $this -> db -> query ( $sql_a_f ));
if ( $row_a_f == 0 ){
$this -> db -> query ( " INSERT INTO adjacent_funnels (funnel_id, client_id, parent_funnel_id, parent_step_id) VALUES ( { $funnel } , { $clientId } , { $client [ 'funnel_id' ] } , { $client [ 'step_id' ] } ) " );
$comment = " Клиент переведен в смежную воронку " ;
$sql_funnel = " SELECT name FROM funnel WHERE id = { $funnel } " ;
$nameFunnel = " « " . $this -> db -> fetch_assoc ( $this -> db -> query ( $sql_funnel ))[ 'name' ] . " » " ;
$comment = $comment . ' ' . $nameFunnel ;
$sql_event_adj = " INSERT INTO user_client_events SET client_id = { $clientId } , user_id = { $client [ 'who_work' ] } , type = 'comment', comment = ' { $comment } ', from_id = { $client [ 'who_work' ] } , open_step=1 " ;
$this -> db -> query ( $sql_event_adj );
}
}
}
}
}
break ;
}
}
}
}
}
//Дополнительные поля
private function add_client_info ( $client_id , $post ){
$sql = " SELECT id FROM clients_dop_info WHERE client_id = { $client_id } " ;
$q = mysql_query ( $sql );
$persone_no_ip = 0 ;
if ( $post [ 'persone_no_ip' ]){
$persone_no_ip = 1 ;
}
if ( mysql_num_rows ( $q ) > 0 ){
$sql_in = " UPDATE clients_dop_info SET
persone_no_ip = { $persone_no_ip },
passport = '{$post[' passport ']}' ,
date_of_issue_passport = '{$post[' date_of_issue_passport ']}' ,
passport_issued_by = '{$post[' passport_issued_by ']}' ,
birthplace = '{$post[' birthplace ']}' ,
registration_address = '{$post[' registration_address ']}' ,
post_address = '{$post[' post_address ']}' ,
persone_snils = '{$post[' persone_snils ']}' ,
persone_nationality = '{$post[' persone_nationality ']}' ,
persone_gender = '{$post[' persone_gender ']}' ,
persone_full_name = '{$post[' persone_full_name ']}' ,
persone_short_name = '{$post[' persone_short_name ']}' ,
persone_ogrn = '{$post[' persone_ogrn ']}' ,
persone_inn = '{$post[' persone_inn ']}' ,
persone_kpp = '{$post[' persone_kpp ']}' ,
persone_legal_address = '{$post[' persone_legal_address ']}' ,
persone_fact_address = '{$post[' persone_fact_address ']}' ,
persone_info_bank = '{$post[' persone_info_bank ']}' ,
persone_name_bank = '{$post[' persone_name_bank ']}' ,
persone_bik_bank = '{$post[' persone_bik_bank ']}' ,
persone_rs_bank = '{$post[' persone_rs_bank ']}' ,
persone_kors_bank = '{$post[' persone_kors_bank ']}' ,
persone_fio_rukovod = '{$post[' persone_fio_rukovod ']}' ,
persone_powers = '{$post[' persone_powers ']}' ,
persone_kod_podrazdelenia = '{$post[' persone_kod_podrazdelenia ']}'
WHERE client_id = { $client_id }
" ;
} else {
$sql_in = " INSERT INTO clients_dop_info SET
client_id = { $client_id },
persone_no_ip = { $persone_no_ip },
passport = '{$post[' passport ']}' ,
date_of_issue_passport = '{$post[' date_of_issue_passport ']}' ,
passport_issued_by = '{$post[' passport_issued_by ']}' ,
birthplace = '{$post[' birthplace ']}' ,
registration_address = '{$post[' registration_address ']}' ,
post_address = '{$post[' post_address ']}' ,
persone_snils = '{$post[' persone_snils ']}' ,
persone_nationality = '{$post[' persone_nationality ']}' ,
persone_gender = '{$post[' persone_gender ']}' ,
persone_full_name = '{$post[' persone_full_name ']}' ,
persone_short_name = '{$post[' persone_short_name ']}' ,
persone_ogrn = '{$post[' persone_ogrn ']}' ,
persone_inn = '{$post[' persone_inn ']}' ,
persone_kpp = '{$post[' persone_kpp ']}' ,
persone_legal_address = '{$post[' persone_legal_address ']}' ,
persone_fact_address = '{$post[' persone_fact_address ']}' ,
persone_name_bank = '{$post[' persone_name_bank ']}' ,
persone_info_bank = '{$post[' persone_info_bank ']}' ,
persone_bik_bank = '{$post[' persone_bik_bank ']}' ,
persone_rs_bank = '{$post[' persone_rs_bank ']}' ,
persone_kors_bank = '{$post[' persone_kors_bank ']}' ,
persone_fio_rukovod = '{$post[' persone_fio_rukovod ']}' ,
persone_powers = '{$post[' persone_powers ']}' ,
persone_kod_podrazdelenia = '{$post[' persone_kod_podrazdelenia ']}' " ;
}
mysql_query ( $sql_in );
}
//Объединение клиентов
public function union_client ( $id , $ids , $user_id , $is_union_req ){
if ( $id > 0 && ! empty ( $ids ) && $user_id > 0 ){
$phone_arr = [];
$sql = " SELECT * FROM clients WHERE id = { $id } " ;
$q = $this -> db -> query ( $sql );
$r = $this -> db -> fetch_assoc ( $q );
if ( ! empty ( $r [ 'phone2' ])){
$phone_arr = json_decode ( html_entity_decode ( $r [ 'phone2' ]), ENT_QUOTES );
}
$reqs = array ();
$sql_req = " SELECT * FROM requisitions WHERE client_id = { $id } AND deleted=0 and cancel=0 " ;
$q_req = $this -> db -> query ( $sql_req );
while ( $r_req = $this -> db -> fetch_assoc ( $q_req )){
$reqs [] = $r_req ;
}
$phones = [];
$text = " Объединен с клиентами: " ;
$sql_clients = " SELECT * FROM clients WHERE id in ( " . implode ( ',' , $ids ) . " ) " ;
$q_clients = $this -> db -> query ( $sql_clients );
while ( $r_clients = $this -> db -> fetch_assoc ( $q_clients )){
if ( $text != " Объединен с клиентами: " ) $text .= " , " ;
$text .= $r_clients [ 'phone' ];
$phone_arr [] = $r_clients [ 'phone' ];
$sql_phone2 = " SELECT * FROM clients_phone2 WHERE client_id = { $r_clients [ 'id' ] } " ;
$q_phone2 = $this -> db -> query ( $sql_phone2 );
while ( $r_phone2 = $this -> db -> fetch_assoc ( $q_phone2 )){
$phone_arr [] = $r_phone2 [ 'phone' ];
}
$sql_update_event = " UPDATE user_client_events SET client_id = { $id } WHERE client_id = { $r_clients [ 'id' ] } " ;
//echo $sql_update_event;
$this -> db -> query ( $sql_update_event );
if ( $is_union_req > 0 ){
$sql_req_dop = " SELECT * FROM requisitions WHERE client_id = { $r_clients [ 'id' ] } AND deleted=0 and cancel=0 " ;
$q_req_dop = $this -> db -> query ( $sql_req_dop );
while ( $r_req_dop = $this -> db -> fetch_assoc ( $q_req_dop )){
$is_union_req = false ;
foreach ( $reqs as $req ){
// var_dump($r_req_dop['type_id'] == $req['type_id'] && $r_req_dop['who_work'] == $req['who_work']);
if ( $r_req_dop [ 'type_id' ] == $req [ 'type_id' ] && $r_req_dop [ 'who_work' ] == $req [ 'who_work' ]){
$is_union_req = true ;
$sql_update_event_req = " UPDATE user_client_events SET req_id = { $req [ 'id' ] } WHERE req_id = { $r_req_dop [ 'id' ] } " ;
$this -> db -> query ( $sql_update_event_req );
$sql_cancel = " UPDATE requisitions SET cancel = 1 WHERE id = { $r_req_dop [ 'id' ] } " ;
$this -> db -> query ( $sql_cancel );
2026-07-10 08:47:22 +02:00
// Записываем объединение в union_requisitions
$sql_union = " INSERT INTO union_requisitions (main_id, req_id, user_id, agency_id) VALUES ( { $req [ 'id' ] } , { $r_req_dop [ 'id' ] } , { $user_id } , { $this -> agencyId } ) " ;
$this -> db -> query ( $sql_union );
2026-05-22 20:21:54 +02:00
}
}
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 );
}
}
}
?>