472 lines
19 KiB
PHP
472 lines
19 KiB
PHP
<?php
|
||
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
||
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;
|
||
|
||
}
|
||
|
||
header('Content-Type: application/json');
|
||
|
||
ini_set('display_errors', 1);
|
||
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||
|
||
$pdo = new MysqlPdo(hst, ndb, user, pass);
|
||
$sql = "SET NAMES 'utf8'";
|
||
$pdo->query($sql);
|
||
|
||
$content = file_get_contents('php://input');
|
||
|
||
|
||
if($_SESSION['id'] == 5238){
|
||
|
||
$content = '{"bothelp_user_id":28,"created_at":1758108805,"name":"тест имя","first_name":"Владимир","last_name":"Тех","profile_link":"","email":"","phone":"+79043322538","ref":"utm_source=instayana","utm_medium":"","utm_source":"instayana","utm_campaign":"","utm_term":"","utm_content":"","conversations_count":1,"first_contact_at":1734542246,"last_contact_at":1758108805,"user_id":"1111564648","messenger_username":"technical_spec","Город для недвижимости":"","Первоначальный взнос на руках":null,"Первоначальный взнос на руках текст":"100","Порядковый номер":4,"Сколько комнат":"7","Таргет":"Таргет","Ценовой диапазон":"450-900","created_at_show":"17/09/2025 11:33:25 UTC","cuid":"a1fs.s", "token":"238f8564db0c9084fcfaf1450e2d511f"}';
|
||
|
||
}
|
||
|
||
|
||
$message = json_decode($content, true);
|
||
|
||
var_dump($message);
|
||
|
||
if(!isset($message['token']) || empty($message['token'])) die();
|
||
|
||
$sql_user = "SELECT api_key, users.id FROM user_api_keys LEFT JOIN users ON users.id = user_api_keys.user_id WHERE api_key = '{$message['token']}'";
|
||
|
||
$q_user = $pdo->query($sql_user, true);
|
||
|
||
$r_user = $pdo->fetch_assoc($q_user);
|
||
|
||
if(!$r_user || empty($r_user['id'])) {
|
||
die();
|
||
} else if ((int)$r_user['id'] > 0){
|
||
$user_id = (int)$r_user['id'];
|
||
$user = new User();
|
||
$user->get($user_id);
|
||
|
||
$funnel_id = 0;
|
||
$user_id = 0;
|
||
$funnel_id_req = 0;
|
||
$activities_id = 0;
|
||
$source_id = 0;
|
||
$users = array();
|
||
$client_id = 0;
|
||
$email = '';
|
||
$partner = 0;
|
||
$user_id_req = 0;
|
||
$agency_id = 0;
|
||
$confirm = 1;
|
||
|
||
if($user->agencyId == 5238) {
|
||
$user_id = 5238;
|
||
$agency_id = 5238;
|
||
$funnel_id = 0;
|
||
$funnel_id_req = 0;
|
||
$user_id_req = 5238;
|
||
}
|
||
|
||
if($user->agencyId == 19111){
|
||
$user_id = 19132;
|
||
$agency_id = 19111;
|
||
$funnel_id_req = 1400;
|
||
$user_id_req = 19132;
|
||
}
|
||
|
||
$WebHookIn = new WebHookIn($pdo);
|
||
|
||
$users = $WebHookIn->getAllUserAgency($user->agencyId);
|
||
$mango = new MangoApiClass(0, 0);
|
||
|
||
var_dump($users);
|
||
|
||
$phone = $mango->ver_phone(str_replace(['(',')',' ','-'], '', $message['phone']));
|
||
|
||
if(!isset($phone) || empty($phone)) die();
|
||
|
||
$fio_client = "";
|
||
$email = '';
|
||
$opis = '';
|
||
if(isset($message['first_name']) && !empty($message['first_name']))
|
||
$fio_client .= $message['first_name'];
|
||
if(isset($message['name']) && !empty($message['name'])){
|
||
if($fio_client != '') $fio_client .= ' ';
|
||
$fio_client .= $message['name'];
|
||
}
|
||
|
||
if(isset($message['last_name']) && !empty($message['last_name'])){
|
||
if($fio_client != '') $fio_client .= ' ';
|
||
$fio_client .= $message['last_name'];
|
||
}
|
||
|
||
if(empty(trim($fio_client))){
|
||
$fio_client = "Имя не указано";
|
||
}
|
||
|
||
if(isset($message['email'])){
|
||
$email = $message['email'];
|
||
}
|
||
|
||
$source_name = trim($message['utm_source']);
|
||
|
||
$sourceArray = array(
|
||
2474 =>'instba',
|
||
2475 =>'instayana',
|
||
2476 =>'vk',
|
||
2477 =>'offline',
|
||
2479 =>'personal',
|
||
2480 =>'yana',
|
||
2481 =>'avitopro',
|
||
2482 =>'avito',
|
||
2484 =>'tgba',
|
||
2513 =>'site',
|
||
3858 =>'tgyana',
|
||
3859 =>'tiktok',
|
||
3860 =>'treds',
|
||
3861 =>'reklama'
|
||
);
|
||
|
||
$source_id = 0;
|
||
|
||
|
||
|
||
if(!empty($source_name)){
|
||
$source_id = (int)array_search($source_name, $sourceArray);
|
||
}
|
||
|
||
$temp_mess = ['name', 'first_name', 'last_name', 'email', 'phone', 'ref', 'token'];
|
||
|
||
foreach($message as $key => $mess){
|
||
if(!in_array($key, $temp_mess)){
|
||
if($opis != '') $opis .= '<br>';
|
||
if($key == 'created_at'){
|
||
$opis .= $key.': '.date('d.m.Y H:i:s', $mess);
|
||
} else {
|
||
$opis .= $key.': '.$mess;
|
||
}
|
||
}
|
||
}
|
||
echo $opis."\n";
|
||
var_dump($source_id);
|
||
|
||
$nameSourse = '';
|
||
|
||
if($source_id == 0){
|
||
//Поиск источника по домену
|
||
$sql_d = "SELECT *, (SELECT group_id FROM advertising_sources WHERE id = advertising_sources_domain.adv_id) AS group_id FROM `advertising_sources_domain` WHERE domain = '{$domain}' AND `type` = 2";
|
||
// echo $sql_d."\n";
|
||
$q_d = $pdo->query($sql_d, true);
|
||
$r_d = $pdo->fetch_assoc($q_d);
|
||
if($r_d){
|
||
$source_id = (int)$r_d['adv_id'];
|
||
$group_id = (int)$r_d['group_id'];
|
||
}
|
||
}
|
||
|
||
if($source_id == 0){
|
||
//Поиск источника
|
||
$sql_source = "SELECT id, group_id FROM `advertising_sources` WHERE source
|
||
= '".$nameSourse."' AND (user_id in (".implode(',', $users).") or manager_id in (".implode(',', $users)."))";
|
||
// echo $sql_source."\n";
|
||
$q_source = $pdo->query($sql_source);
|
||
$r_source = $pdo->fetch_assoc($q_source);
|
||
if($r_source['id'] > 0){
|
||
$source_id = $r_source['id'];
|
||
$group_id = (int)$r_source['group_id'];
|
||
} else {
|
||
$sql_up = "INSERT INTO `advertising_sources` SET source='".$nameSourse."', user_id={$user_id}, manager_id={$user->agencyId}";
|
||
$pdo->query($sql_up);
|
||
$source_id = $pdo->insert_id();
|
||
}
|
||
}
|
||
|
||
|
||
|
||
//Поиск тега
|
||
|
||
//Поиск тега
|
||
if($agency_id == 19895){
|
||
if($source_id > 0){
|
||
$sql_aa = "SELECT * FROM advertising_sources_activities WHERE source_id = {$source_id}";
|
||
echo $sql_aa."\n";
|
||
$q_aa = $pdo->query($sql_aa, true);
|
||
|
||
while($r_aa = $pdo->fetch_assoc($q_aa)) {
|
||
$activities_ids[] = (int)$r_aa['activities_id'];
|
||
}
|
||
}
|
||
|
||
} else if ($activities_id == 0 && !empty($nameSourse)) {
|
||
$sql_activites = "SELECT id FROM `activities` WHERE name = '".$nameSourse."' AND (user_id in (".implode(',', $users).") or manager_id in (".implode(',', $users)."))";
|
||
echo $sql_activites."\n";
|
||
$q_aclivites = $pdo->query($sql_activites);
|
||
$r_activites = $pdo->fetch_assoc($q_aclivites);
|
||
if($r_activites['id'] > 0){
|
||
$activities_id = $r_activites['id'];
|
||
//echo $activities_id."\n";
|
||
} else {
|
||
$sql_up = "INSERT INTO `activities` SET name='".$nameSourse."', user_id={$user_id}, manager_id={$user->agencyId}";
|
||
$pdo->query($sql_up);
|
||
$activities_id = $pdo->insert_id();
|
||
}
|
||
}
|
||
|
||
if($agency_id == 19895){
|
||
$opis = '';
|
||
}
|
||
$hot = 0;
|
||
if($agency_id == 19895 && $group_id == 290){
|
||
$hot = 1;
|
||
}
|
||
|
||
echo $hot."\n";
|
||
$confirm = 1;
|
||
$who_work = $user_id;
|
||
if($agency_id == 19895){
|
||
//Поиск ответственного по источнику
|
||
$sql_w = "SELECT * FROM advertising_sources_who_work WHERE adv_id = {$source_id}";
|
||
|
||
$q_w = $pdo->query($sql_w);
|
||
if($pdo->num_rows($q_w) > 0){
|
||
$r_w = $pdo->fetch_assoc($q_w);
|
||
$user_id = $who_work = (int)$r_w['who_work'];
|
||
} else {
|
||
$confirm = 0;
|
||
$who_work = 0;
|
||
}
|
||
}
|
||
|
||
|
||
$sql = "SELECT `id`, `stage`, `deleted` FROM `clients` WHERE cancel=0 AND (phone = '$phone' OR id in (SELECT client_id FROM clients_phone2 WHERE phone = '$phone')) and (who_work in (".implode(',', $users).") or id_agent in (".implode(',', $users)."))";
|
||
|
||
$client = $pdo->fetch_assoc($pdo->query($sql));
|
||
if(!empty($client) && $client){
|
||
$client_id = $client['id'];
|
||
} else {
|
||
|
||
$sql = "INSERT INTO clients SET phone='{$phone}', hot={$hot}, email='{$email}', fio='{$fio_client}', opis='{$opis}', id_agent={$user_id}, who_work={$who_work}, date_add=NOW(), confirm={$confirm}, funnel_id={$funnel_id}, stage=1, source= '{$source_id}', integration=13";
|
||
if($agency_id == 19895){
|
||
// echo $sql; die();
|
||
}
|
||
/* if($_SESSION['id'] == 19895){
|
||
echo $sql."\n";
|
||
die();
|
||
}*/
|
||
if(isset($partner) && $partner > 0){
|
||
$doers[$user_id] = 1;
|
||
$doers[$partner] = 1;
|
||
$sql .= ", doers = '".clearInputElement(json_encode($doers))."', doer_clients=1";
|
||
|
||
}
|
||
$pdo->query($sql);
|
||
$client_id = $pdo->insert_id();
|
||
if($partner > 0) {
|
||
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `read`, `send_telegramm`) VALUES (".$user_id.", ".$client_id.", ".$partner.", 'transmitted_parallel', 1,1)";
|
||
$pdo->query($sql_conf);
|
||
}
|
||
|
||
if($funnel_id > 0){
|
||
$Clients = new Clients;
|
||
$Clients->get_class_etap($client_id, $funnel_id);
|
||
}
|
||
if($activities_id){
|
||
$sql_a = "INSERT INTO `clients_activities` (`activity_id`, `client_id`) VALUES ({$activities_id}, {$client_id})";
|
||
$pdo->query($sql_a);
|
||
} else if($activities_ids && !empty($activities_ids)){
|
||
foreach($activities_ids as $activities_id){
|
||
$sql_a = "INSERT INTO `clients_activities` (`activity_id`, `client_id`) VALUES ({$activities_id}, {$client_id})";
|
||
$pdo->query($sql_a);
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
if($client_id > 0 && $user->agencyId != 17347){
|
||
$web_hook_in = new WebHookIn($pdo);
|
||
$reqid=(int)$web_hook_in->check_is_req($who_work, $source_id, $client_id);
|
||
if($reqid > 0 && $agency_id == 19895) {
|
||
$comment = "Обращался повторно<br>";
|
||
if(!empty($activities_ids)){
|
||
$sql_activites = "SELECT * FROM activities WHERE id in (".implode(',', $activities_ids).")";
|
||
$q_aclivites = $pdo->query($sql_activites);
|
||
$comment .= "Теги: ";
|
||
while($r_activites = $pdo->fetch_assoc($q_aclivites)){
|
||
$comment .= $r_activites['name']." ";
|
||
}
|
||
$sql_ev = "INSERT INTO user_client_events (req_id, `type`, comment, user_id, from_id, create_date, calendar_view)
|
||
VALUES ($reqid, 'comment', '{$comment}', {$user_id}, {$user_id}, NOW(), 1)";
|
||
$pdo->query($sql_ev);
|
||
|
||
}
|
||
die();
|
||
}
|
||
$name_req = 'Подбор объекта для '.$fio_client;
|
||
if($agency_id == 19895){
|
||
$name_req = $fio_client;
|
||
}
|
||
//Поиск воронки по источнику
|
||
if($source_id > 0){
|
||
$sql_req_funnel="SELECT * FROM advertising_sources_funnel WHERE source_id = {$source_id}";
|
||
$q_req_funnel = $pdo->query($sql_req_funnel, true);
|
||
$r_req_funnel = $pdo->fetch_assoc($q_req_funnel);
|
||
if($r_req_funnel && $r_req_funnel['funnel_id_req'] > 0){
|
||
$funnel_id_req = (int)$r_req_funnel['funnel_id_req'];
|
||
}
|
||
}
|
||
$sql = "INSERT INTO requisitions SET client_id={$client_id}, hot={$hot}, name='{$name_req}', description='{$opis}', user_id={$user_id}, integration=13, who_work={$who_work}, type_id=1, confirm=$confirm, funnel_id={$funnel_id_req}, stage=1, source= '{$source_id}'";
|
||
/* if($_SESSION['id'] == 19895){
|
||
echo $sql;
|
||
//die();
|
||
}*/
|
||
|
||
if(isset($partner) && $partner > 0){
|
||
$doers[$user_id] = 1;
|
||
$doers[$partner] = 1;
|
||
$sql .= ", doers = '".clearInputElement(json_encode($doers))."', doer_clients=1";
|
||
|
||
}
|
||
/* if($_SESSION['id'] == 19895){
|
||
echo $sql;
|
||
die();
|
||
}*/
|
||
$pdo->query($sql);
|
||
$req_id = $pdo->insert_id();
|
||
if($funnel_id_req > 0){
|
||
$Requisitions = new Requisitions();
|
||
$Requisitions->get_class_etap($req_id, $funnel_id_req);
|
||
}
|
||
|
||
if($activities_ids && !empty($activities_ids)){
|
||
foreach($activities_ids as $activities_id){
|
||
$sql_a = "INSERT INTO `requisitions_activities` (`activity_id`, `req_id`) VALUES ({$activities_id}, {$req_id})";
|
||
$pdo->query($sql_a);
|
||
}
|
||
} else
|
||
if($activities_id){
|
||
$sql_a = "INSERT INTO `requisitions_activities` (`activity_id`, `req_id`) VALUES ({$activities_id}, {$req_id})";
|
||
$pdo->query($sql_a);
|
||
}
|
||
|
||
if($who_work > 0){
|
||
$comment = "BotHelp";
|
||
|
||
$sql_add = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `dop_text`, `read`) ".
|
||
"VALUES ({$user_id}, {$req_id}, {$who_work}, 'add', '{$comment}', 2)";
|
||
$pdo->query($sql_add);
|
||
|
||
if($agency_id != 19895){
|
||
$sql_in_ev = "INSERT INTO user_client_events (user_id, req_id, create_date, schedule_date, `type`, comment, calendar_view, from_id) ".
|
||
"VALUES ($user_id_req, $req_id, '".date('Y-m-d H:i:s')."', '".date('Y-m-d H:i:s', strtotime('+15 minutes'))."', 'call', '{$comment}', 0, {$who_work})";
|
||
$pdo->query($sql_in_ev);
|
||
if($partner > 0) {
|
||
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `read`, `send_telegramm`) VALUES (".$user_id.", ".$req_id.", ".$partner.", 'transmitted_parallel', 2,0)";
|
||
$pdo->query($sql_conf);
|
||
}
|
||
}
|
||
}
|
||
|
||
if($agency_id == 19895 && $req_id > 0){
|
||
$arr_data = array();
|
||
if(isset($message->answers)){
|
||
|
||
|
||
|
||
foreach($message->answers as $key => $answer){
|
||
|
||
$sql_fields = "SELECT * FROM `client_req_fields` WHERE title = '".trim($answer->q)."' AND agency_id = {$agency_id}";
|
||
|
||
$q_fields = $pdo->query($sql_fields);
|
||
$r_fields = $pdo->fetch_assoc($q_fields);
|
||
if($r_fields){
|
||
|
||
if(is_array($answer->a)){
|
||
foreach($answer->a as $keyan => $an){
|
||
|
||
echo $an."\n";
|
||
}
|
||
} else {
|
||
$value = trim($answer->a);
|
||
if($r_fields['type'] == 1 || $r_fields['type'] == 0){
|
||
|
||
|
||
$arr_data[] = "({$req_id}, {$r_fields['id']}, 1, '\"{$value}\"')";
|
||
|
||
} elseif ($r_fields['type'] == 2){
|
||
$params = json_decode($r_fields['params'], true);
|
||
//var_dump($params['items']);
|
||
foreach($params['items'] as $item){
|
||
if(trim($item['name']) == $value){
|
||
$id_item = $item['value'];
|
||
$arr_data[] = "({$req_id}, {$r_fields['id']}, 1, {$id_item})";
|
||
}
|
||
}
|
||
}
|
||
// echo $answer->a."\n";
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
|
||
if(isset($message->extra->utm) && !empty($message->extra->utm)){
|
||
//$opis .= " <br>utm: ";
|
||
foreach($message->extra->utm as $keyutm => $utm){
|
||
$sql_fields = "SELECT * FROM `client_req_fields` WHERE title = 'UTM ".trim($keyutm)."' AND agency_id = {$agency_id}";
|
||
|
||
$q_fields = $pdo->query($sql_fields);
|
||
$r_fields = $pdo->fetch_assoc($q_fields);
|
||
if($r_fields){
|
||
if($r_fields['type'] == 1 || $r_fields['type'] == 0){
|
||
|
||
|
||
$arr_data[] = "({$req_id}, {$r_fields['id']}, 1, '\"{$utm}\"')";
|
||
|
||
} elseif ($r_fields['type'] == 2){
|
||
$params = json_decode($r_fields['params'], true);
|
||
//var_dump($params['items']);
|
||
foreach($params['items'] as $item){
|
||
if(trim($item['name']) == $utm){
|
||
$id_item = $item['value'];
|
||
$arr_data[] = "({$req_id}, {$r_fields['id']}, 1, {$id_item})";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
|
||
|
||
if(!empty($arr_data)){
|
||
$sql_data = "INSERT INTO requisition_data (`req_id`, `field_id`, `type`, `value`) VALUES ".implode(',' , $arr_data);
|
||
$pdo->query($sql_data);
|
||
}
|
||
|
||
|
||
$rqClass = new Requisitions(null, true);
|
||
$rqClass->set_agencyId($agency_id);
|
||
$rqClass->set_userId($user_id);
|
||
$rqClass->autoUnitReq(1, $req_id);
|
||
|
||
|
||
}
|
||
}
|
||
} |