getUsersFilter($usersArr, $_POST['user_id'], $_POST['users_admin']); //var_dump($usersId); $rows = $row = $row_obj = $row_add = $row_do = $row_pr = array(); //file_put_contents(__DIR__.'/log.txt', var_dump($_POST)); //var_dump($_POST); //$_SESSION['filter_emp'] = $_POST['responsible']; $bd_usl_managers = ''; $bd_usl = " AND cancel=0"; $arrIdUser = array(); $arrIdAgent = array(); foreach($usersId as $userId){ $arrIdUser[] = $userId; $arrIdAgent[] = $userId; } $period = 'all'; $whereTasks = ""; $bd_priod = ''; $bd_do_period = ''; $table = 'clients'; $date_add = 'date_add'; $pole_agent = 'id_agent'; $script = 'clients.php'; $pole_event = 'client_id'; if(isset($_POST['client_req']) && $_POST['client_req'] == 1){ $table = 'requisitions'; $date_add = 'created_at'; $pole_agent = 'user_id'; $script = 'requisitions.php'; $pole_event = 'req_id'; //$bd_usl .= " AND cancel=0"; } if(isset($_POST['period'])){ //$_SESSION['client_period'] = $_POST['period']; $period = $_POST['period']; if($period == 'dates'){ // $_SESSION['client_period'] = 'period'; $onDate = date('Y-m-d 00:00:00', strtotime($_POST['onDate'])); if(empty($onDate)) $onDate = '1970-01-01 00:00:00'; if(!empty($_POST['offDate'])) { $offDate = date('Y-m-d 23:59:59', strtotime($_POST['offDate'])); } else { $offDate = date('Y-m-d 23:59:59'); } $bd_piriod .= " AND $date_add between '{$onDate}' AND '{$offDate}'"; $bd_do_period .= " AND $date_add < '{$onDate}'"; $_SESSION['on_date'] = $_POST['onDate']; $_SESSION['off_date'] = $_POST['offDate']; } else { unset($_SESSION['on_date']); unset($_SESSION['off_date']); $arrPeriod = ['today' => '-0 day', 'week' => '-6 day', 'month' => '-30 day', 'quarter' => '-120 day', 'year' => '-365']; $days = date('Y-m-d', strtotime($arrPeriod[$_POST['period']])); $bd_piriod .= " AND $date_add > '{$days}'"; $bd_do_period .= " AND $date_add < '{$days}'"; //$whereTasks = " and DATE(create_date) > '{$days}'"; //$_SESSION['client_period'] = $_POST['period']; } } else { //unset($_SESSION['client_period']); } //echo $period; /* echo $bd_piriod."\n"; echo $bd_do_period."\n"; $period = 'all'; $whereTasks = ""; $bd_period = ''; $bd_do_period = ''; if(isset($_POST['period'])){ $period = $_POST['period']; } $onDate = null; $offDate = null; if(isset($_POST['onDate'])){ $onDate = $_POST['onDate']; } if(isset($_POST['offDate'])){ $offDate = $_POST['offDate']; } $dates = getPeriod($period, $onDate, $offDate); $date_between = $dates['between']; var_dump($dates);*/ if($table == 'requisitions'){ if (isset($_POST['charts_activities']) && !empty($_POST['charts_activities']) && $_POST['charts_activities'] != 'null') { $activitiesArr = json_decode(html_entity_decode($_POST['charts_activities']), ENT_QUOTES); $bd_usl .= " AND requisitions.id IN ( SELECT req_id FROM requisitions_activities WHERE activity_id IN (" . implode(", ", $activitiesArr) . ") )"; } } else { if (isset($_POST['charts_activities']) && !empty($_POST['charts_activities']) && $_POST['charts_activities'] != 'null') { $activitiesArr = json_decode(html_entity_decode($_POST['charts_activities']), ENT_QUOTES); $bd_usl .= " AND client.id IN ( SELECT client_id FROM clients_activities WHERE activity_id IN (" . implode(", ", $activitiesArr) . ") )"; } } if(isset($_POST['charts_type'])){ $typesArr = json_decode(html_entity_decode($_POST['charts_type']), ENT_QUOTES); if(!empty($typesArr)){ $typeArr = array(); foreach($typesArr as $typeCl){ $typeArr[] = "work_type like '%"{$typeCl}"%'"; } $bd_usl .= " AND (".implode(" OR ",$typeArr).")"; } $_SESSION['filter_client_type'] = $_POST['charts_type']; } else { unset($_SESSION['filter_client_type']); } if(isset($_POST['charts_rol'])){ $rolesArr = json_decode(html_entity_decode($_POST['charts_rol']), ENT_QUOTES); if(!empty($rolesArr)){ $sroleArr = array(); foreach($rolesArr as $roleCl){ $roleArr[] = "`role` like '%"{$roleCl}"%'"; } $bd_usl .= " AND (".implode(" OR ",$roleArr).")"; } $_SESSION['filter_client_rol'] = $_POST['charts_rol']; } else { unset($_SESSION['filter_client_rol']); } if(isset($_POST['source'])){ $sourcesArr = json_decode(html_entity_decode($_POST['source']), ENT_QUOTES); $sourceArr = array(); if(!empty($sourcesArr )){ foreach($sourcesArr as $sourceCl){ if($sourceCl == 0){ $sourceArr[] = "`source` is null"; $sourceArr[] = "`source` = ''"; $sourceArr[] = "`source` = 'null'"; } else { $sourceArr[] = "`source` = '{$sourceCl}'"; } } $bd_usl .= " AND (".implode(" OR ",$sourceArr).")"; } } if(isset($_POST['funnel'])){ $funnelArr = json_decode(html_entity_decode($_POST['funnel']), ENT_QUOTES); if(!empty($funnelArr)){ $bd_usl .= " AND funnel_id in (".implode(', ',$funnelArr).")"; } } $dates = getPeriod($period, $_POST['onDate'], $_POST['offDate']); $date_between = $dates['between']; //var_dump($dates); $whereTasks = '';//$dates['whereTasks']; $row = array(); $bd_usl_managers = " AND who_work in (".implode(", ",$arrIdUser).")"; $sql = "SELECT `who_work`, count(*) as total FROM $table WHERE 1 $bd_usl_managers $bd_usl and $date_add $date_between group by `who_work`"; // echo $sql; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $row[$r['who_work']] = $r['total']; } $sql = "SELECT `who_work`, step_id, count(*) as total FROM $table WHERE 1 $bd_usl_managers $bd_usl and $date_add $date_between and deleted=0 group by `who_work`, step_id"; // echo $sql; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $row_all[$r['who_work']][$r['step_id']] = $r['total']; } /*$sql = "SELECT `who_work`, `step_id`, count(*) as total FROM clients WHERE 1 $bd_usl_managers $bd_usl $bd_do_period group by `who_work`,`step_id`"; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $row_do[$r['who_work']][$r['step_id']] = $r['total']; }*/ $agencyId = User::getUserAgencyID(); $sql_denial = "SELECT * FROM denial_work WHERE (agency_id = 0 or agency_id={$agencyId})"; if($agencyId == 19895){ $sql_denial = "SELECT * FROM denial_work WHERE agency_id = {$agencyId} AND del = 0"; } $q_denial = mysql_query($sql_denial); $list_denial = array(); $list_denial[] = 0; while($r_denial = mysql_fetch_assoc($q_denial)){ $list_denial[] = $r_denial['id']; } //file_put_contents(__DIR__.'/log.txt', file_get_contents(__DIR__.'/log.txt').'\r\n'.date('H:i:s')); /* $dates = getPeriod($period, $_POST['onDate'], $_POST['offDate']); $date_between = $dates['between']; $whereTasks = $dates['whereTasks'];*/ $sql = "SELECT `who_work`, `step_id`, count(*) as total FROM $table WHERE 1 $bd_usl_managers $bd_usl and $date_add $date_between and deleted = 0 group by `who_work`,`step_id`"; //echo $sql; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $row_left[$r['who_work']][$r['step_id']] = $r['total']; } $bd_usl_agent = " AND $pole_agent in (".implode(", ",$arrIdAgent).")"; $sql = "SELECT `who_work`, count(*) as total FROM $table WHERE 1 $bd_usl_managers $bd_usl and $date_add $date_between group by `who_work`"; if($table == 'requisitions'){ $sql = "SELECT user_id, count(*) as total FROM $table WHERE 1 $bd_usl_agent $bd_usl and $date_add $date_between group by user_id"; } // echo $sql; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ if($table == 'requisitions'){ $row_add[$r['user_id']] = $r['total']; } else { $row_add[$r['who_work']] = $r['total']; } } /*$arr_add_clients = array(); $sql = "SELECT clients.who_work, events_clients.dop_text, count(*) as total FROM $table LEFT JOIN events_clients on clients.id = events_clients.client_id WHERE 1 $bd_usl_managers $bd_usl AND events_clients.event='stageedit' and $date_add $date_between group by clients.who_work, events_clients.dop_text"; //echo $sql."\n\n"; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $arr_add_clients[] = $r; }*/ $row_del = array(); $row_del_all = array(); $sql = "SELECT `who_work`, `denial`, `step_id`, count(*) as total FROM $table WHERE 1 $bd_usl_managers $bd_usl and $date_add $date_between and deleted <> 0 and confirm <> 10 group by `who_work`, `denial`, `step_id`"; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ if(!isset($row_del[$r['who_work']][$r['step_id']][$r['denial']])) $row_del[$r['who_work']][$r['step_id']][$r['denial']] = 0; $row_del[$r['who_work']][$r['step_id']][$r['denial']] += $r['total']; if(!isset($row_del_all[$r['who_work']])) $row_del_all[$r['who_work']] = 0; $row_del_all[$r['who_work']] += $r['total']; } $arr_do_clients = array(); $sql = "SELECT {$table}.who_work, events_clients.dop_text, {$table}.id FROM $table LEFT JOIN events_clients on {$table}.id = events_clients.{$pole_event} WHERE 1 $bd_usl_managers $bd_usl AND events_clients.event='stageedit' AND $date_add $date_between "; //echo $sql."\n\n"; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $arr_do_clients[] = $r; } //var_dump($arr_do_clients); //Сделки $sql = "SELECT `who_work`, sum(summa) as summa, count(*) as total FROM $table WHERE 1 $bd_usl_managers $bd_usl and deleted = 1 and confirm = 10 and " . "(SELECT `date_update` FROM `events_clients` WHERE {$pole_event} = {$table}.id AND `event` = 'delete' order by id desc limit 1) $date_between group by `who_work`" ; //echo $sql; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $row_summa[$r['who_work']] = $r['summa']; $row_sdelka[$r['who_work']] = $r['total']; } $steps = array(); $steps_row = array(); $prev_step = array(); $next_step = array(); $arrEventOld =array(); $arrEvent = array(); $funnelArr = json_decode(html_entity_decode($_POST['funnel']), ENT_QUOTES); if(!empty($funnelArr && count($funnelArr) == 1)){ $funnelId = $funnelArr[0]; $sqlst = "SELECT * FROM funnel_steps WHERE funnel_id=$funnelId AND deleted=0 ORDER by main DESC, order_number, branch" ; $qst = mysql_query($sqlst); while($st = mysql_fetch_assoc($qst)){ $steps[] = $st['id']; $steps_row[] = $st; } $sqlcl = "SELECT `id`, confirm, step_id FROM $table WHERE 1 $bd_usl_managers $bd_usl and $date_add $date_between and step_id in (".implode(',', $steps).")"; // echo $sqlcl; $qcl = mysql_query($sqlcl); $ro = mysql_num_rows($qcl); $whereEv = array(); $tempEv = array(); //$tempEv[] = 0; $whereTr = ''; $tempTr = array(); // $tempTr[] = 0; if($ro > 0){ while($rcl = mysql_fetch_assoc($qcl)){ // if($rcl['confirm'] == 1){ $tempEv[$rcl['step_id']][] = $rcl['id']; //} $tempTr[] = $rcl['id']; } } foreach($steps as $step){ if(isset($tempEv[$step])){ $whereEv[$step] = ' AND '.$pole_event.' in ('.implode(', ', $tempEv[$step]).') '; $whereEvPr[$step] = ' AND id_client in ('.implode(', ', $tempEv[$step]).') '; } } $whereTr = ' AND '.$pole_event.' in ('.implode(', ', $tempTr).') '; /* $sql_ac = "SELECT count(*), user_id, (select user_id from {$table} WHERE {$table}.id=events_clients.{$pole_event}) as parent_user_id FROM events_clients WHERE user_id in (". implode(', ', $usersId).") $whereTr AND event='accepted' and (SELECT id FROM events_clients as ec WHERE ec.{$pole_event} = events_clients.{$pole_event} AND event='transmitted' and ec.date_update = events_clients.date_update) is null and date $date_between group by user_id , {$pole_event}"; //echo $sql_ac."\n"; $q_ac = mysql_query($sql_ac); while($r_ac = mysql_fetch_assoc($q_ac)){ if(isset($row_add[$r_ac['parent_user_id']]) && $row_add[$r_ac['parent_user_id']] > 0){ $row_add[$r_ac['parent_user_id']]--; } if(!isset($row_add[$r_ac['user_id']])) $row_add[$r_ac['user_id']] = 0; $row_add[$r_ac['user_id']]++; } */ //Переданные клиенты /* $sql = "SELECT count(id) as total, user_id, {$pole_event} FROM events_clients WHERE user_id in (". implode(', ', $usersId).") and event='transmitted' $whereTr and date $date_between group by user_id,{$pole_event}" ; echo $sql."\n\n"; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ if(!isset($row_transmitted[$r['user_id']][$st['id']])) $row_transmitted[$r['user_id']][$st['id']] = 0; $row_transmitted[$r['user_id']][$st['id']]++; } //Принятые клиенты $sql = "SELECT count(id) as total, user_id,{$pole_event} FROM events_clients WHERE user_id in (". implode(', ', $usersId).") and event='accepted' $whereTr and date $date_between group by user_id, {$pole_event}" ; //echo $sql."\n\n"; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ if(!isset($row_accepted[$r['user_id']][$st['id']])) $row_accepted[$r['user_id']][$st['id']] = 0; $row_accepted[$r['user_id']][$st['id']]++; }*/ // считаем события клиентов /* $sql = "SELECT count(id) as total, user_id, type FROM user_client_events WHERE user_id in (". implode(', ', $usersId).") and calendar_view = 0 AND cancel=0 and schedule_date is not null $whereTasks $whereEv and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') < '".date("Y-m-d H:i:s")."' group by user_id, type"; // echo $sql; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ $arrEventOld[] = $r; } // считаем события клиентов $sql = "SELECT count(id) as total, user_id, type FROM user_client_events WHERE user_id in (". implode(', ', $usersId).") and calendar_view = 0 AND cancel=0 and schedule_date is not null $whereTasks $whereEv and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') > '".date("Y-m-d H:i:s")."' group by user_id,type"; //echo $sql; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ $arrEvent[] = $r; } // считаем события клиентов $sql = "SELECT count(id) as total, user_id,type FROM user_client_events WHERE user_id in (". implode(', ', $usersId).") and calendar_view = 1 AND cancel=0 and schedule_date is not null $whereTasks $whereEv group by user_id,type"; //echo $sql; //$work_sql = $sql; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ if(!isset($row_task_slung[$r['user_id']][$r['type']][$st['id']])) $row_task_slung[$r['user_id']][$r['type']][$st['id']] = 0; $row_task_slung[$r['user_id']][$r['type']][$st['id']] = $r['total']; } // считаем события клиентов $sql = "SELECT count(id) as total, user_id,type FROM user_client_events WHERE user_id in (". implode(', ', $usersId).") AND cancel=1 and schedule_date is not null $whereTasks $whereEv group by user_id,type"; //echo $sql; //$work_sql = $sql; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ if(!isset($row_task_cancel[$r['user_id']][$r['type']][$st['id']])) $row_task_cancel[$r['user_id']][$r['type']][$st['id']] = 0; $row_task_cancel[$r['user_id']][$r['type']][$st['id']] = $r['total']; }*/ // var_dump($arrEvent); foreach($steps_row as $st){ //С предыдущего этапа // и на этап //var_dump($arr_do_clients); foreach ($arr_do_clients as $row_step) { if(!isset($prev_step[$row_step['who_work']][$st['id']])) $prev_step[$row_step['who_work']][$st['id']] = 0; if(!isset($next_step[$row_step['who_work']][$st['id']])) $next_step[$row_step['who_work']][$st['id']] = 0; /*echo $st['id'].'-'; echo $st['name'].'-'; echo $row_step['dop_text']."\n\n";*/ if(strpos($row_step['dop_text'], "на «".$st['name']."»") !== false && strpos($row_step['dop_text'],"(Этап открыт повторно)") === false){ //echo $row_step['dop_text']."\n\n"; $prev_step[$row_step['who_work']][$st['id']]++; } if(strpos($row_step['dop_text'], "c «".$st['name']."»") !== false && strpos($row_step['dop_text'],"(Этап открыт повторно)") === false){ //echo $row_step['dop_text']."\n\n"; $next_step[$row_step['who_work']][$st['id']]++; } if(strpos($row_step['dop_text'],"(Этап открыт повторно)") !== false && strpos($row_step['dop_text'], "c «".$st['name']."»") !== false){ $prev_step[$row_step['who_work']][$st['id']]--; } if(strpos($row_step['dop_text'],"(Этап открыт повторно)") !== false && strpos($row_step['dop_text'], "на «".$st['name']."»") !== false){ $next_step[$row_step['who_work']][$st['id']]--; } } // считаем события клиентов if(isset($whereEv[$st['id']])){ $sql = "SELECT user_id, type, step_id FROM user_client_events WHERE user_id in (". implode(', ', $usersId).") and calendar_view = 0 AND cancel=0 and schedule_date is not null $whereTasks {$whereEv[$st['id']]} and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') < '".date("Y-m-d H:i:s")."'"; // echo $sql; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ if($r['step_id'] > 0){ if(!isset($row_task_old[$r['user_id']][$r['type']][$r['step_id']])) $row_task_old[$r['user_id']][$r['type']][$r['step_id']] = 0; $row_task_old[$r['user_id']][$r['type']][$r['step_id']]++; } else { if(!isset($row_task_old[$r['user_id']][$r['type']][$st['id']])) $row_task_old[$r['user_id']][$r['type']][$st['id']] = 0; $row_task_old[$r['user_id']][$r['type']][$st['id']]++; } } $sql = "SELECT user_id, type, step_id FROM user_client_events WHERE user_id in (". implode(', ', $usersId).") and calendar_view = 0 AND cancel=0 and schedule_date is not null $whereTasks {$whereEv[$st['id']]} and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') > '".date("Y-m-d H:i:s")."'"; //echo $sql; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ if($r['step_id'] > 0){ if(!isset($row_task[$r['user_id']][$r['type']][$r['step_id']])) $row_task[$r['user_id']][$r['type']][$r['step_id']] = 0; $row_task[$r['user_id']][$r['type']][$r['step_id']]++; } else { if(!isset($row_task[$r['user_id']][$r['type']][$st['id']])) $row_task[$r['user_id']][$r['type']][$st['id']] = 0; $row_task[$r['user_id']][$r['type']][$st['id']]++; } } // считаем события клиентов $sql = "SELECT user_id,type, step_id FROM user_client_events WHERE user_id in (". implode(', ', $usersId).") and calendar_view = 1 AND cancel=0 and schedule_date is not null $whereTasks {$whereEv[$st['id']]}"; /* if($st['id'] == 626) echo $sql;*/ //$work_sql = $sql; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ if($r['step_id'] > 0){ if(!isset($row_task_slung[$r['user_id']][$r['type']][$r['step_id']])) $row_task_slung[$r['user_id']][$r['type']][$r['step_id']] = 0; $row_task_slung[$r['user_id']][$r['type']][$r['step_id']]++; } else { if(!isset($row_task_slung[$r['user_id']][$r['type']][$st['id']])) $row_task_slung[$r['user_id']][$r['type']][$st['id']] = 0; $row_task_slung[$r['user_id']][$r['type']][$st['id']]++; } } // считаем события клиентов $sql = "SELECT user_id,type, step_id FROM user_client_events WHERE user_id in (". implode(', ', $usersId).") AND cancel=1 and schedule_date is not null $whereTasks {$whereEv[$st['id']]}"; //echo $sql; //$work_sql = $sql; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ if($r['step_id'] > 0){ if(!isset($row_task_cancel[$r['user_id']][$r['type']][$r['step_id']])) $row_task_cancel[$r['user_id']][$r['type']][$r['step_id']] = 0; $row_task_cancel[$r['user_id']][$r['type']][$r['step_id']]++; } else { if(!isset($row_task_cancel[$r['user_id']][$r['type']][$st['id']])) $row_task_cancel[$r['user_id']][$r['type']][$st['id']] = 0; $row_task_cancel[$r['user_id']][$r['type']][$st['id']]++; } } //Переданные клиенты $sql = "SELECT count(id) as total, user_id, {$pole_event} FROM events_clients WHERE user_id in (". implode(', ', $usersId).") and event='transmitted' {$whereEv[$st['id']]} and date $date_between group by user_id ,{$pole_event}" ; // echo $sql."\n\n"; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ if(!isset($row_transmitted[$r['user_id']][$st['id']])) $row_transmitted[$r['user_id']][$st['id']] = 0; $row_transmitted[$r['user_id']][$st['id']]++; } //Принятые клиенты $sql = "SELECT count(id) as total, user_id,{$pole_event} FROM events_clients WHERE user_id in (". implode(', ', $usersId).") and event='accepted' {$whereEv[$st['id']]} and date $date_between group by user_id, {$pole_event}" ; //echo $sql."\n\n"; $rez = mysql_query($sql); while($r = mysql_fetch_assoc($rez)){ if(!isset($row_accepted[$r['user_id']][$st['id']])) $row_accepted[$r['user_id']][$st['id']] = 0; $row_accepted[$r['user_id']][$st['id']]++; } } } } /*if($_SESSION['id'] == 5238){ var_dump($row_task_old); }*/ // var_dump($next_step); $typesArr = ['call', 'deal', 'even', 'meet', 'show']; $array_menedgers = array(); $departmentClass = new Department; $departments = $departmentClass->getDepartments(); //var_dump($departments); $users = array(); $sql_users = "SELECT id, agency, manager, agency_name, first_name, last_name, middle_name, id_manager, role_id FROM users WHERE id in (". implode(', ', $usersId).")"; $q_users = mysql_query($sql_users); while($r_users = mysql_fetch_assoc($q_users)){ $users[$r_users['id']] = $r_users; } foreach($usersId as $key => $id){ $arrTemp = array(); $mstr = $users[$id];//mysql_fetch_assoc(mysql_query("SELECT agency, manager, agency_name, first_name, last_name, middle_name, id_manager FROM users WHERE id=".$id)); if($mstr['agency']){ $master = "Агентство ". trim($mstr['agency_name']) ." (". trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']).")"; $arrTemp['post'] = 'agency'; $arrTemp['agency_name'] = $mstr['agency_name']; } else if($mstr['role_id'] > 0 && isset($departments[$mstr['role_id']])){ $master = trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']).' ('.$departments[$mstr['role_id']]['role_name'].' '.$departments[$mstr['role_id']]['dep_name'].')'; if($mstr['manager']){ $arrTemp['post'] = 'manager'; } else { $arrTemp['post'] = 'agent'; } } else if($mstr['manager']){ $master = "Менеджер " . trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']); $arrTemp['post'] = 'manager'; } else { $master = "Агент " . trim($mstr['last_name'] . ' ' . $mstr['first_name'] . ' ' . $mstr['middle_name']); $arrTemp['post'] = 'agent'; } $arrTemp['id_manager'] = $mstr['id_manager']; $arrTemp['id'] = $id; $arrTemp['fio'] = $master; $arrTemp['work'] = 0; $arrTemp['work_do'] = 0; if(isset($row[$id])) { $arrTemp['work'] = $row[$id]; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id]['work'] = $row[$id]; } } $arrTemp['work_add'] = 0; if(isset($row_add[$id])) { $arrTemp['work_add'] = $row_add[$id]; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id]['work_add'] = $row_add[$id]; } } $arrTemp['work_del_all'] = 0; if(isset($row_del_all[$id])) { $arrTemp['work_del_all'] = $row_del_all[$id]; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id]['work_del_all'] = $row_del_all[$id]; } } $arrTemp['summa'] = 0; if(isset($row_summa[$id])) { $arrTemp['summa'] = $row_summa[$id]; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id]['summa'] = $row_summa[$id]; } } $arrTemp['sdelka'] = 0; if(isset($row_sdelka[$id])) { $arrTemp['sdelka'] = $row_sdelka[$id]; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id]['sdelka'] = $row_sdelka[$id]; } } /*if(isset($row_do[$id])) { foreach($row_do[$id] as $step=>$total){ $arrTemp['work_do_'.$step] = array('total'=>$total, 'step'=>$step); if($arrTemp['post'] == 'manager'){ $array_menedgers[$id]['work_do_'.$step] = $total; } } }*/ if(isset($row_left[$id])) { foreach($row_left[$id] as $step=>$total){ $arrTemp['work_left_'.$step] = $total; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id]['work_left_'.$step] = $total; } } } //var_dump($step_not); if(isset($row_transmitted[$id])){ foreach($row_transmitted[$id] as $step=>$total){ $arrTemp['transmitted_'.$step] = $total; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id]['transmitted_'.$step] = $total; } } } if(isset($row_accepted[$id])){ foreach($row_accepted[$id] as $step=>$total){ $arrTemp['accepted_'.$step] = $total; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id]['accepted_'.$step] = $total; } } } //var_dump($prev_step); $step_not = array(); if(!empty($steps)){ foreach($steps as $step){ $arrTemp['work_prev_step_'.$step] = 0; $arrTemp['work_next_step_'.$step] = 0; $arrTemp['work_all_'.$step] = 0; //var_dump($row_all[$id]); $step_not[] = $step; if(isset($row_all[$id])) { $arrTemp['work_all_'.$step] += $row_all[$id][$step]; if($arrTemp['post'] == 'manager'){ if(!isset($array_menedgers[$id]['work_all_'.$step])) $array_menedgers[$id]['work_all_'.$step] = 0; $array_menedgers[$id]['work_all_'.$step] += $row_all[$id][$step]; } } if(isset($prev_step[$id][$step])){ $arrTemp['work_prev_step_'.$step] += $prev_step[$id][$step]; if($arrTemp['post'] == 'manager'){ if(!isset($array_menedgers[$id]['work_prev_step_'.$step])) $array_menedgers[$id]['work_prev_step_'.$step] = 0; $array_menedgers[$id]['work_prev_step_'.$step] += $prev_step[$id][$step]; } // var_dump($prev_step[$id]); } if(isset($next_step[$id][$step])){ $arrTemp['work_next_step_'.$step] += $next_step[$id][$step]; /*if($arrTemp['post'] == 'manager'){ if(!isset($array_menedgers[$id]['work_next_step_'.$step])) $array_menedgers[$id]['work_next_step_'.$step] = 0; $array_menedgers[$id]['work_next_step_'.$step] += $next_step[$id][$step]; }*/ // var_dump($prev_step[$id]); } //echo $arrTemp['work_next_step_'.$step]."\n"; //var_dump($arrTemp['work_all_'.$step]); if(isset($row_task_old[$id])) { foreach($typesArr as $type){ if(!isset($arrTemp[$type][$step]['task_old'])) $arrTemp[$type][$step]['task_old'] = 0; if(isset($row_task_old[$id][$type][$step])){ $arrTemp[$type][$step]['task_old'] += $row_task_old[$id][$type][$step]; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id][$type][$step]['task_old'] = $row_task_old[$id][$type][$step]; } } } } if(isset($row_task[$id])) { foreach($typesArr as $type){ if(!isset($arrTemp[$type][$step]['task_new'])) $arrTemp[$type][$step]['task_new'] = 0; if(isset($row_task[$id][$type][$step])){ $arrTemp[$type][$step]['task_new'] += $row_task[$id][$type][$step]; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id][$type][$step]['task_new'] = $row_task[$id][$type][$step]; } } } } if(isset($row_task_slung[$id])) { foreach($typesArr as $type){ if(!isset($arrTemp[$type][$step]['task_slung'])) $arrTemp[$type][$step]['task_slung'] = 0; if(isset($row_task_slung[$id][$type][$step])){ $arrTemp[$type][$step]['task_slung'] += $row_task_slung[$id][$type][$step]; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id][$type][$step]['task_slung'] = $row_task_slung[$id][$type][$step]; } } } } if(isset($row_task_cancel[$id])) { foreach($typesArr as $type){ if(!isset($arrTemp[$type][$step]['task_cancel'])) $arrTemp[$type][$step]['task_cancel'] = 0; if(isset($row_task_cancel[$id][$type][$step])){ $arrTemp[$type][$step]['task_cancel'] += $row_task_cancel[$id][$type][$step]; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id][$type][$step]['task_cancel'] = $row_task_cancel[$id][$type][$step]; } } } } foreach($list_denial as $denial){ $arrTemp[$step]['denial_'.$denial] = 0; if(isset($row_del[$id][$step][$denial])){ $arrTemp[$step]['denial_'.$denial] = $row_del[$id][$step][$denial]; if($arrTemp['post'] == 'manager'){ $array_menedgers[$id][$step]['denial_'.$denial] = $row_del[$id][$step][$denial]; } } } } } if(isset($rows[$mstr['id_manager']])){ foreach($steps as $step){ /*if(isset($arrTemp['work_do_'.$step]['total'])) { if(!isset($rows[$mstr['id_manager']]['work_do_'.$step]['total'])) $rows[$mstr['id_manager']]['work_do_'.$step] = array('total'=>0, 'step'=>$step); $rows[$mstr['id_manager']]['work_do_'.$step] = array('total'=>(int)$rows[$mstr['id_manager']]['work_do_'.$step]['total'] + (int)$arrTemp['work_do_'.$step]['total'], 'step'=>$step); }*/ // if(isset($row_left[$id][$step])) { // if(!isset($rows[$mstr['id_manager']]['work_left_'.$step])) $rows[$mstr['id_manager']]['work_left_'.$step] = 0; // $rows[$mstr['id_manager']]['work_left_'.$step] = (int)$rows[$mstr['id_manager']]['work_left_'.$step] + (int)$row_left[$id][$step]; // } // if(isset($arrTemp['work_all_'.$step])) { // if(!isset($rows[$mstr['id_manager']]['work_all_'.$step])) $rows[$mstr['id_manager']]['work_all_'.$step] = 0; // $rows[$mstr['id_manager']]['work_all_'.$step] = (int)$rows[$mstr['id_manager']]['work_all_'.$step] + (int)$arrTemp['work_all_'.$step]; // } // if(isset($arrTemp['work_prev_step_'.$step])) { // if(!isset($rows[$mstr['id_manager']]['work_prev_step_'.$step])) $rows[$mstr['id_manager']]['work_prev_step_'.$step] = 0; // $rows[$mstr['id_manager']]['work_prev_step_'.$step] = (int)$rows[$mstr['id_manager']]['work_prev_step_'.$step] + (int)$arrTemp['work_prev_step_'.$step]; // } /* if(isset($arrTemp['work_next_step_'.$step])) { if(!isset($rows[$mstr['id_manager']]['work_next_step_'.$step])) $rows[$mstr['id_manager']]['work_next_step_'.$step] = 0; $rows[$mstr['id_manager']]['work_next_step_'.$step] = (int)$rows[$mstr['id_manager']]['work_next_step_'.$step] + (int)$arrTemp['work_next_step_'.$step]; }*/ //echo $rows[$mstr['id_manager']]['work_next_step_'.$step]."\n\n"; /*if(isset($row_transmitted[$id][$step])) { if(!isset($rows[$mstr['id_manager']]['transmitted_'.$step]['total'])) $rows[$mstr['id_manager']]['transmitted_'.$step] = array('total'=>0, 'step'=>$step); $rows[$mstr['id_manager']]['transmitted_'.$step] = array('total'=>(int)$rows[$mstr['id_manager']]['transmitted_'.$step]['total'] + (int)$row_transmitted[$id][$step], 'step'=>$step); } if(isset($row_accepted[$id][$step])) { if(!isset($rows[$mstr['id_manager']]['accepted_'.$step]['total'])) $rows[$mstr['id_manager']]['accepted_'.$step] = array('total'=>0, 'step'=>$step); $rows[$mstr['id_manager']]['accepted_'.$step] = array('total'=>(int)$rows[$mstr['id_manager']]['accepted_'.$step]['total'] + (int)$row_accepted[$id][$step], 'step'=>$step); }*/ // foreach($typesArr as $type){ // if(isset($row_task_old[$id])) { // if(!isset($rows[$mstr['id_manager']][$type][$step]['task_old'])) $rows[$mstr['id_manager']][$type][$step]['task_old'] = 0; // if(!isset($arrTemp[$type][$step]['task_old'])) $arrTemp[$type][$step]['task_old'] = 0; // $rows[$mstr['id_manager']][$type][$step]['task_old'] = (int)$rows[$mstr['id_manager']][$type][$step]['task_old'] + (int)$arrTemp[$type][$step]['task_old']; // } // if(isset($row_task[$id])) { // if(!isset($rows[$mstr['id_manager']][$type][$step]['task_new'])) $rows[$mstr['id_manager']][$type][$step]['task_new'] = 0; // if(!isset($arrTemp[$type][$step]['task_new'])) $arrTemp[$type][$step]['task_new'] = 0; // $rows[$mstr['id_manager']][$type][$step]['task_new'] = (int)$rows[$mstr['id_manager']][$type][$step]['task_new'] + (int)$arrTemp[$type][$step]['task_new']; // } // if(isset($row_task_slung[$id])) { // if(!isset($rows[$mstr['id_manager']][$type][$step]['task_slung'])) $rows[$mstr['id_manager']][$type][$step]['task_slung'] = 0; // if(!isset($arrTemp[$type][$step]['task_slung'])) $arrTemp[$type][$step]['task_slung'] = 0; // $rows[$mstr['id_manager']][$type][$step]['task_slung'] = (int)$rows[$mstr['id_manager']][$type][$step]['task_slung'] + (int)$arrTemp[$type][$step]['task_slung']; // } // if(isset($row_task_cancel[$id])) { // if(!isset($rows[$mstr['id_manager']][$type][$step]['task_cancel'])) $rows[$mstr['id_manager']][$type][$step]['task_cancel'] = 0; // if(!isset($arrTemp[$type][$step]['task_cancel'])) $arrTemp[$type][$step]['task_cancel'] = 0; // $rows[$mstr['id_manager']][$type][$step]['task_cancel'] = (int)$rows[$mstr['id_manager']][$type][$step]['task_cancel'] + (int)$arrTemp[$type][$step]['task_cancel']; // } // } // foreach($list_denial as $denial){ // if(isset($row_del[$id][$step][$denial])){ // $rows[$mstr['id_manager']][$step]['denial_'.$denial] = (int)$rows[$mstr['id_manager']][$step]['denial_'.$denial] + $row_del[$id][$step][$denial]; // } // } } // $rows[$mstr['id_manager']]['work'] = (int)$rows[$mstr['id_manager']]['work'] + (int)$row[$id]; // $rows[$mstr['id_manager']]['work_add'] = (int)$rows[$mstr['id_manager']]['work_add'] + (int)$row_add[$id]; // $rows[$mstr['id_manager']]['summa'] = (int)$rows[$mstr['id_manager']]['summa'] + (int)$row_summa[$id]; // $rows[$mstr['id_manager']]['sdelka'] = (int)$rows[$mstr['id_manager']]['sdelka'] + (int)$row_sdelka[$id]; // $rows[$mstr['id_manager']]['work_del_all'] = (int)$rows[$mstr['id_manager']]['work_del_all'] + $row_del_all[$id]; } $rows[$id] = $arrTemp; } //file_put_contents(__DIR__.'/log.txt', file_get_contents(__DIR__.'/log.txt').'\r\n'.date('H:i:s')); //var_dump($rows); $res = array(); //print_r($rows); foreach ($rows as $key => $row ){ if(isset($rows[$row['id_manager']]) && $row['post'] == 'manager'){ $i=0; foreach($steps as $step){ // $rows[$row['id_manager']]['work_do_'.$step] = array('total' => (int)$rows[$row['id_manager']]['work_do_'.$step]['total'] + (int)$row['work_do_'.$step]['total'] - (int)$array_menedgers[$row['id']]['work_do_'.$step], 'step'=> $step) ; //$rows[$row['id_manager']]['work_left_'.$step] = (int)$rows[$row['id_manager']]['work_left_'.$step] + (int)$row['work_left_'.$step] - (int)$array_menedgers[$row['id']]['work_left_'.$step]; //$rows[$row['id_manager']]['work_all_'.$step] = (int)$rows[$row['id_manager']]['work_all_'.$step] + (int)$row['work_all_'.$step] - (int)$array_menedgers[$row['id']]['work_all_'.$step]; //$rows[$row['id_manager']]['work_prev_step_'.$step] = (int)$rows[$row['id_manager']]['work_prev_step_'.$step] + (int)$row['work_prev_step_'.$step]-(int)$array_menedgers[$row['id']]['work_prev_step_'.$step] ; //$rows[$row['id_manager']]['work_next_step_'.$step] = (int)$rows[$row['id_manager']]['work_next_step_'.$step] + (int)$row['work_next_step_'.$step]-(int)$array_menedgers[$row['id']]['work_next_step_'.$step] ; /*$rows[$row['id_manager']]['transmitted_'.$step] = array('total' => (int)$rows[$row['id_manager']]['transmitted_'.$step]['total'] + (int)$row['transmitted_'.$step]['total']-(int)$array_menedgers[$row['id']]['transmitted_'.$step], 'step'=> $step) ; $rows[$row['id_manager']]['accepted_'.$step] = array('total' => (int)$rows[$row['id_manager']]['accepted_'.$step]['total'] + (int)$row['accepted_'.$step]['total']-(int)$array_menedgers[$row['id']]['accepted_'.$step], 'step'=> $step) ; */ $i++; } if(!empty($steps)){ foreach($steps as $step){ foreach($typesArr as $type){ if(!isset($rows[$row['id_manager']][$type][$step]['task_old'])) $rows[$row['id_manager']][$type][$step]['task_old'] = 0; $rows[$row['id_manager']][$type][$step]['task_old'] = (int)$rows[$row['id_manager']][$type][$step]['task_old'] + (int)$row[$type][$step]['task_old']-(int)$array_menedgers[$row['id']][$type][$step]['task_old']; } foreach($typesArr as $type){ if(!isset($rows[$row['id_manager']][$type][$step]['task_new'])) $rows[$row['id_manager']][$type][$step]['task_new'] = 0; $rows[$row['id_manager']][$type][$step]['task_new'] = (int)$rows[$row['id_manager']][$type][$step]['task_new'] + (int)$row[$type][$step]['task_new']-(int)$array_menedgers[$row['id']][$type][$step]['task_new']; } foreach($typesArr as $type){ if(!isset($rows[$row['id_manager']][$type][$step]['task_slung'])) $rows[$row['id_manager']][$type][$step]['task_slung'] = 0; $rows[$row['id_manager']][$type][$step]['task_slung'] = (int)$rows[$row['id_manager']][$type][$step]['task_slung'] + (int)$row[$type][$step]['task_slung']-(int)$array_menedgers[$row['id']][$type][$step]['task_slung']; } foreach($typesArr as $type){ if(!isset($rows[$row['id_manager']][$type][$step]['task_cancel'])) $rows[$row['id_manager']][$type][$step]['task_cancel'] = 0; $rows[$row['id_manager']][$type][$step]['task_cancel'] = (int)$rows[$row['id_manager']][$type][$step]['task_cancel'] + (int)$row[$type][$step]['task_cancel']-(int)$array_menedgers[$row['id']][$type][$step]['task_cancel']; } foreach($list_denial as $denial){ $rows[$row['id_manager']][$step]['denial_'.$denial] = (int)$rows[$row['id_manager']][$step]['denial_'.$denial] + (int)$row[$step]['denial_'.$denial] - (int)$array_menedgers[$row['id']][$step]['denial_'.$denial]; } } } $rows[$row['id_manager']]['work'] = (int)$rows[$row['id_manager']]['work'] + (int)$row['work']-(int)$array_menedgers[$row['id']]['work']; $rows[$row['id_manager']]['work_add'] = (int)$rows[$row['id_manager']]['work_add'] + (int)$row['work_add']-(int)$array_menedgers[$row['id']]['work_add']; $rows[$row['id_manager']]['summa'] = (int)$rows[$row['id_manager']]['summa'] + (int)$row['summa']-(int)$array_menedgers[$row['id']]['summa']; $rows[$row['id_manager']]['sdelka'] = (int)$rows[$row['id_manager']]['sdelka'] + (int)$row['sdelka']-(int)$array_menedgers[$row['id']]['sdelka']; $rows[$row['id_manager']]['work_del_all'] = (int)$rows[$row['id_manager']]['work_del_all'] + (int)$row['work_del_all']-(int)$array_menedgers[$row['id']]['work_del_all']; } //$res[] = $row; } $part_href = ''; if(isset($activitiesArr) && !empty($activitiesArr)){ $part_href .= '&activities='.implode(", ", $activitiesArr); } if(isset($sourcesArr) && !empty($sourcesArr)){ $part_href .= '&source='.implode(", ", $sourcesArr); } if(isset($period) && $period == 'dates'){ if(isset($dates['dateStart'])){ $part_href .= '&date_start='.strtotime($dates['dateStart']); } if(isset($dates['dateEnd'])){ $part_href .= '&date_end='.strtotime($dates['dateEnd']); } } foreach ($rows as $user_id => $row ){ $id = $row['id']; $row['conversion'] = round($row['sdelka']/$row['work']*100, 2).'%'; $row['conversion_del'] = round($row['work_del_all']/$row['work']*100, 2).'%'; $row['sdelka_summa'] = $row['sdelka'].'/'.number_format($row['summa'],0 , '.', ' '); $i = 0; foreach($steps as $step){ $row['work_all_'.$step] = ''.$row['work_all_'.$step].''; $row['conversion_'.$step] = round (($row['work_next_step_'.$step]/$row['work_prev_step_'.$step])*100,2) ."%"; if($i == 0){ $row['conversion_'.$step] = round (($row['work_next_step_'.$step]/$row['work'])*100,2) ."%"; } if(!isset($row['work_left_'.$step])) $row['work_left_'.$step] = 0; $row['work_left_'.$step] = ''.$row['work_left_'.$step].''; if(!isset($row['accepted_'.$step])) $row['accepted_'.$step] = 0; $row['accepted_'.$step] = ''.$row['accepted_'.$step].''; if(!isset($row['transmitted_'.$step])) $row['transmitted_'.$step] = 0; $row['transmitted_'.$step] = ''.$row['transmitted_'.$step].''; $row['closest_'.$step.'_all'] = 0; foreach($list_denial as $denial){ $row['closest_'.$step.'_'.$denial] = 0; if(isset($row[$step]['denial_'.$denial])){ $row['closest_'.$step.'_'.$denial] = $row[$step]['denial_'.$denial]; } $row['closest_'.$step.'_all'] += $row['closest_'.$step.'_'.$denial]; $row['closest_'.$step.'_'.$denial] = ''.$row['closest_'.$step.'_'.$denial].''; } $row['conversionclosest_'.$step] = round (($row['closest_'.$step.'_all']/$row['work_prev_step_'.$step])*100,2).'%'; if($i == 0){ $row['conversionclosest_'.$step] = round (($row['closest_'.$step.'_all']/$row['work'])*100,2).'%'; $row['work'] = ''.$row['work'].''; } $row['closest_'.$step.'_all'] = ''.$row['closest_'.$step.'_all'].''; $row['work_next_step_'.$step] = $row['work_next_step_'.$step]; $row['work_prev_step_'.$step] = $row['work_prev_step_'.$step]; //$row[] $i++; } $row['work_add'] = ''.$row['work_add'].''; $res[] = $row; //$res[] } $result = array( 'rows' => $res, 'total' => count($usersId), 'totalNotFiltered'=>count($usersId), ); /*$time = microtime(true) - $start; file_put_contents(__DIR__.'/log.txt', 'Время выполнения скрипта: '.round($time, 4).' сек.');*/ echo json_encode($result); /*{ "current": 1, "rowCount": 10, "rows": [ { "id": 19, "sender": "123@test.de", "": "2014-05-30T22:15:00" }, { "id": 14, "sender": "123@test.de", "received": "2014-05-30T20:15:00" }, ... ], "total": 1123 }*/