957 lines
45 KiB
PHP
957 lines
45 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
class Telegram {
|
|||
|
|
public $debug = false;
|
|||
|
|
private $db = null;
|
|||
|
|
private $user = null;
|
|||
|
|
private $TOKEN = '793676666:AAGFo66CjsmO2KxZVRwQbH8pLTvenpsHiHI';
|
|||
|
|
|
|||
|
|
|
|||
|
|
public function __construct($is_user=true, $db = null, $debug = false) {
|
|||
|
|
|
|||
|
|
if ($debug == true) {
|
|||
|
|
$this->debug = true;
|
|||
|
|
error_reporting(E_ALL | E_STRICT);
|
|||
|
|
ini_set('display_errors', 1);
|
|||
|
|
}
|
|||
|
|
if($is_user){
|
|||
|
|
if (isset($_SESSION['id'])) {
|
|||
|
|
if (isset($user)) {
|
|||
|
|
$this->user = $user;
|
|||
|
|
} else {
|
|||
|
|
$user_id = intval($_SESSION['id']);
|
|||
|
|
$user = new User;
|
|||
|
|
$user->get($user_id);
|
|||
|
|
$this->user = $user;
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$this->user = null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!is_null($db)) {
|
|||
|
|
$this->db = $db;
|
|||
|
|
} else {
|
|||
|
|
$pdo = new MysqlPdo(hst, ndb, user, pass);
|
|||
|
|
$pdo->query("SET NAMES 'utf8'");
|
|||
|
|
$this->db = $pdo;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private function clearInputElement($el2) // очистка входящего элимента
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
$el = $el2;
|
|||
|
|
|
|||
|
|
$el = strip_tags($el); // от тегов
|
|||
|
|
|
|||
|
|
$el = htmlspecialchars($el); // от кавычек и прочего
|
|||
|
|
|
|||
|
|
$el = str_replace("\n", "<br>", $el);
|
|||
|
|
|
|||
|
|
$el = str_replace("\r", "", $el);
|
|||
|
|
|
|||
|
|
$el = mysql_real_escape_string($el); // от MySQL-инъекций
|
|||
|
|
|
|||
|
|
$el = trim($el); // от лишних пробелов
|
|||
|
|
|
|||
|
|
$el = stripslashes($el); // от слэшей
|
|||
|
|
|
|||
|
|
return $el;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//Выборка клиентов
|
|||
|
|
public function get_clients_array($client_ids){
|
|||
|
|
$clients = array();
|
|||
|
|
$sql_cl = "SELECT id, phone, fio, of_objects, opis FROM clients WHERE id in (".implode(',',$client_ids).")";
|
|||
|
|
|
|||
|
|
$q_cl = $this->db->query($sql_cl, true);
|
|||
|
|
while($r_cl = $this->db->fetch_assoc($q_cl)){
|
|||
|
|
$clients[$r_cl['id']] = $r_cl;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return $clients;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//Выборка заявок
|
|||
|
|
public function get_reqs_array($req_ids){
|
|||
|
|
$result = array('reqs'=>array(), 'client_ids'=>array());
|
|||
|
|
$reqs=array();
|
|||
|
|
$client_req_ids = array();
|
|||
|
|
$sql_req = "SELECT id, object_id, name as fio, client_id, '' as `phone`, `object_id` as `of_objects`, client_id, description as opis, type_id, (SELECT heir FROM requisitions_type WHERE requisitions.type_id = requisitions_type.id) as heir FROM requisitions WHERE id in (" . implode(',', $req_ids) . ")";
|
|||
|
|
$q_req = $this->db->query($sql_req);
|
|||
|
|
while($r_req = $this->db->fetch_assoc($q_req)){
|
|||
|
|
$reqs[$r_req['id']] = $r_req;
|
|||
|
|
$client_req_ids[] = $r_req['client_id'];
|
|||
|
|
}
|
|||
|
|
$result['reqs'] = $reqs;
|
|||
|
|
$result['client_ids'] = $client_req_ids;
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public function object_ad($object_id, $on = 1, $area = ''){
|
|||
|
|
|
|||
|
|
if((int)$this->user->show_all_objects_page == 0){
|
|||
|
|
|
|||
|
|
if($this->user->id_manager > 0){
|
|||
|
|
$manager_id = $this->user->id_manager;
|
|||
|
|
$user_id = $this->user->id;
|
|||
|
|
|
|||
|
|
$sql = "INSERT INTO object_ad SET user_id = {$user_id}, manager_id = {$manager_id}, object_id = {$object_id}, on_off={$on}, area='{$area}'";
|
|||
|
|
if($this->user->agencyId == 9472){
|
|||
|
|
$sql = "INSERT INTO object_ad SET user_id = {$user_id}, manager_id = 9472, object_id = {$object_id}, on_off={$on}, area='{$area}'";
|
|||
|
|
} else if ($this->user->agencyId == 9588){
|
|||
|
|
$sql = "INSERT INTO object_ad SET user_id = {$user_id}, manager_id = 9904, object_id = {$object_id}, on_off={$on}, area='{$area}'";
|
|||
|
|
} else if ($this->user->agencyId == 9973){
|
|||
|
|
$sql = "INSERT INTO object_ad SET user_id = {$user_id}, manager_id = 9973, object_id = {$object_id}, on_off={$on}, area='{$area}'";
|
|||
|
|
} else if ($this->user->agencyId == 10982){
|
|||
|
|
$sql = "INSERT INTO object_ad (user_id, manager_id, object_id, on_off) VALUES ({$user_id}, 10982, {$object_id}, {$on}, area='{$area}'), ({$user_id}, 10992, {$object_id}, {$on}, area='{$area}')";
|
|||
|
|
} else if ($this->user->agencyId == 11456){
|
|||
|
|
$sql = "INSERT INTO object_ad SET user_id = {$user_id}, manager_id = 11552, object_id = {$object_id}, on_off={$on}, area='{$area}'";
|
|||
|
|
} else if ($this->user->agencyId == 11501){
|
|||
|
|
$sql = "INSERT INTO object_ad SET user_id = {$user_id}, manager_id = 11549, object_id = {$object_id}, on_off={$on}, area='{$area}'";
|
|||
|
|
} else if ($this->user->agencyId == 11397){
|
|||
|
|
$sql = "INSERT INTO object_ad SET user_id = {$user_id}, manager_id = 11583, object_id = {$object_id}, on_off={$on}, area='{$area}'";
|
|||
|
|
} else if ($this->user->agencyId == 7507){
|
|||
|
|
$sql = "INSERT INTO object_ad (user_id, manager_id, object_id, on_off) VALUES ({$user_id}, 8364, {$object_id}, {$on}, area='{$area}'), ({$user_id}, 7510, {$object_id}, {$on}, area='{$area}')";
|
|||
|
|
} else if ($this->user->agencyId == 8826){
|
|||
|
|
$sql = "INSERT INTO object_ad (user_id, manager_id, object_id, on_off) VALUES ({$user_id}, 8827, {$object_id}, {$on}, area='{$area}'), ({$user_id}, 11867, {$object_id}, {$on}, area='{$area}'), ({$user_id}, 11870, {$object_id}, {$on}, area='{$area}'), ({$user_id}, 11874, {$object_id}, {$on}, area='{$area}')";
|
|||
|
|
} else if ($this->user->agencyId == 11417){
|
|||
|
|
$sql = "INSERT INTO object_ad (user_id, manager_id, object_id, on_off) VALUES ({$user_id}, 12349, {$object_id}, {$on}, area='{$area}'), ({$user_id}, 12353, {$object_id}, {$on}, area='{$area}'), ({$user_id}, 11417, {$object_id}, {$on}, area='{$area}')";
|
|||
|
|
} else if ($this->user->agencyId == 10429){
|
|||
|
|
$sql = "INSERT INTO object_ad (user_id, manager_id, object_id, on_off) VALUES ({$user_id}, 10429, {$object_id}, {$on}, area='{$area}')";
|
|||
|
|
if($manager_id > 0 && $manager_id != 10429){
|
|||
|
|
$sql .= ", ({$user_id}, {$manager_id}, {$object_id}, {$on}, area='{$area}')";
|
|||
|
|
}
|
|||
|
|
} else if($this->user->agencyId == 16182){
|
|||
|
|
$sql = "INSERT INTO object_ad (user_id, manager_id, object_id, on_off) VALUES ({$user_id}, 16182, {$object_id}, {$on}, area='{$area}'), ({$user_id}, 16281, {$object_id}, {$on}, area='{$area}'), ({$user_id}, 16274, {$object_id}, {$on}, area='{$area}'), ({$user_id}, 16270, {$object_id}, {$on}, area='{$area}')";
|
|||
|
|
} else if ($this->user->agencyId == 20553){
|
|||
|
|
$sql = "INSERT INTO object_ad (user_id, manager_id, object_id, on_off) VALUES ({$user_id}, 20865, {$object_id}, {$on}, area='{$area}'), ({$user_id}, 20863, {$object_id}, {$on}, area='{$area}')";
|
|||
|
|
} else {
|
|||
|
|
if($this->user->department_id > 0){
|
|||
|
|
$dep = new Department();
|
|||
|
|
$list_user = $dep->getDepartments($this->user->id, $this->user->department_id);
|
|||
|
|
if(!empty($list_user)){
|
|||
|
|
foreach($list_user as $dep_user){
|
|||
|
|
if($dep_user['role'] == 'manager_office_menager' || $dep_user['role'] == 'manager_office'){
|
|||
|
|
$sql_user2 = "SELECT * FROM users WHERE role_id = {$dep_user['id']} AND blocked = 0";
|
|||
|
|
$q_user2 = $this->db->query($sql_user2, true);
|
|||
|
|
while($r_user2 = $this->db->fetch_assoc($q_user2)){
|
|||
|
|
if($r_user2['show_all_objects_pag'] == 0){
|
|||
|
|
$sql2 = "INSERT INTO object_ad SET user_id = {$user_id}, manager_id = {$r_user2['id']}, object_id = {$object_id}, on_off={$on}, area='{$area}'";
|
|||
|
|
$this->db->query($sql2);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
$this->db->query($sql, true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Отметка задачи выполненной
|
|||
|
|
*/
|
|||
|
|
public function task_completed($chatId, $event_id, $type='client_req', $is_comment = false){
|
|||
|
|
if($chatId > 0 && $event_id > 0){
|
|||
|
|
$user_id = 0;
|
|||
|
|
$stage = 0;
|
|||
|
|
$status = 0;
|
|||
|
|
$sql_user = "SELECT * FROM users WHERE telegramm_chat_id = {$chatId}";
|
|||
|
|
$q_user = $this->db->query($sql_user);
|
|||
|
|
$r_user = $this->db->fetch_assoc($q_user);
|
|||
|
|
$user_id = (int)$r_user['id'];
|
|||
|
|
$agency_id = (int)$r_user['company_id'] > 0 ? $r_user['company_id'] : $user_id;
|
|||
|
|
$event = 'task_completed';
|
|||
|
|
$table = 'user_client_events';
|
|||
|
|
if($type == 'object'){
|
|||
|
|
$event = 'task_completed_object';
|
|||
|
|
$table = 'user_object_events';
|
|||
|
|
}
|
|||
|
|
$this->db->query("UPDATE telegram_events SET status = 1 WHERE chat_id = {$chatId}");
|
|||
|
|
if(!$is_comment){
|
|||
|
|
$stage = 0;
|
|||
|
|
$status = 1;
|
|||
|
|
}
|
|||
|
|
$description = date('d-m-Y H:i:s').' - Запрос на отметку выполнено';
|
|||
|
|
$sql = "INSERT INTO telegram_events (chat_id, mess_id, event, stage, service, status, description, user_id, agency_id)
|
|||
|
|
VALUE ({$chatId}, {$event_id}, '{$event}', 1, 0, '{$status}', '{$description}', {$user_id}, {$agency_id})";
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(!$this->db->query($sql)){
|
|||
|
|
$errors[] = $this->db->error();
|
|||
|
|
}
|
|||
|
|
if(!$is_comment){
|
|||
|
|
$sql = "UPDATE {$table} SET calendar_view = 1 WHERE id = {$event_id}";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
$result = array('result'=>$event, 'stage'=>$stage, 'event_id' => $event_id);
|
|||
|
|
} else {
|
|||
|
|
$errors[] = 'Empty data';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(!empty($errors)){
|
|||
|
|
file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_task_telega.txt", date('d.m.y H:i:s').' chat_id '.$chatId.' id:'.$event_id." ".json_encode($errors, JSON_UNESCAPED_UNICODE)."\n", FILE_APPEND);
|
|||
|
|
return array('result'=>'error');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* отправка комментария для задачи
|
|||
|
|
*/
|
|||
|
|
public function send_comment_task($chat_id, $mess, $event_table, $type='client_req'){
|
|||
|
|
$event = 'task_completed';
|
|||
|
|
$table = 'user_client_events';
|
|||
|
|
if($type == 'object'){
|
|||
|
|
$event = 'task_completed_object';
|
|||
|
|
$table = 'user_object_events';
|
|||
|
|
}
|
|||
|
|
if(empty($mess)) $errors[] = "Пустое сообщение";
|
|||
|
|
if(empty($event_table)){
|
|||
|
|
|
|||
|
|
$sql_ev = "SELECT * FROM telegram_events WHERE chat_id = {$chat_id} AND status = 0 AND event='$event' ORDER BY id DESC LIMIT 1";
|
|||
|
|
file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_task_telega.txt", date('d.m.y H:i:s').' chat_id '.$chat_id.' id:'.$sql_ev."\n", FILE_APPEND);
|
|||
|
|
$q_ev = $this->db->query($sql_ev);
|
|||
|
|
if($this->db->num_rows($q_ev) > 0){
|
|||
|
|
$event_table = $this->db->fetch_assoc($q_ev);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(empty($event_table)) $errors[] = "Не найдено связаное событие";
|
|||
|
|
if($event_table['user_id'] == 0) $errors[] = "Не определен user_id";
|
|||
|
|
|
|||
|
|
$event_id = (int)$event_table['mess_id'];
|
|||
|
|
$user_id = (int)$event_table['user_id'];
|
|||
|
|
|
|||
|
|
if(empty($errors)){
|
|||
|
|
$sql = "UPDATE {$table} SET calendar_view = 1 WHERE id = {$event_id}";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
|
|||
|
|
$field = '';
|
|||
|
|
$field_val = 0;
|
|||
|
|
$sql_ev = "SELECT * FROM {$table} WHERE id = {$event_id}";
|
|||
|
|
|
|||
|
|
$q_ev = $this->db->query($sql_ev);
|
|||
|
|
$r_ev = $this->db->fetch_assoc($q_ev);
|
|||
|
|
if(isset($r_ev['req_id']) && $r_ev['req_id'] > 0){
|
|||
|
|
$field = 'req_id';
|
|||
|
|
$field_val = $r_ev['req_id'];
|
|||
|
|
} else if (isset($r_ev['client_id']) && $r_ev['client_id'] > 0){
|
|||
|
|
$field = 'client_id';
|
|||
|
|
$field_val = $r_ev['client_id'];
|
|||
|
|
|
|||
|
|
} else if (isset($r_ev['object_id']) && $r_ev['object_id'] > 0){
|
|||
|
|
$field = 'object_id';
|
|||
|
|
$field_val = $r_ev['object_id'];
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
if($field_val > 0){
|
|||
|
|
$sql_comment = "INSERT INTO {$table} (user_id, from_id, type, comment, tel, {$field}) VALUES ({$user_id}, {$user_id}, 'comment', '{$mess}', 1, {$field_val})";
|
|||
|
|
|
|||
|
|
$this->db->query($sql_comment);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$result = array('result'=>'add_task_comment', 'event_id' => $event_table['mess_id']);
|
|||
|
|
|
|||
|
|
if(!empty($errors)){
|
|||
|
|
file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_task_telega.txt", date('d.m.y H:i:s').' id:'.$event_id." ".json_encode($errors, JSON_UNESCAPED_UNICODE)."\n", FILE_APPEND);
|
|||
|
|
return array('result'=>'error');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return $result;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Отмена отправки сообщения для задачи
|
|||
|
|
*/
|
|||
|
|
public function no_task_completed($chat_id, $event_id, $type='client_req'){
|
|||
|
|
$event = 'task_completed';
|
|||
|
|
|
|||
|
|
if($type == 'object'){
|
|||
|
|
$event = 'task_completed_object';
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
$sql_ev = "UPDATE telegram_events SET status=1 WHERE chat_id = {$chat_id} AND mess_id={$event_id} AND event='{$event}'";
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(!$this->db->query($sql_ev)){
|
|||
|
|
$errors[] = $this->db->error();
|
|||
|
|
}
|
|||
|
|
$result = array('result'=>'no_task_completed', 'event_id' => $event_id);
|
|||
|
|
|
|||
|
|
if(!empty($errors)){
|
|||
|
|
file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_task_telega.txt", date('d.m.y H:i:s').' id:'.$event_id." ".json_encode($errors, JSON_UNESCAPED_UNICODE)."\n", FILE_APPEND);
|
|||
|
|
return array('result'=>'error');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Принять в работу
|
|||
|
|
*/
|
|||
|
|
public function accept_work($chatId, $event_id, $type='client_req'){
|
|||
|
|
if($chatId > 0 && $event_id > 0){
|
|||
|
|
$db_sphinx = new MysqlPdo(hstsph2, null, null, null, true, '9306');
|
|||
|
|
$user_id = 0;
|
|||
|
|
$stage = 0;
|
|||
|
|
$status = 1;
|
|||
|
|
$section = '';
|
|||
|
|
$sql_user = "SELECT * FROM users WHERE telegramm_chat_id = {$chatId}";
|
|||
|
|
$q_user = $this->db->query($sql_user);
|
|||
|
|
$r_user = $this->db->fetch_assoc($q_user);
|
|||
|
|
$user_id = (int)$r_user['id'];
|
|||
|
|
$agency_id = (int)$r_user['company_id'] > 0 ? $r_user['company_id'] : $user_id;
|
|||
|
|
$event = 'accept_work';
|
|||
|
|
$table = 'events_clients';
|
|||
|
|
$text = '';
|
|||
|
|
if($type == 'object'){
|
|||
|
|
$event = 'accept_work_object';
|
|||
|
|
$table = 'objects_to_send';
|
|||
|
|
$section = 'object';
|
|||
|
|
}
|
|||
|
|
$this->db->query("UPDATE telegram_events SET status = 1 WHERE chat_id = {$chatId}");
|
|||
|
|
|
|||
|
|
$description = date('d-m-Y H:i:s').' - Запрос на принятие в работу';
|
|||
|
|
$sql = "INSERT INTO telegram_events (chat_id, mess_id, event, stage, service, status, description, user_id, agency_id)
|
|||
|
|
VALUE ({$chatId}, {$event_id}, '{$event}', 1, 0, '{$status}', '{$description}', {$user_id}, {$agency_id})";
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(!$this->db->query($sql)){
|
|||
|
|
$errors[] = $this->db->error();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$sql_ev = "SELECT * FROM {$table} WHERE id = {$event_id}";
|
|||
|
|
|
|||
|
|
$q_ev = $this->db->query($sql_ev);
|
|||
|
|
$row_ev = $this->db->num_rows($q_ev);
|
|||
|
|
$r_ev = $this->db->fetch_assoc($q_ev);
|
|||
|
|
$field = '';
|
|||
|
|
$field_val = 0;
|
|||
|
|
$cancel_confirm = false;
|
|||
|
|
if($row_ev == 0){
|
|||
|
|
$cancel_confirm = true;
|
|||
|
|
} else if(isset($r_ev['req_id']) && $r_ev['req_id'] > 0){
|
|||
|
|
$field = 'req_id';
|
|||
|
|
$field_val = $r_ev['req_id'];
|
|||
|
|
$section = 'req';
|
|||
|
|
} else if (isset($r_ev['client_id']) && $r_ev['client_id'] > 0){
|
|||
|
|
$field = 'client_id';
|
|||
|
|
$field_val = $r_ev['client_id'];
|
|||
|
|
$section = 'client';
|
|||
|
|
} else if (isset($r_ev['object_id']) && $r_ev['object_id'] > 0){
|
|||
|
|
$field = 'object_id';
|
|||
|
|
$field_val = $r_ev['object_id'];
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
$no_accept = false;
|
|||
|
|
$is_confirm = false;
|
|||
|
|
$is_rejected = false;
|
|||
|
|
|
|||
|
|
if($field_val > 0){
|
|||
|
|
|
|||
|
|
switch($section){
|
|||
|
|
case 'req':{
|
|||
|
|
$tr = 0;
|
|||
|
|
if($r_ev['event'] == 'transmitted_parallel') $tr = 1;
|
|||
|
|
$sql_cl = "SELECT `name` as `fio`, object_id, type_id, who_work, funnel_id, confirm, doers, (SELECT heir FROM requisitions_type WHERE id = requisitions.type_id) as heir FROM `requisitions` WHERE `id` = {$field_val}";
|
|||
|
|
$q_cl = $this->db->query($sql_cl);
|
|||
|
|
$r_cl = $this->db->fetch_assoc($q_cl);
|
|||
|
|
|
|||
|
|
if($tr == 0){
|
|||
|
|
if($r_cl['who_work'] == $user_id){
|
|||
|
|
if($r_cl['confirm'] == 1){
|
|||
|
|
$sql_no = "SELECT * FROM events_clients WHERE user_id={$user_id} AND req_id = {$field_val} AND event = 'notadopted' AND `read` = 0";
|
|||
|
|
$q_no = $this->db->query($sql_no);
|
|||
|
|
if($this->db->num_rows($q_no) > 0){
|
|||
|
|
$cl_fio_disp = should_hide_contacts_for_user_id($user_id) ? mask_fio_if_contains_phone($r_cl['fio']) : $r_cl['fio'];
|
|||
|
|
$text = "«<b>" . $cl_fio_disp . "</b>»";
|
|||
|
|
$is_rejected = true;
|
|||
|
|
} else {
|
|||
|
|
$is_confirm = true;
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$sql_no = "SELECT * FROM events_clients WHERE user_id={$user_id} AND req_id = {$field_val} AND event = 'notadopted' AND `read` = 0";
|
|||
|
|
$q_no = $this->db->query($sql_no);
|
|||
|
|
if($this->db->num_rows($q_no) > 0){
|
|||
|
|
$cl_fio_disp = should_hide_contacts_for_user_id($user_id) ? mask_fio_if_contains_phone($r_cl['fio']) : $r_cl['fio'];
|
|||
|
|
$text = "«<b>" . $cl_fio_disp . "</b>»";
|
|||
|
|
$is_rejected = true;
|
|||
|
|
} else {
|
|||
|
|
$sql = "UPDATE requisitions SET confirm=1, deleted=0, who_work={$user_id} WHERE id={$field_val}";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
// Автопривязка ответственного по заявке к клиенту из заявки
|
|||
|
|
$sql = "UPDATE `clients`
|
|||
|
|
JOIN `requisitions` AS `req` ON
|
|||
|
|
`clients`.`id` = `req`.`client_id` AND
|
|||
|
|
`clients`.`who_work` = 0 AND
|
|||
|
|
`clients`.`confirm` = 0 AND
|
|||
|
|
`req`.`id` = '{$field_val}' AND
|
|||
|
|
`clients`.`who_work` = 0 AND
|
|||
|
|
`clients`.`confirm` = 0
|
|||
|
|
SET `clients`.`who_work` = '{$user_id}',
|
|||
|
|
`clients`.`confirm` = 1";
|
|||
|
|
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
//Смена срока закрытия этапа
|
|||
|
|
$sql_step = "SELECT * FROM clients_funnel_step WHERE req_id = {$field_val}";
|
|||
|
|
$q_step = $this->db->query($sql_step);
|
|||
|
|
if($this->db->num_rows($q_step) > 0){
|
|||
|
|
$sql_op_step = "UPDATE clients_funnel_step SET date_update = NOW() WHERE req_id = {$field_val}";
|
|||
|
|
$this->db->query($sql_op_step);
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
if($r_cl['funnel_id'] > 0){
|
|||
|
|
$this->db->query("INSERT INTO clients_funnel_step (req_id) VALUES ({$field_val})");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
$sql = "UPDATE user_client_events SET user_id={$user_id} WHERE req_id={$field_val} and type != 'step' and type != 'file'";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
$sql = "UPDATE `events_clients` SET `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE req_id = {$field_val} AND event IN ('transmitted', 'notadopted')";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
$sql = "INSERT INTO `events_clients` (user_id, req_id, from_id, event, `read`) VALUES ({$user_id}, {$field_val}, {$user_id}, 'accepted', '1')";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
|
|||
|
|
//Передача объекта
|
|||
|
|
$agency = new User;
|
|||
|
|
$agency->get($user_id);
|
|||
|
|
|
|||
|
|
$sqlUser = "SELECT `first_name`, `last_name`, `middle_name`, `phone` FROM `users` where id=".$user_id;
|
|||
|
|
$qUser = $this->db->query($sqlUser);
|
|||
|
|
$rUser = $this->db->fetch_assoc($qUser);
|
|||
|
|
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
|
|||
|
|
if ($_SESSION['agency']) {
|
|||
|
|
$sobstv = $sobstv . ", агентство " . $rUser['agency_name'];
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
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']);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
if($r_cl['object_id'] && ($r_cl['type_id'] == 2 || $r_cl['heir'] == 2)){
|
|||
|
|
$sql_up = "UPDATE objects SET id_add_user = {$user_id}, phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$r_cl['object_id'];
|
|||
|
|
//echo $sql_up;
|
|||
|
|
$this->db->query($sql_up);
|
|||
|
|
$sql_sph = "UPDATE objects SET id_add_user = {$user_id} WHERE id = ".$r_cl['object_id'];
|
|||
|
|
|
|||
|
|
$db_sphinx->query($sql_sph);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$sql_no = "SELECT * FROM events_clients WHERE user_id={$user_id} AND req_id = {$field_val} AND event = 'notadopted'";
|
|||
|
|
$q_no = $this->db->query($sql_no);
|
|||
|
|
if($this->db->num_rows($q_no) > 0){
|
|||
|
|
$cl_fio_disp = should_hide_contacts_for_user_id($user_id) ? mask_fio_if_contains_phone($r_cl['fio']) : $r_cl['fio'];
|
|||
|
|
$text = "«<b>" . $cl_fio_disp . "</b>»";
|
|||
|
|
$is_rejected = true;
|
|||
|
|
} else {
|
|||
|
|
$no_accept = true;
|
|||
|
|
}
|
|||
|
|
$sql = "UPDATE `events_clients` SET `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE req_id = {$field_val} AND event IN ('transmitted', 'notadopted')";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
} else if ($tr == 1){
|
|||
|
|
if(!empty($r_cl['doers'])){
|
|||
|
|
$confirm = 1;
|
|||
|
|
$doers = json_decode(html_entity_decode($r_cl['doers']), true);
|
|||
|
|
if($doers[$user_id] == 1){
|
|||
|
|
$is_confirm = true;
|
|||
|
|
} else {
|
|||
|
|
$doers[$user_id] = 1;
|
|||
|
|
foreach($doers as $doer){
|
|||
|
|
if($doer == 0) $confirm = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
$sql_up = "UPDATE requisitions SET doers='".$this->clearInputElement(json_encode($doers))."', doers_confirm=$confirm WHERE id={$field_val}";
|
|||
|
|
|
|||
|
|
|
|||
|
|
$this->db->query($sql_up);
|
|||
|
|
|
|||
|
|
|
|||
|
|
foreach($doers as $key => $agent) {
|
|||
|
|
$sql_up_d = "UPDATE requisition_doers SET confirm = {$agent} WHERE requisition_id ={$field_val} and user_id = {$key}";
|
|||
|
|
$this->db->query($sql_up_d);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
$sql_up_doer = "UPDATE doers_emp_client SET confirm=1 WHERE req_id ={$field_val} and who_work = $user_id and doer_id = $user_id";
|
|||
|
|
|
|||
|
|
$this->db->query($sql_up_doer);
|
|||
|
|
|
|||
|
|
|
|||
|
|
$sql_2 = "UPDATE `events_clients` SET `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE req_id = {$field_val} AND event IN ('transmitted_parallel', 'notadopted_doer') AND from_id = ".$user_id;
|
|||
|
|
|
|||
|
|
$this->db->query($sql_2);
|
|||
|
|
|
|||
|
|
$sql = "INSERT INTO `events_clients` (user_id, req_id, from_id, event, `read`) VALUES ('".$user_id."', '{$field_val}', '".$user_id."', 'accepted_doer', '1')";
|
|||
|
|
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case 'client': {
|
|||
|
|
$tr = 0;
|
|||
|
|
|
|||
|
|
if($r_ev['event'] == 'transmitted_parallel') $tr = 1;
|
|||
|
|
|
|||
|
|
$sql_client = "SELECT objects, funnel_id, who_work, confirm, fio, phone, doers FROM clients WHERE id={$field_val}";
|
|||
|
|
$q_client = $this->db->query($sql_client);
|
|||
|
|
$r_client = $this->db->fetch_assoc($q_client);
|
|||
|
|
|
|||
|
|
if($tr == 0) {
|
|||
|
|
if($r_client['who_work'] == $user_id){
|
|||
|
|
if($r_client['confirm'] == 1){
|
|||
|
|
$sql_no = "SELECT * FROM events_clients WHERE client_id = {$field_val} AND `read`= 0 AND user_id={$user_id} AND event = 'notadopted'";
|
|||
|
|
$q_no = $this->db->query($sql_no);
|
|||
|
|
if($this->db->num_rows($q_no) > 0){
|
|||
|
|
$cl_phone_disp = should_hide_contacts_for_user_id($user_id) ? mask_client_phone($r_client['phone']) : $r_client['phone'];
|
|||
|
|
$cl_fio_disp = should_hide_contacts_for_user_id($user_id) ? mask_fio_if_contains_phone($r_client['fio']) : $r_client['fio'];
|
|||
|
|
$text = "«<b>" . $cl_phone_disp." ".$cl_fio_disp . "</b>»";
|
|||
|
|
$is_rejected = true;
|
|||
|
|
} else {
|
|||
|
|
$is_confirm = true;
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
$sql_no = "SELECT * FROM events_clients WHERE client_id = {$field_val} AND `read`= 0 AND user_id={$user_id} AND event = 'notadopted'";
|
|||
|
|
$q_no = $this->db->query($sql_no);
|
|||
|
|
if($this->db->num_rows($q_no) > 0){
|
|||
|
|
$cl_phone_disp = should_hide_contacts_for_user_id($user_id) ? mask_client_phone($r_client['phone']) : $r_client['phone'];
|
|||
|
|
$cl_fio_disp = should_hide_contacts_for_user_id($user_id) ? mask_fio_if_contains_phone($r_client['fio']) : $r_client['fio'];
|
|||
|
|
$text = "«<b>" . $cl_phone_disp." ".$cl_fio_disp . "</b>»";
|
|||
|
|
$is_rejected = true;
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
$sql = "UPDATE clients SET confirm=1, deleted=0, who_work={$user_id} WHERE id={$field_val}";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
//Смена срока закрытия этапа
|
|||
|
|
$sql_step = "SELECT * FROM clients_funnel_step WHERE client_id = {$field_val}";
|
|||
|
|
$q_step = $this->db->query($sql_step);
|
|||
|
|
if($this->db->num_rows($q_step) > 0){
|
|||
|
|
$sql_op_step = "UPDATE clients_funnel_step SET date_update = NOW() WHERE client_id = {$field_val}";
|
|||
|
|
$this->db->query($sql_op_step);
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
if($r_client['funnel_id'] > 0){
|
|||
|
|
$this->db->query("INSERT INTO clients_funnel_step (client_id) VALUES ({$field_val})");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$sql="UPDATE user_client_events SET user_id={$user_id} WHERE client_id={$field_val} and type != 'step' and type != 'file'";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
$sql = "UPDATE `events_clients` SET `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE client_id = {$field_val} AND event IN ('transmitted', 'notadopted')";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
$sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ({$user_id}, {$field_val}, {$user_id}, 'accepted', '1')";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
//Передача объекта
|
|||
|
|
$agency = new User;
|
|||
|
|
$agency->get($user_id);
|
|||
|
|
|
|||
|
|
$sqlUser = "SELECT `first_name`, `last_name`, `middle_name`, `phone` FROM `users` where id=".$user_id;
|
|||
|
|
$qUser = $this->db->query($sqlUser);
|
|||
|
|
$rUser = $this->db->fetch_assoc($qUser);
|
|||
|
|
$sobstv = trim($rUser['last_name'] . ' ' . $rUser['first_name'] . ' ' . $rUser['middle_name']);
|
|||
|
|
if ($_SESSION['agency']) {
|
|||
|
|
$sobstv = $sobstv . ", агентство " . $rUser['agency_name'];
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
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']);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$sql_confirm_obj = "SELECT * FROM client_confirm_objects WHERE client_id = {$field_val} AND status = 0";
|
|||
|
|
$q_confirm_obj = $this->db->query($sql_confirm_obj);
|
|||
|
|
|
|||
|
|
$is_confirm_obj = false;
|
|||
|
|
if($this->db->num_rows($q_confirm_obj) > 0){
|
|||
|
|
$r_confirm_obj = $this->db->fetch_assoc($q_confirm_obj);
|
|||
|
|
|
|||
|
|
$is_confirm_obj = (bool)$r_confirm_obj['confirm_objects'];
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
if($is_confirm_obj){
|
|||
|
|
$sql_client = "SELECT * FROM `client_objects` WHERE client_id = {$field_val}";
|
|||
|
|
$q_client = $this->db->query($sql_client);
|
|||
|
|
|
|||
|
|
|
|||
|
|
while($object = $this->db->fetch_assoc($q_client)){
|
|||
|
|
$sql_up = "UPDATE objects SET id_add_user = '".$_SESSION['id']."', phone='".$rUser['phone']."', sobstv='".$sobstv."' WHERE id = ".$object;
|
|||
|
|
//echo $sql_up;
|
|||
|
|
$this->db->query($sql_up);
|
|||
|
|
$sql_sph = "UPDATE objects SET id_add_user = {$_SESSION['id']} WHERE id = ".$object;
|
|||
|
|
|
|||
|
|
$db_sphinx->query($sql_sph);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$this->db->query("UPDATE client_confirm_objects SET status = 1 WHERE client_id = {$field_val} AND status = 0");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$sql_no = "SELECT * FROM events_clients WHERE client_id = {$field_val} AND user_id={$user_id} AND event = 'notadopted'";
|
|||
|
|
$q_no = $this->db->query($sql_no);
|
|||
|
|
if($this->db->num_rows($q_no) > 0){
|
|||
|
|
$cl_phone_disp = should_hide_contacts_for_user_id($user_id) ? mask_client_phone($r_client['phone']) : $r_client['phone'];
|
|||
|
|
$cl_fio_disp = should_hide_contacts_for_user_id($user_id) ? mask_fio_if_contains_phone($r_client['fio']) : $r_client['fio'];
|
|||
|
|
$text = "«<b>" . $cl_phone_disp." ".$cl_fio_disp . "</b>»";
|
|||
|
|
$is_rejected = true;
|
|||
|
|
} else {
|
|||
|
|
$no_accept = true;
|
|||
|
|
}
|
|||
|
|
$sql = "UPDATE `events_clients` SET `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE client_id = {$field_val} AND event IN ('transmitted', 'notadopted')";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
} else if ($tr == 1){
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(!empty($r_client['doers'])){
|
|||
|
|
$confirm = 1;
|
|||
|
|
$doers = json_decode(html_entity_decode($r_client['doers']), true);
|
|||
|
|
if($doers[$user_id] == 1){
|
|||
|
|
$is_confirm = true;
|
|||
|
|
} else {
|
|||
|
|
$doers[$user_id] = 1;
|
|||
|
|
foreach($doers as $doer){
|
|||
|
|
if($doer == 0) $confirm = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
$sql_up = "UPDATE clients SET doers='".$this->clearInputElement(json_encode($doers))."', doers_confirm=$confirm WHERE id={$field_val}";
|
|||
|
|
|
|||
|
|
|
|||
|
|
$this->db->query($sql_up);
|
|||
|
|
|
|||
|
|
|
|||
|
|
foreach($doers as $key => $agent) {
|
|||
|
|
$sql_up_d = "UPDATE clients_doers SET confirm = {$agent} WHERE client_id ={$field_val} and user_id = {$key}";
|
|||
|
|
$this->db->query($sql_up_d);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
$sql_up_doer = "UPDATE doers_emp_client SET confirm=1 WHERE client_id ={$field_val} and who_work = $user_id and doer_id = $user_id";
|
|||
|
|
|
|||
|
|
$this->db->query($sql_up_doer);
|
|||
|
|
|
|||
|
|
|
|||
|
|
$sql_2 = "UPDATE `events_clients` SET `read` = 1, date_update='".date('Y-m-d H:i:s')."' WHERE client_id = {$field_val} AND event IN ('transmitted_parallel', 'notadopted_doer') AND from_id = ".$user_id;
|
|||
|
|
|
|||
|
|
$this->db->query($sql_2);
|
|||
|
|
|
|||
|
|
$sql = "INSERT INTO `events_clients` (user_id, client_id, from_id, event, `read`) VALUES ('".$user_id."', '{$field_val}', '".$user_id."', 'accepted_doer', '1')";
|
|||
|
|
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
} case 'object':{
|
|||
|
|
if(!isset($r_ev['object_id']) || (int)$r_ev['object_id'] == 0){
|
|||
|
|
$cancel_confirm = true;
|
|||
|
|
} else
|
|||
|
|
if($r_ev['new_user_id'] == $user_id){
|
|||
|
|
if($r_ev['accept_state'] != 'NEW'){
|
|||
|
|
if($r_ev['accept_state'] == 'REJECTED'){
|
|||
|
|
$sql_obj = "SELECT * FROM objects WHERE id = {$field_val}";
|
|||
|
|
$q_obj = $this->db->query($sql_obj);
|
|||
|
|
$r_obj = $this->db->fetch_assoc($q_obj);
|
|||
|
|
$text = "«<b>" . $r_obj['nazv'] . "</b>»";
|
|||
|
|
$is_rejected = true;
|
|||
|
|
|
|||
|
|
} else {
|
|||
|
|
$is_confirm = true;
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$newUserId = $user_id;
|
|||
|
|
$objectId = $field_val;
|
|||
|
|
$newUser = new User;
|
|||
|
|
$newUser->get($newUserId);
|
|||
|
|
|
|||
|
|
if (!$newUser->agencyId) {
|
|||
|
|
$newUser->agencyId = $newUserId;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$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;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$webHookIn = new WebHookIn(null, $agency_id);
|
|||
|
|
|
|||
|
|
$is_send_webhook = $webHookIn->check_hook('object_update', 'object');
|
|||
|
|
|
|||
|
|
|
|||
|
|
if($is_send_webhook){
|
|||
|
|
$webHookIn->save_temp_object($objectId);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// перенос всех объектов
|
|||
|
|
$sql = "UPDATE objects SET id_add_user = $newUser->id, phone = '$phone', phone_search = '$num_search', sobstv = '$sobstv', is_main = 0 WHERE id=$objectId";
|
|||
|
|
$rez = $this->db->query($sql);
|
|||
|
|
|
|||
|
|
//Запись в сфинкс
|
|||
|
|
$sql_sph = "UPDATE objects SET id_add_user=$newUser->id, phone_search = '$num_search' WHERE id=$objectId";
|
|||
|
|
$db_sphinx->query($sql_sph);
|
|||
|
|
|
|||
|
|
|
|||
|
|
//перенос событий объектов
|
|||
|
|
$sqlObjEvents = "UPDATE user_object_events SET user_id=$newUser->id WHERE object_id=$objectId";
|
|||
|
|
$this->db->query($sqlObjEvents);
|
|||
|
|
|
|||
|
|
//перенос комментариев объектов
|
|||
|
|
$sqlObjCom = "UPDATE user_object_comments SET user_id=$newUser->id WHERE object_id=$objectId";
|
|||
|
|
$this->db->query($sqlObjCom);
|
|||
|
|
|
|||
|
|
// перенос Зипал
|
|||
|
|
$sql = "UPDATE zipal_objects SET user_id=$newUser->id, send_to_update=1 WHERE object_id=$objectId";
|
|||
|
|
$rez = $this->db->query($sql);
|
|||
|
|
|
|||
|
|
$sqlPack = "UPDATE advertising_package_object_publish SET send_to_update = '1', error_when_send_to_update = '' WHERE object_id=$objectId";
|
|||
|
|
$this->db->query($sqlPack);
|
|||
|
|
|
|||
|
|
|
|||
|
|
$sql = "UPDATE objects_to_send SET accept_date=NOW(), accept_state='ACCEPTED' WHERE id=$event_id";
|
|||
|
|
$this->db->query($sql);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Передача заявок Реализация
|
|||
|
|
*/
|
|||
|
|
$sql_req = "SELECT id, `name`, object_id, type_id, who_work, funnel_id, confirm FROM `requisitions` WHERE object_id = {$objectId} AND cancel=0 AND deleted=0 AND (type_id = 2 or (SELECT heir FROM requisitions_type WHERE id = requisitions.type_id) = 2) AND who_work != '".$newUser->id."'";
|
|||
|
|
//echo $sql_req."\n";
|
|||
|
|
$q_req = $this->db->query($sql_req);
|
|||
|
|
if($this->db->num_rows($q_req) > 0){
|
|||
|
|
while($r_req = $this->db->fetch_assoc($q_req)){
|
|||
|
|
$sql_up = "UPDATE requisitions SET confirm=1, who_work={$newUser->id} WHERE id={$r_req['id']}";
|
|||
|
|
//echo $sql_up."\n";
|
|||
|
|
if($this->db->query($sql_up)){
|
|||
|
|
$sql_ev = "INSERT INTO `events_clients` (user_id, req_id, from_id, event, `read`, dop_text) VALUES ('".$user_id."', '{$r_req['id']}', '".$newUser->id."', 'update', '1', 'Переведена на ответственного при принятии объекта ID {$objectId}')";
|
|||
|
|
//file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_task_telega.txt", date('d.m.y H:i:s').' chat_id '.$chatId.' id:'.$event_id." ". $sql_ev."\n", FILE_APPEND);
|
|||
|
|
$this->db->query($sql_ev);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if($is_send_webhook){
|
|||
|
|
$dataWhook = array('action'=>'object_update', 'object_id'=>$objectId, 'section'=>'object', 'user_id'=>$user_id, 'agency_id'=>$agency_id);
|
|||
|
|
$webHookIn->check_send($dataWhook);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$no_accept = true;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$result = array('result'=>$event, 'section'=>$section, 'event_id' => $event_id, 'id' => $field_val);
|
|||
|
|
|
|||
|
|
if($no_accept) $result['no_accept'] = 1;
|
|||
|
|
if($is_confirm) $result['is_confirm'] = 1;
|
|||
|
|
if($cancel_confirm) $result['cancel_confirm'] = 1;
|
|||
|
|
if($is_rejected) $result['is_rejected'] = 1;
|
|||
|
|
if(!empty($text)) $result['text'] = $text;
|
|||
|
|
// file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_task_telega.txt", date('d.m.y H:i:s').' chat_id '.$chatId.' id:'.$event_id." ".json_encode($result, JSON_UNESCAPED_UNICODE)."\n", FILE_APPEND);
|
|||
|
|
} else {
|
|||
|
|
$errors[] = 'Empty data';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(!empty($errors)){
|
|||
|
|
file_put_contents($_SERVER['DOCUMENT_ROOT']."/log_task_telega.txt", date('d.m.y H:i:s').' chat_id '.$chatId.' id:'.$event_id." ".json_encode($errors, JSON_UNESCAPED_UNICODE)."\n", FILE_APPEND);
|
|||
|
|
return array('result'=>'error');
|
|||
|
|
}
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//Отправка сообщений
|
|||
|
|
/* public function send($text, $chatId, $event_id=null, $keyboardArr = []){
|
|||
|
|
require_once $_SERVER['DOCUMENT_ROOT'] . "/telegramm/vendor/autoload.php";
|
|||
|
|
$bot = new \TelegramBot\Api\Client($this->TOKEN);
|
|||
|
|
if ($text != '' && $chatId > 0) {
|
|||
|
|
try {
|
|||
|
|
if(!empty($keyboardArr))
|
|||
|
|
{
|
|||
|
|
$keyboard = new \TelegramBot\Api\Types\Inline\InlineKeyboardMarkup($keyboardArr);
|
|||
|
|
$bot->sendMessage($chatId, $text, 'html', false, null, $keyboard);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
$bot->sendMessage($chatId, $text, 'html');
|
|||
|
|
|
|||
|
|
} catch (Exception $e) {
|
|||
|
|
//echo 'Выброшено исключение телеграм: '. $e->getMessage(). "\n";
|
|||
|
|
file_put_contents($_SERVER['DOCUMENT_ROOT']."/telegramm_error.log", date('d.m.y H:i:s').' '.$chatId.' '.$e->getMessage()."\n", FILE_APPEND);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
$bot->run();
|
|||
|
|
}*/
|
|||
|
|
|
|||
|
|
//отправка сообщений cUrl
|
|||
|
|
public function send_old($textChat, $chatId, $event_id=null, $keyboardArr = []){
|
|||
|
|
$token = $this->TOKEN; // Замените на ваш токен
|
|||
|
|
$chat_id = $chatId; // Замените на ID чата
|
|||
|
|
$text = $textChat; // Текст сообщения
|
|||
|
|
|
|||
|
|
$getQuery = [
|
|||
|
|
'chat_id' => $chat_id,
|
|||
|
|
'text' => $text,
|
|||
|
|
'parse_mode' => 'HTML', // Или 'MarkdownV2', если нужно форматирование
|
|||
|
|
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
if(!empty($keyboardArr)){
|
|||
|
|
$getQuery['reply_markup'] = json_encode(array(
|
|||
|
|
'inline_keyboard' => $keyboardArr,
|
|||
|
|
), JSON_UNESCAPED_UNICODE
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Формируем URL с GET-параметрами
|
|||
|
|
$url = "https://api.telegram.org/bot{$token}/sendMessage";
|
|||
|
|
|
|||
|
|
// Инициализация cURL
|
|||
|
|
$ch = curl_init();
|
|||
|
|
curl_setopt($ch, CURLOPT_URL, $url); // Устанавливаем URL
|
|||
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Возвращать результат в виде строки
|
|||
|
|
// Если отправляем через POST (часто предпочтительнее для больших данных или JSON):
|
|||
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|||
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($getQuery, JSON_UNESCAPED_UNICODE));
|
|||
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
|
|||
|
|
//curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
|||
|
|
|
|||
|
|
// Выполнение запроса
|
|||
|
|
$result = curl_exec($ch);
|
|||
|
|
|
|||
|
|
// Проверка на ошибки
|
|||
|
|
if (curl_errno($ch)) {
|
|||
|
|
// echo 'Ошибка cURL: ' . curl_error($ch);
|
|||
|
|
file_put_contents($_SERVER['DOCUMENT_ROOT']."/telegramm_error.log", date('d.m.y H:i:s').' '.$chatId.' '.curl_error($ch).' '.json_encode($getQuery, JSON_UNESCAPED_UNICODE)."\n", FILE_APPEND);
|
|||
|
|
} else {
|
|||
|
|
// Обработка ответа
|
|||
|
|
$response = json_decode($result);
|
|||
|
|
if ($response->ok) {
|
|||
|
|
/* echo "Сообщение отправлено успешно!";*/
|
|||
|
|
//file_put_contents($_SERVER['DOCUMENT_ROOT']."/telegramm_mes_chat.txt", date('d.m.y H:i:s').' '.$chatId.' '.json_encode($getQuery, JSON_UNESCAPED_UNICODE)."\n", FILE_APPEND);
|
|||
|
|
} else {
|
|||
|
|
//echo "Ошибка отправки: " . $response->description;
|
|||
|
|
file_put_contents($_SERVER['DOCUMENT_ROOT']."/telegramm_error.log", date('d.m.y H:i:s').' '.$chatId.' '.$response->description.' '.json_encode($getQuery, JSON_UNESCAPED_UNICODE)."\n", FILE_APPEND);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Закрытие сессии cURL
|
|||
|
|
curl_close($ch);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//отправка сообщений cUrl
|
|||
|
|
public function send($textChat, $chatId, $event_id=null, $keyboardArr = []){
|
|||
|
|
|
|||
|
|
$chat_id = $chatId;
|
|||
|
|
$text = $textChat;
|
|||
|
|
|
|||
|
|
$getQuery = [
|
|||
|
|
'chat_id' => $chat_id,
|
|||
|
|
'text' => $text,
|
|||
|
|
'keyboardArr' => $keyboardArr
|
|||
|
|
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
if(!empty($keyboardArr)){
|
|||
|
|
$getQuery['reply_markup'] = json_encode(array(
|
|||
|
|
'inline_keyboard' => $keyboardArr,
|
|||
|
|
), JSON_UNESCAPED_UNICODE
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Формируем URL с GET-параметрами
|
|||
|
|
$url = "https://tgbsrv.joywork.ru/send_message.php";
|
|||
|
|
|
|||
|
|
// Инициализация cURL
|
|||
|
|
$ch = curl_init();
|
|||
|
|
curl_setopt($ch, CURLOPT_URL, $url); // Устанавливаем URL
|
|||
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Возвращать результат в виде строки
|
|||
|
|
// Если отправляем через POST (часто предпочтительнее для больших данных или JSON):
|
|||
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|||
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($getQuery, JSON_UNESCAPED_UNICODE));
|
|||
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
|
|||
|
|
//curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
|||
|
|
|
|||
|
|
// Выполнение запроса
|
|||
|
|
$result = curl_exec($ch);
|
|||
|
|
//var_dump($result);
|
|||
|
|
$response = array();
|
|||
|
|
// Проверка на ошибки
|
|||
|
|
if (curl_errno($ch)) {
|
|||
|
|
// echo 'Ошибка cURL: ' . curl_error($ch);
|
|||
|
|
file_put_contents($_SERVER['DOCUMENT_ROOT']."/telegramm_error.log", date('d.m.y H:i:s').' '.$chatId.' '.curl_error($ch).' '.json_encode($getQuery, JSON_UNESCAPED_UNICODE)."\n", FILE_APPEND);
|
|||
|
|
} else {
|
|||
|
|
// Обработка ответа
|
|||
|
|
$response = json_decode($result, true);
|
|||
|
|
if ($response['ok']) {
|
|||
|
|
/* echo "Сообщение отправлено успешно!";*/
|
|||
|
|
//file_put_contents($_SERVER['DOCUMENT_ROOT']."/telegramm_mes_chat.txt", date('d.m.y H:i:s').' '.$chatId.' '.json_encode($getQuery, JSON_UNESCAPED_UNICODE)."\n", FILE_APPEND);
|
|||
|
|
} else {
|
|||
|
|
//echo "Ошибка отправки: " . $response->description;
|
|||
|
|
file_put_contents($_SERVER['DOCUMENT_ROOT']."/telegramm_error.log", date('d.m.y H:i:s').' '.$chatId.' '.$response['description'].' '.json_encode($getQuery, JSON_UNESCAPED_UNICODE)."\n", FILE_APPEND);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Закрытие сессии cURL
|
|||
|
|
curl_close($ch);
|
|||
|
|
return $response;
|
|||
|
|
}
|
|||
|
|
}
|