Joywork/admin/ajax/ajax_vue_funnel.php

937 lines
38 KiB
PHP
Raw Normal View History

2026-05-22 20:21:54 +02:00
<?php
require_once($_SERVER['DOCUMENT_ROOT']."/ajax/vue_php_function.php");
ini_set('display_errors', 1);
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
$data = json_decode(file_get_contents("php://input"));
$pdo = new MysqlPdo(hst, ndb, user, pass);
$sql = "SET NAMES 'utf8'";
$pdo->query($sql);
$request = $data->request;
if($request == 'get_type'){
foreach ($WORK_TYPES as $key => $val){
if($key > 0){
$clientstype = array('code'=>$key, 'name'=>$val);
$response[] = $clientstype;
}
}
echo json_encode($response);
exit;
}
if($request == 'get_role'){
foreach($ROLES_CLIENTS as $key => $val){
if($key > 0){
$clientsrole = array('code'=>$key, 'name'=>$val);
$response[] = $clientsrole;
}
}
echo json_encode($response);
exit;
}
// Add record
if($request == 'addFunnel'){
$response = [];
$name = clearInputElement($data->name);
$client_type = clearInputElement($data->client_type);
$role = clearInputElement($data->role);
$user_id = clearInputElement($data->user_id);
$agency_id = clearInputElement($data->agency_id);
$is_req = (int)$data->is_req;
$is_client = (int)$data->is_client;
$order_number = (int)$data->order_number;
$is_agent = (int)$data->is_agent;
$is_agency = (int)$data->is_agency;
$is_dev = (int)$data->is_dev;
$users_no_see = $data->users_no_see;
if(empty($users_no_see)){
$users_no_see = '';
} else {
$users_no_see = json_encode($users_no_see);
}
$funnelData = $pdo->query("SELECT id FROM funnel_admin WHERE deleted=0 and name='".$name."' and agency_id='".$agency_id."'");
if($pdo->num_rows($funnelData) == 0){
if($pdo->query("INSERT INTO funnel_admin (name,client_type,role,user_id,agency_id,is_req,is_client, order_number, users_no_see, is_agent, is_agency, is_dev)
VALUES ('".$name."','".$client_type."','".$role."', '".$user_id."', '".$agency_id."', {$is_req}, {$is_client}, {$order_number}, '{$users_no_see}', '{$is_agent}', '{$is_agency}', '{$is_dev}')"))
$response['done'] = 'done';
else
$response['error'] = $pdo->errorInfo();
}else{
$response['error'] = "Воронка с таким наименованием уже есть в вашем агенстве";
}
echo json_encode($response);
exit;
}
//All funnels agency
if($request == 'get_all_funnel'){
$agency_id = $data->agency_id;
$funnelsData = mysql_query("select * from funnel_admin WHERE agency_id = {$agency_id} and deleted = 0 order by id");
$response = array();
//Нулевая воронка
/* $sql_d = "SELECT * FROM funnel_default WHERE agency_id = {$agency_id}";
$q_d = $pdo->query($sql_d);
if($pdo->num_rows($q_d) == 0){
$response[] = array('id' => 0, 'name' => 'Обычные', 'is_client' => 1, 'is_req' => 1, 'is_stage' => 1, 'is_show_funnels' => 1, 'order_number' => 0);
} else {
$r_d = $pdo->fetch_assoc($q_d);
$name = 'Обычные';
if(!empty($r_d['name'])) $name = $r_d['name'];
$response[] = array('id' => 0, 'name' => $name, 'is_client' => $r_d['is_client'], 'is_req' => $r_d['is_req'], 'is_stage' => $r_d['is_stage'], 'is_show_funnels' => $r_d['is_show_funnels'], 'order_number' => $r_d['order_number']);
}*/
while($row = mysql_fetch_assoc($funnelsData)){
$row['date'] = date('d.m.Y H:i:s', strtotime($row['date_create']));
$row['role'] = htmlspecialchars_decode($row['role']);
$row['client_type'] = htmlspecialchars_decode($row['client_type']);
$row['mainstep'] = '';
$tempUserNo = null;
if(!empty($row['users_no_see'])){
$tempUserNo = json_decode($row['users_no_see'], true);
}
$row['user_no_see'] = $tempUserNo;
//Этапы
$steps = mysql_query("SELECT * FROM funnel_steps WHERE funnel_id = ".$row['id']." and deleted=0 order by main desc");
while($step = mysql_fetch_assoc($steps)){
$step['name_number'] = $step['name'];
if($step['main'] == 1){
$step['name_number'] = '1. '.$step['name'];
} else if($step['order_number'] > 0){
$step['name_number'] = $step['order_number'].'. '.$step['name'];
}
$row['branchs'][$step['branch']][$step['id']] = deClearInputElements($step);
$row['steps'][$step['id']] = deClearInputElements($step);
if(!empty($row['steps'][$step['id']]['users_mes'])){
//var_dump($step['users_mes']);
$row['steps'][$step['id']]['users_mes'] = json_decode($row['steps'][$step['id']]['users_mes'], true);
}
if(!empty($row['steps'][$step['id']]['tasks_move'])){
$row['steps'][$step['id']]['tasks_move'] = json_decode($row['steps'][$step['id']]['tasks_move'], true);
}
$sql_file = "SELECT * FROM funnel_files WHERE etap_id = '".$step['id']."' AND funnel_id = ".$row['id'];
$q_file = mysql_query($sql_file);
$files = array();
while($file_r = mysql_fetch_assoc($q_file)){
$path = "https://uf.joywork.ru/upload/funnels/".$row['id']."/".$file_r['guid'].".".$file_r['type'];
$files[] = array('guid' => $file_r['guid'],'isUpload' => true, 'uploads' => false, 'name' => $file_r['name']);
}
$row['steps'][$step['id']]['files'] = $files;
$prev_files = array();
if(!empty($step['pole_prev'])){
$pole_prev = json_decode($row['steps'][$step['id']]['pole_prev'], true);
if(!empty($pole_prev['files_attach'])){
foreach($pole_prev['files_attach'] as $file){
$sql_file_prev = "SELECT * FROM files_steps_funnel_prev WHERE id = {$file['id']}";
$q_file_prev = mysql_query($sql_file_prev);
while($file_r = mysql_fetch_assoc($q_file_prev)){
$path = "https://uf.joywork.ru/upload/funnels/prev_steps/".$row['id']."/".$file_r['guid'].".".$file_r['type'];
$prev_files[] = array('guid' => $file_r['guid'],'isUpload' => true, 'uploads' => false, 'name' => $file_r['name']);
}
}
}
}
$row['steps'][$step['id']]['prev_files'] = $prev_files;
/* if(!empty($step['pole_dop'])){
}*/
$row['mainsteps'][] = array('id'=>$step['id'], 'name'=>$step['name']);
if($step['main'] == 1){
$row['mainstep'] = array('id'=>$step['id'], 'name'=>$step['name']);
}
}
$response[] = $row;
}
echo json_encode($response);
exit;
}
if($request == 'get_users_see'){
$result = array();
$user_id = (int)$data->user_id;
$agency_id = (int)$data->agency_id;
if($user_id > 0 && $agency_id > 0){
$name_file_emp = $_SERVER['DOCUMENT_ROOT'] . '/server/emp/'.$agency_id .'/'.$user_id.'/emp.json';
//echo $name_file_emp."\n";
if(!file_exists($name_file_emp)){
require_once($_SERVER['DOCUMENT_ROOT']."/templates/filter_emp.php");
}
$users = [];
$usersIds = [];
$usersIds[] = $agency_id;
$sql_users = "SELECT id FROM users WHERE id in (select id from users where id=$agency_id or id_manager=$agency_id or id_manager in
(select id from users where id_manager=$agency_id or id_manager in
(select id from users where id_manager=$agency_id)))";
$q_users = mysql_query($sql_users);
while($r_users = mysql_fetch_assoc($q_users)){
$usersIds[] = (int)$r_users['id'];
}
$sql_d = "SELECT d.name as dep_name, r.name as role_name, r.role, r.department_id, r.id FROM departments as d left join roles as r on d.id = r.department_id WHERE d.agency_id = ".$agency_id;
$q_d = mysql_query($sql_d);
$departments = array();
while($r_d = mysql_fetch_assoc($q_d)){
$departments[$r_d['id']] = $r_d;
}
$sql_u = "SELECT * FROM users WHERE id in (".implode(',',$usersIds).")";
$q_u = mysql_query($sql_u);
while($row = mysql_fetch_assoc($q_u)){
$users[$row['id']] = $row;
}
$json_str = file_get_contents($name_file_emp);
$json = json_decode($json_str, true);
//var_dump($json);
$ids = array();
if(isset($json['agency']['id'])){
$result[] = array('code'=>(int)$json['agency']['id'], 'type'=>'agency', 'name'=>'Руководитель агентства');
}
if(isset($json['agency']['managers']['ids'])){
foreach($json['agency']['managers']['ids'] as $id_menager){
if(isset($users[$id_menager])){
$name = '';
if($users[$id_menager]['role_id'] > 0){
$name .= $departments[$users[$id_menager]['role_id']]['dep_name'];
} else {
$name .= "Группа менеджера ";
}
$result[] = array('code'=>'all_'.(int)$id_menager, 'type'=>'otdel', 'name'=>$name);
$name='';
$name .= '-'.trim($users[$id_menager]['last_name'] . ' ' . $users[$id_menager]['first_name'] . ' ' . $users[$id_menager]['middle_name']);
if($users[$id_menager]['role_id'] > 0){
$name .= " (".$departments[$users[$id_menager]['role_id']]['role_name'].")";
} else {
$name .= " (Менеджер)";
}
$result[] = array('code'=>(int)$id_menager, 'type'=>'manager', 'name'=>$name);
}
if(isset($json['agency']['managers'][$id_menager]['agents'])){
foreach($json['agency']['managers'][$id_menager]['agents'] as $id_agent){
if(isset($users[$id_agent])){
$name = '-';
$name .= trim($users[$id_agent]['last_name'] . ' ' . $users[$id_agent]['first_name'] . ' ' . $users[$id_agent]['middle_name']);
if($users[$id_agent]['role_id'] > 0){
$name .= " (".$departments[$users[$id_agent]['role_id']]['role_name'].")";
} else {
$name .= " (Агент)";
}
$result[] = array('code'=>(int)$id_agent, 'type'=>'agent', 'name'=>$name);
}
}
}
}
}
if(isset($json['agency']['agents'])){
foreach($json['agency']['agents'] as $id_agent){
if(isset($users[$id_agent])){
$name = '';
$name .= trim($users[$id_agent]['last_name'] . ' ' . $users[$id_agent]['first_name'] . ' ' . $users[$id_agent]['middle_name']);
if($users[$id_agent]['role_id'] > 0){
$name .= " (".$departments[$users[$id_agent]['role_id']]['role_name'].")";
} else {
$name .= " (Агент)";
}
$result[] = array('code'=>(int)$id_agent, 'type'=>'agent', 'name'=>$name);
}
}
}
}
echo json_encode($result, JSON_UNESCAPED_UNICODE);
exit;
}
//get list steps
if($request == 'get_steps'){
$funnelId = (int)$data->funnel_id;
$row = array();
if($steps = mysql_query("SELECT * FROM funnel_steps WHERE funnel_id = ".$funnelId." and deleted=0")){
while($step = mysql_fetch_assoc($steps)){
$row[$step['id']] = deClearInputElements($step);
}
} else {
echo mysql_error();
}
echo json_encode($row, JSON_UNESCAPED_UNICODE);
exit;
}
//get list steps
if($request == 'get_steps_order'){
$funnelId = (int)$data->funnel_id;
$row = array();
if($steps = mysql_query("SELECT * FROM funnel_steps WHERE funnel_id = ".$funnelId." and deleted=0 order by branch")){
while($step = mysql_fetch_assoc($steps)){
$step['isHide'] = true;
$row['step_'.$step['id']] = deClearInputElements($step);
}
} else {
echo mysql_error();
}
echo json_encode($row, JSON_UNESCAPED_UNICODE);
exit;
}
//Update funnel_admin on id
if($request == 'updateFunnel'){
//error_reporting(E_ALL | E_STRICT);
//ini_set('display_errors', 1);
$id = $data->id;
$agency_id = $data->agency_id;
$name = clearInputElement($data->name);
if(isset($data->client_type)){
$client_type = clearInputElement($data->client_type);
}
if(isset($data->role)){
$role = clearInputElement($data->role);
}
$is_req = (int)$data->is_req;
$is_client = (int)$data->is_client;
$is_stage = (int)$data->is_stage;
$is_show_funnels = (int)$data->is_show_funnels;
$order_number = (int)$data->order_number;
$is_no_see = (int)$data->is_no_see;
$users_no_see = $data->users_no_see;
$is_agent = (int)$data->is_agent;
$is_agency = (int)$data->is_agency;
$is_dev = (int)$data->is_dev;
if(empty($users_no_see)){
$users_no_see = '';
} else {
$users_no_see = json_encode($users_no_see);
}
if($id == 0){
$cl = new Clients();
$usersIds = $cl -> getUsersFilter([], $_SESSION['id'], true);
}
if($is_client != 1){
$sql_cl = "SELECT COUNT(*) as total FROM clients WHERE funnel_id = {$id}";
if($id == 0){
$sql_cl .= " AND (who_work in (".implode(',',$usersIds).") OR id_agent in (".implode(',',$usersIds)."))";
}
$q_cl = $pdo->query($sql_cl);
$res = $pdo->result($q_cl);
if($res > 0){
echo json_encode(array('result'=>'error',
'mes'=>'<p>В воронке есть клиенты ('.$res.' шт.).</p><p>Необходимо перенести их в другую воронку.</p>',
'error_close'=>$res, 'type_error'=>'client'),
JSON_UNESCAPED_UNICODE);
exit;
}
}
if($is_req != 1) {
$sql_r = "SELECT COUNT(*) as total FROM requisitions WHERE funnel_id = {$id} AND cancel = 0";
if($id == 0){
$sql_r .= " AND (who_work in (".implode(',',$usersIds).") OR user_id in (".implode(',',$usersIds)."))";
}
//echo $sql_r;
$q_r = $pdo->query($sql_r);
$res = $pdo->result($q_r);
if($res > 0){
echo json_encode(array('result'=>'error',
'mes'=>'<p>В воронке заявки ('.$res.' шт.).</p><p>Необходимо перенести их в другую воронку</p>',
'error_close'=>$res, 'type_error'=>'req'),
JSON_UNESCAPED_UNICODE);
exit;
}
}
$sql_up ="UPDATE funnel_admin SET name = '{$name}', role='{$role}', client_type='{$client_type}', is_req={$is_req}, is_client={$is_client}, order_number={$order_number}, users_no_see = '{$users_no_see}', is_no_see={$is_no_see},
is_agent = {$is_agent}, is_agency = {$is_agency}, is_dev = {$is_dev} WHERE id = {$id}";
if($id == 0){
$sql_d = "SELECT id FROM funnel_default WHERE agency_id = {$agency_id}";
$q_d = $pdo->query($sql_d);
if($pdo->num_rows($q_d) == 0){
$sql_up = "INSERT INTO funnel_default SET agency_id = {$agency_id}, name='{$name}', is_req={$is_req}, is_client={$is_client}, is_stage={$is_stage}, is_show_funnels={$is_show_funnels}, order_number={$order_number}";
} else {
$sql_up = "UPDATE funnel_default SET is_req={$is_req}, is_client={$is_client}, name='{$name}', is_stage={$is_stage}, is_show_funnels={$is_show_funnels}, order_number={$order_number} WHERE agency_id = {$agency_id}";
}
}
if(!$pdo->query($sql_up)){
echo json_encode(array('result'=>'error', 'mes'=>$pdo->errorInfo()), JSON_UNESCAPED_UNICODE);
exit;
}
echo json_encode(array('result'=>'done'), JSON_UNESCAPED_UNICODE);
}
//Delete funnel_admin
if($request == 'delete_funnel'){
$res['result'] = 'done';
$id = $data->id;
//Есть ли не закрытые клиенты
$sql = "SELECT id FROM clients WHERE funnel_id=".$id;
$q = mysql_query($sql);
$rows = mysql_num_rows($q);
if($rows > 0){
$res['result'] = 'error';
//$res['mes'] = "Воронку нельзя удалить. Не закрытых клиентов: ".$rows;
$res['error_close'] = $rows;
$res['type_error'] = 'client';
echo json_encode($res, JSON_UNESCAPED_UNICODE);
exit;
}
//Есть ли не закрытые клиенты
$sql = "SELECT id FROM requisitions WHERE funnel_id=".$id;
$q = mysql_query($sql);
$rows = mysql_num_rows($q);
if($rows > 0){
$res['result'] = 'error';
//$res['mes'] = "Воронку нельзя удалить. Не закрытых клиентов: ".$rows;
$res['error_close'] = $rows;
$res['type_error'] = 'req';
echo json_encode($res, JSON_UNESCAPED_UNICODE);
exit;
}
if(!mysql_query("UPDATE funnel_admin set deleted = 1 WHERE id = {$id}")){
$res['result'] = 'error';
$res['mes'] = mysql_error();
}
echo json_encode($res, JSON_UNESCAPED_UNICODE);
exit;
}
//Delete file
if($request == 'deleteFile'){
$funnel_id = $data->funnelId;
$guid = $data->guid;
$type = $data->type_file;
$path = $_SERVER['DOCUMENT_ROOT']."/upload/funnels/".$funnel_id."/".$guid.".".$type;
unlink($path);
mysql_query("DELETE FROM funnel_files WHERE guid = '".$guid."' and funnel_id = '{$funnel_id}'");
exit;
}
//Delete file
if($request == 'deleteFilePrev'){
$funnel_id = $data->funnelId;
$guid = $data->guid;
$type = $data->type_file;
$path = $_SERVER['DOCUMENT_ROOT']."/upload/funnels/prev_steps/".$funnel_id."/".$guid.".".$type;
unlink($path);
mysql_query("DELETE FROM files_steps_funnel_prev WHERE guid = '".$guid."' and funnel_id = '{$funnel_id}'");
exit;
}
if($request == 'get_doers'){
$agency_id = clearInputElement($data->agency_id);
//Определение отделов
$sql_d = "SELECT d.name as dep_name, r.name as role_name, r.role, r.department_id, r.id FROM departments as d left join roles as r on d.id = r.department_id WHERE d.agency_id = ".$agency_id;
$q_d = mysql_query($sql_d);
$departments = array();
while($r_d = mysql_fetch_assoc($q_d)){
$departments[$r_d['id']] = $r_d;
}
$sql = "SELECT id, id_manager, agency, manager, first_name, last_name, middle_name, role_id, department_id FROM users WHERE id={$agency_id} or id_manager = {$agency_id}";
$q = mysql_query($sql);
$res = array();
$res_a = array();
$res_ag = array();
while($r = mysql_fetch_assoc($q)){
$res_ag[$r['id']] = array();
if($r['agency'] > 0){
// if(!isset($res_a)) $res_a = array();
$res_a[$r['id']]['manager'] = array('id' => $r['id'], 'fio' => htmlspecialchars_decode(trim($r['last_name'] . ' ' . $r['first_name'] . ' ' . $r['middle_name'])), 'department' => 'Агенство', 'role' => 'Руководитель');
$res_a[$r['id']]['isSee'] = false;
} else if ($r['manager'] > 0){
//if(!isset($res_m)) $res_m = array();
$department = 'Агенство';
$role = 'Менеджер';
if($r['role_id'] > 0){
$department = $departments[$r['role_id']]['dep_name'];
$role = $departments[$r['role_id']]['role_name'];
}
$res_a[$r['id']]['manager']= array('id' => $r['id'], 'fio' => htmlspecialchars_decode(trim($r['last_name'] . ' ' . $r['first_name'] . ' ' . $r['middle_name'])), 'department' =>$department, 'role' => $role);
$res_a[$r['id']]['isSee'] = false;
$sql_m = "SELECT id, id_manager, agency, manager, first_name, last_name, middle_name, role_id, department_id FROM users WHERE id_manager = ".$r['id']. " order by department_id";
$q_m = mysql_query($sql_m);
while($r_m = mysql_fetch_assoc($q_m)){
$department = 'Агенство';
$role = 'Агент';
if($r_m['role_id'] > 0){
$department = $departments[$r_m['role_id']]['dep_name'];
$role = $departments[$r_m['role_id']]['role_name'];
}
//if(!isset($res_ag)) $res_ag = array();
$res_a[$r['id']]['agents'][] = array('id' => $r_m['id'], 'fio' => htmlspecialchars_decode(trim($r_m['last_name'] . ' ' . $r_m['first_name'] . ' ' . $r_m['middle_name'])), 'department' =>$department, 'role' =>$role);
}
} else {
$department = 'Агенство';
$role = 'Агент';
if($r['role_id'] > 0){
$department = $departments[$r['role_id']]['dep_name'];
$role = $departments[$r['role_id']]['role_name'];
}
$res_a[$agency_id]['agents'][] = array('id' => $r['id'], 'fio' => htmlspecialchars_decode(trim($r['last_name'] . ' ' . $r['first_name'] . ' ' . $r['middle_name'])), 'department' => $department, 'role' => $role);
}
//$res_a[[$r['id']]['agents']] = $res_ag[$r['id']];
}
echo json_encode($res_a, JSON_UNESCAPED_UNICODE);
exit;
}
if($request == 'get_users'){
//Список сотрудников
$data = json_decode(file_get_contents("php://input"));
$agency_id = (int)$data->agency_id;
/*error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);*/
$depClass = new Department();
$departments = $depClass->getDepartments();
$result = array();
$usersArr = array();
$user = new User;
$user->get($agency_id);
$usersArr[] = $agency_id;
$result['emp'][] = array('code'=>0, 'date_employe'=>'Ответственный');
$result['emp'][] = array('code'=>'manager', 'date_employe'=>'Менеджер ответственного');
$sql = "SELECT * FROM users WHERE id=$agency_id AND blocked=0";
$rez = mysql_query($sql);
$agency = mysql_fetch_assoc($rez);
$result['emp'][] = array('code' => $agency_id, 'date_employe' => htmlspecialchars_decode(trim($agency['last_name'] . ' ' . $agency['first_name'] . ' ' . $agency['middle_name']).' (руководитель)'));
if($user->agency){
$agentsOfAgency = User::getAllAgents($user->agencyId);
$agentsOfManager = User::getAllManagers($user->agencyId);
} else if ($user->manager){
$agentsOfAgency = User::getAllAgents($userId);
} else if ($user->id_manager) {
$agentsOfAgency = User::getAllAgents($user->id_manager);
$sql = "SELECT * FROM users WHERE manager=1 AND id=$user->id_manager AND blocked=0";
$agentsOfManager = array();
$rez = mysql_query($sql);
while($manager = mysql_fetch_assoc($rez)) $agentsOfManager[] = $manager;
//$agentsOfManager = User::getMyManagers();
}
if($agentsOfManager) {
foreach($agentsOfManager as $mngr)
{
if(!in_array($mngr['id'], $usersArr)){
$usersArr[] = $mngr['id'];
if($mngr['role_id'] > 0){
$result['emp'][] = array('code' => (int)$mngr['id'], 'date_employe' => htmlspecialchars_decode(trim($mngr['last_name'] . ' ' . $mngr['first_name'] . ' ' . $mngr['middle_name']).' ('.$departments[$mngr['role_id']]['role_name'].' '.$departments[$mngr['role_id']]['dep_name'].')'));
} else {
$result['emp'][] = array('code' => (int)$mngr['id'], 'date_employe' => htmlspecialchars_decode(trim($mngr['last_name'] . ' ' . $mngr['first_name'] . ' ' . $mngr['middle_name']).' (менеджер)'));
}
}
if((int)$mngr['role_id'] > 0 && (int)$mngr['department_id'] > 0){
$role_user = $depClass->getRole((int)$mngr['role_id']);
if($role_user['role'] == 'admin_department'){
$menagerDep = User::getDepManagers($role_user['department_id']);
foreach($menagerDep as $md){
if(!in_array($md['id'], $usersArr)){
$usersArr[] = $md['id'];
$result['emp'][] = array('code' => (int)$md['id'], 'date_employe' => htmlspecialchars_decode(trim($md['last_name'] . ' ' . $md['first_name'] . ' ' . $md['middle_name']).' ('.$departments[$md['role_id']]['role_name'].' '.$departments[$md['role_id']]['dep_name'].')'));
}
$thisAgents = User::getAgentsOfAgency($md['id'], true);
foreach($thisAgents as $da){
if (!in_array($da['id'], $usersArr)) {
$usersArr[] = $da['id'];
$result['emp'][] = array('code' => (int)$da['id'], 'date_employe' => htmlspecialchars_decode(trim($da['last_name'] . ' ' . $da['first_name'] . ' ' . $da['middle_name']).' ('.$departments[$da['role_id']]['role_name'].' '.$departments[$da['role_id']]['dep_name'].')'));
}
}
}
}
}
}
}
if($agentsOfAgency) {
foreach($agentsOfAgency as $agent)
{
if (!in_array($agent['id'], $usersArr)){
$usersArr[] = $agent['id'];
if($agent['role_id'] > 0){
$result['emp'][] = array('code' => (int)$agent['id'], 'date_employe' => htmlspecialchars_decode(trim($agent['last_name'] . ' ' . $agent['first_name'] . ' ' . $agent['middle_name']).' ('.$departments[$agent['role_id']]['role_name'].' '.$departments[$agent['role_id']]['dep_name'].')'));
} else {
$result['emp'][] = array('code' => (int)$agent['id'], 'date_employe' => htmlspecialchars_decode(trim($agent['last_name'] . ' ' . $agent['first_name'] . ' ' . $agent['middle_name']).' (агент)'));
}
}
}
}
header('Content-Type: application/json');
echo json_encode($result, JSON_UNESCAPED_UNICODE);
}
//save etap
if($request == 'save_step'){
$stepId = (int)$data->step_id;
$funnel_id = (int)$data->funnel_id;
$name = clearInputElement($data->name_step);
if(!empty($data->order_number)){
$order_number = (int)$data->order_number;
}
$days_step = clearInputElement($data->days_step);
$is_move_end_srok = (int)$data->is_move_end_srok;
$tasks_move = json_encode($data->tasks_move);
$color_step = clearInputElement($data->color_step);
$start_parallel = clearInputElement($data->start_parallel);
$stage = clearInputElement($data->stage);
$files = $data->files;
$doers = clearInputElement($data->doers);
$pole_end_list = clearInputElement($data->poleEndlist);
$tasks_list = clearInputElement($data->tasksList);
$name_step_task = clearInputElement($data->name_step_task);
$docs_step_task = clearInputElement($data->docs_step_task);
$next_step_change = clearInputElement($data->nextStepChange);
$next_step = clearInputElement($data->nextStep);
$is_mes = (int)$data->is_mes;
$users_mes = json_encode($data->users_mes);
$pole_prev = clearInputElement($data->pole_prev);
$temp_pole_prev = json_decode($data->pole_prev, true);
$pole_dop = clearInputElement($data->pole_dop);
$is_select_room = (int)$data->is_select_room;
$complex_status_id = (int)$data->complex_status_id > 0 ? (int)$data->complex_status_id : 'NULL';
//Определение первого этапа
$main = 1;
$sql_m = "SELECT id FROM `funnel_steps` WHERE `funnel_id` = {$funnel_id} and main = 1";
$q_m = mysql_query($sql_m);
if(mysql_num_rows($q_m) > 0){
$main = 0;
}
$set = "SET `funnel_id` = {$funnel_id}, "
. "`name` = '{$name}', "
. "`days_step` = '{$days_step}', "
. "`is_move_end_srok` = '{$is_move_end_srok}', "
. "`tasks_move` = '{$tasks_move}', "
. "`color_step` = '{$color_step}', "
. "`start_parallel` = '{$start_parallel}', "
. "`stage` = '{$stage}', "
. "`doers` = '{$doers}', "
. "`pole_end_list` = '{$pole_end_list}', "
. "`tasks_list` = '{$tasks_list}', "
. "`name_step_task` = '{$name_step_task}', "
. "`next_step_change` = '{$next_step_change}', "
. "`next_step` = '{$next_step}', "
. "`is_mes` = {$is_mes}, "
. "`users_mes` = '{$users_mes}', "
. "`pole_prev` = '{$pole_prev}', "
. "`pole_dop` = '{$pole_dop}', "
. "`is_select_room` = $is_select_room, "
. "`complex_status_id` = $complex_status_id"
;
if($main == 1) {
$set .= ", `main` = 1";
$order_number = 1;
}
if(isset($order_number)){
$set .= ", order_number=$order_number";
}
if($data->arr_next_steps){
$arr_next_steps = clearInputElement($data->arr_next_steps);
$set .= ", arr_next_steps = '".$arr_next_steps."'";
}
if($stepId <= 0){
$sql = "INSERT INTO `funnel_steps` ".$set;
$stepId = mysql_insert_id();
} else {
$sql = "UPDATE `funnel_steps` ".$set." WHERE `id` = ".$stepId;
}
if(!mysql_query($sql)){
echo mysql_error();
} else {
foreach($files as $file){
mysql_query("UPDATE funnel_files SET etap_id = {$stepId} WHERE guid = '".$file->guid."' and funnel_id = {$funnel_id}");
}
mysql_query("DELETE FROM funnel_files WHERE etap_id = 'temp' AND funnel_id = {$funnel_id}");
if(!empty($temp_pole_prev['files_attach'])){
foreach($temp_pole_prev['files_attach'] as $files_temp){
mysql_query("UPDATE files_steps_funnel_prev SET step_id = {$stepId} WHERE id={$files_temp['id']}");
}
}
mysql_query("DELETE FROM files_steps_funnel_prev WHERE step_id is null AND funnel_id = {$funnel_id}");
}
getBranch($funnel_id);
exit;
}
if($request == 'delete_step'){
$stepId = (int)$data->step_id;
$res['result'] = 'done';
/*if(!mysql_query("DELETE FROM funnel_steps WHERE id=".$stepId)){
echo mysql_error();
}*/
$sql = "SELECT id FROM clients WHERE step_id = ".$stepId." and deleted = 0";
$q = mysql_query($sql);
$rows = mysql_num_rows($q);
if($rows > 0){
$res['result'] = 'isClients';
$res['mes'] = $rows;
echo json_encode($res, JSON_UNESCAPED_UNICODE);
exit;
}
if(!mysql_query("UPDATE funnel_steps SET deleted=1 WHERE id=".$stepId)){
$res['result'] = 'error';
$res['mes'] = mysql_error();
}
echo json_encode($res, JSON_UNESCAPED_UNICODE);
exit;
}
if($request == 'update_clients_step'){
$stepId = (int)$data->step_id;
$userId = (int)$data->user_id;
$sql = "SELECT id FROM clients WHERE step_id = ".$stepId." and deleted = 0";
$q = mysql_query($sql);
while($r = mysql_fetch_assoc($q)){
$sql_s = "SELECT cfs.*, fs.name, fs.stage, fs.funnel_id FROM `clients_funnel_step` as `cfs` LEFT JOIN `funnel_steps` as `fs` on cfs.step_id = fs.id WHERE cfs.client_id = ".$r['id'];
$q_s = mysql_query($sql_s);
if(mysql_num_rows($q_s) > 0){
$r_s = mysql_fetch_assoc($q_s);
$idCfs = $r_s['id'];
$nameCfs = $r_s['name'];
$funnelId = $r_s['funnel_id'];
$prev_id = 0;
$prev_next_id = 0;
$clientId = $r['id'];
if(!empty($r_s['values'])){
$valarr = json_decode($r_s['values'],true);
$arr = deClearInputElements($valarr);
$stepArr = json_decode($arr[$r_s['step_id']], true);
if(isset($stepArr['prev_id'])){
$prev_id = (int)$stepArr['prev_id'];
$prev_next_id = (int)$stepArr['prev_next_id'];
}
}
}
if($prev_id > 0){
$isStep = mysql_num_rows(mysql_query("SELECT `id` FROM funnel_steps WHERE id = ".$prev_id));
if($isStep == 0){
$prev_id = 0;
}
}
if($prev_id == 0){
$main_prev = mysql_fetch_assoc(mysql_query("SELECT `id`, `next_step` FROM funnel_steps WHERE funnel_id = ".$funnelId." and main=1"));
$prev_id = (int)$main_prev['id'];
$prev_next_id = (int)json_decode(htmlspecialchars_decode($main_prev['next_step']))[0];
}
$sql_s = "UPDATE clients_funnel_step SET step_id = ".$prev_id.", next_id = '".$prev_next_id."' WHERE id = ".$idCfs;
mysql_query($sql_s);
// echo "SELECT `name`, `id`, `funnel_id`,`stage` FROM funnel_steps WHERE id = ".$prev_id;
$sqlname = mysql_query("SELECT `name`, `id`, `funnel_id`,`stage` FROM funnel_steps WHERE id = ".$prev_id);
$prev = mysql_fetch_assoc($sqlname);
$prev_etap = $stepId;
$sqlname = mysql_query("SELECT `name`, `id`, `funnel_id`,`stage` FROM funnel_steps WHERE id = {$prev_etap}");
$prevName = mysql_fetch_assoc($sqlname);
$dop_text = 'c &laquo;'.$prevName['name'].'&raquo; на &laquo;'.$nameCfs.'&raquo; (Перенесен при удалении этапа &laquo;'.$prevName['name'].'&raquo;)';
//echo "INSERT INTO `events_clients` SET user_id = {$userId}, client_id = {$clientId}, event='stageedit', read=1, dop_text='{$dop_text}'";
mysql_query("INSERT INTO `events_clients` SET user_id = {$userId}, client_id = {$clientId}, event='stageedit', `read`=1, from_id = 0, dop_text='{$dop_text}'");
//$res = get_class_etap($clientId, $funnelId);
// echo json_encode($res);
$res = get_class_etap($clientId, $funnelId);
if(!mysql_query("UPDATE funnel_steps SET deleted=1 WHERE id=".$stepId)){
echo mysql_error();
}
//echo json_encode($res);
exit();
}
}
if($request == 'save_first_step'){
$stepId = (int)$data->step_id;
$sql = "SELECT funnel_id FROM funnel_steps WHERE id=".$stepId;
$q = mysql_query($sql);
$r=mysql_fetch_assoc($q);
$funnel_id = $r['funnel_id'];
if(!mysql_query("UPDATE funnel_steps set main = 0 WHERE funnel_id=".$funnel_id)){
echo mysql_error();
}
if(!mysql_query("UPDATE funnel_steps set main = 1, order_number = 1 WHERE id=".$stepId)){
echo mysql_error();
}
getBranch($funnel_id);
exit;
}
if($request == 'transmite_funnel'){
//error_reporting(E_ALL | E_STRICT);
//ini_set('display_errors', 1);
$type = $data->type;
$funnel_old = (int)$data->funnel_old;
$funnel_old_name = $data->funnel_old_name;
$funnel_new = (int)$data->funnel_new;
if($type == 'client'){
$cl = new Clients();
if($funnel_old == 0){
$usersIds = $cl -> getUsersFilter([], $_SESSION['id'], true);
}
$sql_cl = "SELECT id FROM clients WHERE funnel_id = {$funnel_old}";
if($funnel_old == 0){
$sql_cl .= " AND (who_work in (".implode(',',$usersIds).") OR id_agent in (".implode(',',$usersIds)."))";
}
$q_cl = $pdo->query($sql_cl);
$sql = "UPDATE clients SET funnel_id = '$funnel_new' WHERE funnel_id = {$funnel_old}";
if($funnel_old == 0){
$sql .= " AND (who_work in (".implode(',',$usersIds).") OR id_agent in (".implode(',',$usersIds)."))";
}
$pdo->query($sql);
while ($r_cl = $pdo->fetch_assoc($q_cl)){
$funnelName = "Обычные";
if ($funnel_new > 0) {
$sqlFunnel = "SELECT name FROM funnel_admin WHERE id = $funnel_new";
$resFunnel = $pdo->query($sqlFunnel);
$phRow = $pdo->fetch_assoc($resFunnel);
$funnelName = $phRow['name'];
}
$sqlDeleteOldFunnel = "delete from clients_funnel_step where client_id = {$r_cl['id']}";
$pdo->query($sqlDeleteOldFunnel);
$cl->get_class_etap($r_cl['id'], $funnel_new);
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `dop_text`, `read`)
VALUES (".$_SESSION['id'].", ".$r_cl['id'].", '0', 'update', 'Передан в воронку &laquo;".$funnelName."&raquo; при закрытии воронки &laquo;".$funnel_old_name."&raquo;', '1')";
$pdo->query($sql_conf);
}
} else if ($type == 'req'){
$req = new Requisitions($pdo);
if($funnel_old == 0){
$cl = new Clients();
$usersIds = $cl -> getUsersFilter([], $_SESSION['id'], true);
}
$sql_cl = "SELECT id FROM requisitions WHERE funnel_id = {$funnel_old}";
if($funnel_old == 0){
$sql_cl .= " AND (who_work in (".implode(',',$usersIds).") OR user_id in (".implode(',',$usersIds)."))";
}
$q_cl = $pdo->query($sql_cl);
$sql = "UPDATE requisitions SET funnel_id = '$funnel_new' WHERE funnel_id = {$funnel_old}";
if($funnel_old == 0){
$sql .= " AND (who_work in (".implode(',',$usersIds).") OR user_id in (".implode(',',$usersIds)."))";
}
$pdo->query($sql);
while ($r_cl = $pdo->fetch_assoc($q_cl)){
$funnelName = "Обычные";
if ($funnel_new > 0) {
$sqlFunnel = "SELECT name FROM funnel_admin WHERE id = $funnel_new";
$resFunnel = $pdo->query($sqlFunnel);
$phRow = $pdo->fetch_assoc($resFunnel);
$funnelName = $phRow['name'];
}
$sqlDeleteOldFunnel = "delete from clients_funnel_step where req_id = {$r_cl['id']}";
$pdo->query($sqlDeleteOldFunnel);
$req->get_class_etap($r_cl['id'], $funnel_new);
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `dop_text`, `read`)
VALUES (".$_SESSION['id'].", ".$r_cl['id'].", '0', 'update', 'Передана в воронку &laquo;".$funnelName."&raquo; при закрытии воронки &laquo;".$funnel_old_name."&raquo;', '1')";
$pdo->query($sql_conf);
}
}
}