Joywork/admin/ajax/ajax_vue_funnel.php
2026-05-22 21:21:54 +03:00

937 lines
38 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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);
}
}
}