query($sql); $tel = new Telegram(false, $pdo); $max = new MaxClass(); function move_req($req, $steps){ global $pdo; global $agency_users; global $users; global $tel; global $max; $db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306'); $text_tel = "Ваша Заявка ID {$req['id']} переведен в общие, по причине истечения срока даты выполнения этапа \"".$steps[(int)$req['step_id']]['name']."\""; if(isset($users[$req['who_work']])){ $user = $users[$req['who_work']]; } else { $user = new User(); $user->get($req['who_work']); $users[$req['who_work']] = $user; $agency_users[$req['who_work']] = $user->agencyId; } $sql_u = "UPDATE requisitions SET who_work=0, confirm=0 WHERE id = {$req['id']}"; $pdo->query($sql_u); if($user->telegramm_chat_id > 0){ $tel->send($text_tel, $user->telegramm_chat_id); } if($user->max_notice > 0 && $user->max_user_id > 0){ $max->send_messages_to_user($user->max_user_id, $text_tel); } $dop_text = "Переведена в общие так как просрочен срок закрытия этапа «".$steps[(int)$req['step_id']]['name']."»"; $sql_ev = "INSERT INTO events_clients (req_id, event, dop_text, user_id) VALUES ({$req['id']}, 'update', '{$dop_text}', {$req['who_work']})"; $pdo->query($sql_ev); if(($req['type_id'] == 2 || $req['heir'] == 2) && $req['object_id']>0){ //Данные объекта $sql_obj = "SELECT * FROM objects WHERE id = {$req['object_id']}"; $q_obj = $pdo->query($sql_obj); $obj = $pdo->fetch_assoc($q_obj); $user_id = $obj['id_add_user']; $agency_id = 0; //Вычисляем агенство if(!isset($agency_users[$user_id])){ $user = new User(); $user->get($user_id); $agency_id = $user->agencyId; $agency_users[$user_id] = $agency_id; } else { $agency_id = $agency_users[$user_id]; } if($agency_id > 0){ $newUser = new User; $newUser->get($agency_id); $currentUser = $newUser; $phone = $newUser->phone; $num_search = User::num_search($phone); $sobstv = trim($newUser->last_name . ' ' . $newUser->first_name . ' ' . $newUser->middle_name); if ($newUser->agency == 0) { $sql="SELECT * FROM users WHERE id=$newUser->id_manager"; $rez=$this->db->query($sql); $manager = $this->db->fetch_assoc($rez); if($manager['id_manager']) { $agency = $this->db->fetch_assoc($this->db->query("SELECT * FROM users WHERE id=$manager[id_manager]")); } else { $agency = $manager; } if ($agency) { $sobstv = trim($currentUser->last_name . ' ' . $currentUser->first_name . ' ' . $currentUser->middle_name) . ", агентство " . $agency['agency_name']; } } else { $sobstv = $sobstv . ", агентство " . $newUser->agency_name; } $sql_obj_up = "UPDATE objects SET id_add_user={$agency_id}, phone = '{$phone}', phone_search = '{$num_search}', sobstv = '{$sobstv}', is_main = 0 WHERE id = {$obj['id']}"; $pdo->query($sql_obj_up); //Запись в сфинкс $sql_sph = "UPDATE objects SET id_add_user={$agency_id}, phone_search = '$num_search' WHERE id={$obj['id']}"; $db_sphinx->query($sql_sph); $sql_ev = "INSERT INTO user_object_events(user_id, object_id, create_date, type, address, sum, schedule_date, comment, calendar_view) VALUES({$agency_id}, {$obj['id']}, NOW(), 'comment', NULL, NULL, NULL, 'Объект был переведен по причине просрочки этапа «{$steps[(int)$req['step_id']]['name']}»', '1')"; $pdo->query($sql_ev); } } } function move_client($client, $steps){ global $pdo; global $agency_users; global $users; global $tel; $db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306'); $text_tel = "Ваша Клиент ID {$client['id']} переведен в общие, по причине истечения срока даты выполнения этапа \"".$steps[(int)$client['step_id']]['name']."\""; if(isset($users[$client['who_work']])){ $user = $users[$client['who_work']]; } else { $user = new User(); $user->get($client['who_work']); $users[$client['who_work']] = $user; $agency_users[$client['who_work']] = $user->agencyId; } //$db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306'); $sql_u = "UPDATE clients SET who_work=0, confirm=0 WHERE id = {$client['id']}"; $pdo->query($sql_u); if($user->telegramm_chat_id > 0){ $tel->send($text_tel, $user->telegramm_chat_id); } $dop_text = "Переведен в общие так как просрочен срок закрытия этапа «".$steps[(int)$client['step_id']]['name']."»"; $sql_ev = "INSERT INTO events_clients (client_id, event, dop_text, user_id) VALUES ({$client['id']}, 'update', '{$dop_text}', {$client['who_work']})"; $pdo->query($sql_ev); } $steps = array(); $steps_ids = array(); $agency_users = array(); $users = array(); $sql = "SELECT * FROM funnel_steps WHERE is_move_end_srok = 1 AND deleted = 0"; $q = $pdo->query($sql); while($r = $pdo->fetch_assoc($q)){ $steps[$r['id']] = $r; $steps_ids[] = $r['id']; } //var_dump($steps_ids); if(!empty($steps_ids)){ //Для заявок $sql_req = "SELECT id, step_id, created_at, object_id, who_work, type_id,(SELECT heir FROM requisitions_type WHERE id = requisitions.type_id) as heir, (SELECT date_update FROM clients_funnel_step WHERE req_id=requisitions.id) as date_update FROM requisitions WHERE funnel_id > 0 AND step_id in (".implode(',',$steps_ids).") and who_work > 0 AND deleted=0 AND cancel=0"; $q_req = $pdo->query($sql_req); $reqs_task = array(); while($r_req = $pdo->fetch_assoc($q_req)){ if($steps[(int)$r_req['step_id']]['days_step'] > 0){ $set_move = array('is_task'=>0); if(!empty($steps[(int)$r_req['step_id']]['tasks_move'])){ $set_move = json_decode($steps[(int)$r_req['step_id']]['tasks_move'], true); } $days_step = $steps[(int)$r_req['step_id']]['days_step']; if(!empty($r_req['date_update'])){ $lostDate = $r_req['date_update']; $interval = date_diff(new DateTime(), new DateTime($lostDate))->days; if($interval >= $days_step){ if($set_move['is_task'] == 1){ $delta_time = '-1 hour'; if(isset($users[$r_req['who_work']])){ $user = $users[$r_req['who_work']]; } else { $user = new User(); $user->get($r_req['who_work']); $users[$r_req['who_work']] = $user; $agency_users[$r_req['who_work']] = $user->agencyId; } //Вычисляем агенство if(!isset($agency_users[$r_req['who_work']])){ $user = new User(); $user->get($r_req['who_work']); $agency_id = $user->agencyId; $agency_users[$r_req['who_work']] = $agency_id; } else { $agency_id = $agency_users[$r_req['who_work']]; } if($agency_id == 13154){ $delta_time = '-1 day'; } $sql_task = "SELECT id FROM user_client_events WHERE req_id = {$r_req['id']} AND calendar_view = 0 and schedule_date is not null AND schedule_date >= '".date("Y-m-d H:i:s", strtotime($delta_time))."'"; // echo $sql_task; $q_task = $pdo->query($sql_task); if($pdo->num_rows($q_task) == 0){ move_req($r_req, $steps); } } else { move_req($r_req, $steps); } } } else { $lostDate = $r_req['created_at']; $interval = date_diff(new DateTime(), new DateTime($lostDate))->days; if($interval >= $days_step){ $sql_event = "SELECT * FROM `events_clients` where `req_id` = {$r_req['id']} and event = 'update' order by id desc limit 1"; //echo $sql_event."\n"; $q_event = $pdo->query($sql_event); if($pdo->num_rows($q_event) > 0){ $r_event = $pdo->fetch_assoc($q_event); $lostDate1 = $r_event['date_update']; $interval1 = date_diff(new DateTime(), new DateTime($lostDate1))->days; if($interval1 >= $days_step){ if($set_move['is_task'] == 1){ $delta_time = '-1 hour'; if(isset($users[$r_req['who_work']])){ $user = $users[$r_req['who_work']]; } else { $user = new User(); $user->get($r_req['who_work']); $users[$r_req['who_work']] = $user; $agency_users[$r_req['who_work']] = $user->agencyId; } //Вычисляем агенство if(!isset($agency_users[$r_req['who_work']])){ $user = new User(); $user->get($r_req['who_work']); $agency_id = $user->agencyId; $agency_users[$r_req['who_work']] = $agency_id; } else { $agency_id = $agency_users[$r_req['who_work']]; } if($agency_id == 13154){ $delta_time = '-1 day'; } $sql_task = "SELECT id FROM user_client_events WHERE req_id = {$r_req['id']} AND calendar_view = 0 and schedule_date is not null AND schedule_date >= '".date("Y-m-d H:i:s", strtotime($delta_time))."'"; $q_task = $pdo->query($sql_task); if($pdo->num_rows($q_task) == 0){ move_req($r_req, $steps); } } else { move_req($r_req, $steps); } } } else { move_req($r_req, $steps); } } } } } //Для клиентов $sql_client = "SELECT id, step_id, date_add, who_work, (SELECT date_update FROM clients_funnel_step WHERE client_id=clients.id) as date_update FROM clients WHERE funnel_id > 0 AND step_id in (".implode(',',$steps_ids).") and who_work > 0 AND deleted=0"; $q_client = $pdo->query($sql_client); while($r_client = $pdo->fetch_assoc($q_client)){ if($steps[(int)$r_client['step_id']]['days_step'] > 0){ $set_move = array('is_task'=>0); if(!empty($steps[(int)$r_req['step_id']]['tasks_move'])){ $set_move = json_decode($steps[(int)$r_req['step_id']]['tasks_move'], true); } $days_step = $steps[(int)$r_client['step_id']]['days_step']; if(!empty($r_client['date_update'])){ $lostDate = $r_client['date_update']; $interval = date_diff(new DateTime(), new DateTime($lostDate))->days; // echo $r_client['id']." - ".$interval." - ".$days_step."\n"; if($interval >= $days_step){ if($set_move['is_task'] == 1){ $sql_task = "SELECT id FROM user_client_events WHERE client_id = {$r_client['id']} AND calendar_view = 0 and schedule_date is not null AND schedule_date >= '".date("Y-m-d H:i:s")."'"; $q_task = $pdo->query($sql_task); if($pdo->num_rows($q_task) == 0){ move_req($r_client, $steps); } } else { move_client($r_client, $steps); } } } else { $lostDate = $r_client['date_add']; $interval = date_diff(new DateTime(), new DateTime($lostDate))->days; // echo $r_client['id']." - ".$interval." - ".$days_step."\n"; if($interval >= $days_step){ if($set_move['is_task'] == 1){ $sql_task = "SELECT id FROM user_client_events WHERE client_id = {$r_client['id']} AND calendar_view = 0 and schedule_date is not null AND schedule_date >= '".date("Y-m-d H:i:s")."'"; $q_task = $pdo->query($sql_task); if($pdo->num_rows($q_task) == 0){ move_req($r_client, $steps); } } else { move_client($r_client, $steps); } } } } } //var_dump($expiredStagesClients); // var_dump($agency_users); }