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'=>'
В воронке есть клиенты ('.$res.' шт.).
Необходимо перенести их в другую воронку.
', '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'=>'В воронке заявки ('.$res.' шт.).
Необходимо перенести их в другую воронку
', '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 «'.$prevName['name'].'» на «'.$nameCfs.'» (Перенесен при удалении этапа «'.$prevName['name'].'»)'; //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', 'Передан в воронку «".$funnelName."» при закрытии воронки «".$funnel_old_name."»', '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', 'Передана в воронку «".$funnelName."» при закрытии воронки «".$funnel_old_name."»', '1')"; $pdo->query($sql_conf); } } }