checkPermissions(); //Закрытие $denial_work = array(); $sql_d = "SELECT * FROM denial_work WHERE (agency_id = 0 or agency_id={$user->agencyId})"; if($user->agencyId == 19895){ $sql_d = "SELECT * FROM denial_work WHERE agency_id = {$user->agencyId} AND del = 0"; } $q_d = mysql_query($sql_d); while($r_d = mysql_fetch_assoc($q_d)){ $denial_work[] = $r_d['id']; } $denial_work[] = 0; $sql_advg = "SELECT * FROM `advertising_sources_groups` WHERE `user_id` = '".$user->id."' or `manager_id` = '".$user->id."'"; if($user->id_manager){ $sql_advg .= " or `manager_id` = '".$user->id_manager."' or `user_id` = '".$user->id_manager."'"; } if($user -> agencyId || $_SESSION['users_admin']){ $sql_advg .= " or `user_id` in (select id from users where id={$user->agencyId} or id_manager={$user->agencyId} or id_manager in (select id from users where id_manager={$user->agencyId} or id_manager in (select id from users where id_manager={$user->agencyId})))"; } $sql_advg .= " order by id"; $q_advg = mysql_query($sql_advg); while($r_advg = mysql_fetch_assoc($q_advg)){ $arrGroups[(int)$r_advg['id']] = $r_advg; $groupId = (int)$r_advg['id']; } $groupId++; $arrGroups[$groupId] = array('id'=>$groupId, 'name'=>'Без группы'); foreach($arrGroups as $idGroup => $group){ $res[$idGroup]['id'] = $idGroup; $res[$idGroup]['source'] = $group['name']; $res[$idGroup]['pid'] = 0; $res[$idGroup]['calls_all'] = 0; $res[$idGroup]['work'] = 0; foreach($denial_work as $denial){ $res[$idGroup]['closest_'.$denial] = 0; } $res[$idGroup]['closest_all'] = 0; $res[$idGroup]['expenditure'] = 0; $res[$idGroup]['sdelka'] = 0; $res[$idGroup]['summa'] = 0; $res[$idGroup]['cost'] = 0; $res[$idGroup]['cost_transaction'] = 0; $res[$idGroup]['sources'] = 0; } //Список источников $sourceId = 10001; $arrSource = array(); $sql_adv = "SELECT * FROM `advertising_sources` WHERE (`user_id` = '".$user->id."' or `manager_id` = '".$user->id."'"; if($user->id_manager){ $sql_adv .= " or `manager_id` = '".$user->id_manager."' or `user_id` = '".$user->id_manager."'"; } if($user -> agencyId || $_SESSION['users_admin']){ $sql_adv .= " or `manager_id` = '".$user -> agencyId."' or `user_id` = '".$user -> agencyId."'"; } $sql_adv .= ")"; $sql_adv .= ' order by id'; $q_adv = mysql_query($sql_adv); while($r_adv = mysql_fetch_assoc($q_adv)){ if((int)$r_adv['group_id'] == 0){ $r_adv['group_id'] = $groupId; } $arrSource[(int)$r_adv['id']] = $r_adv; $sourceId = (int)$r_adv['id']; } $sourceId++; $arrSource[10000] = array('id'=>10000, 'source'=>'Объекты нашей компании', 'group_id'=>$groupId); $arrSource[$sourceId] = array('id'=>$sourceId, 'source'=>'Источник не выбран', 'group_id'=>$groupId); //var_dump($arrSource); foreach($arrSource as $idSource => $source){ $res[$idSource]['id'] = $idSource; $res[$idSource]['source'] = $source['source']; $res[$idSource]['pid'] = (int)$source['group_id']; $res[$idSource]['calls_all'] = 0; $res[$idSource]['work'] = 0; foreach($denial_work as $denial){ $res[$idSource]['closest_'.$denial] = 0; } $res[$idSource]['closest_all'] = 0; $res[$idSource]['expenditure'] = 0; $res[$idSource]['sdelka'] = 0; $res[$idSource]['summa'] = 0; $res[$idSource]['cost'] = 0; $res[$idSource]['cost_transaction'] = 0; $res[$idSource]['sources'] = -1; } $cl = new Clients(); $usersArr = json_decode($_POST['responsible'], true); //file_put_contents(__DIR__.'/log.txt', date('H:i:s')); $usersId = $cl -> getUsersFilter($usersArr, $_POST['user_id'], $_POST['users_admin']); $bd_usl_managers = ''; $bd_usl = ' AND cancel=0'; $arrIdUser = array(); $arrIdAgent = array(); foreach($usersId as $userId){ $arrIdUser[] = "who_work = $userId"; $arrIdAgent[] = "id_agent = $userId"; } $period = 'all'; $whereTasks = ""; $bd_period = ''; $bd_do_period = ''; 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']; if($_POST['period'] != 'all'){ $days = date('Y-m-d', strtotime($arrPeriod[$_POST['period']])); $bd_period .= " AND `date_add` > '{$days}'"; $bd_do_period .= " AND `date_add` < '{$days}'"; } //$whereTasks = " and DATE(create_date) > '{$days}'"; //$_SESSION['client_period'] = $_POST['period']; } } 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).")"; } } if($_POST['charts_activities'] && $_POST['charts_activities'] != "null"){ $activitiesArr = json_decode(html_entity_decode($_POST['charts_activities']), ENT_QUOTES); //var_dump($activitiesArr); $activitieArr = array(); foreach($activitiesArr as $activitieCl){ $activitieArr[] = "`activities` like '%"{$activitieCl}"%'"; } if(!empty($activitieArr)){ $bd_usl .= " AND (".implode(" OR ",$activitieArr).")"; } } 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).")"; } } 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).")"; $funnelId = implode(', ',$funnelArr); } } $bd_usl_managers = " AND (".implode(" OR ",$arrIdUser).")"; $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']; //$whereTasks = $dates['whereTasks']; $table = 'clients'; $date_add = 'date_add'; $script = 'clients.php'; if(isset($_POST['client_req']) && $_POST['client_req'] == 1){ $table = 'requisitions'; $date_add = 'created_at'; $script = 'requisitions.php'; } $sql = "SELECT `source`, count(*) as total FROM $table WHERE 1 $bd_usl_managers $bd_usl and $date_add $date_between group by `source`"; //echo $sql; /* $sql = "SELECT c.id, c.id_agent, c.stage, c.summa, c.work_type, c.role, c.step_id, c.deleted, c.confirm, c.employee_id, c.date_add, a.source, p.name as p_name, e.name as e_name, e.position as e_position, c.source as num_source, c.who_work* FROM clients as c LEFT JOIN advertising_sources as a on c.source = a.id LEFT JOIN partners_employees as e on c.employee_id = e.id LEFT JOIN partners as p on e.partner_id = p.id WHERE 1 $bd_usl_managers $bd_usl and c.date_add $date_between order by c.date_add";*/ //echo $sql; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $source_id = $sourceId; $group_id = $groupId; if($r['total'] > 0){ if(!empty($r['source'])){ $source_id = (int)$r['source']; $sql_s = "SELECT id, source, group_id FROM advertising_sources WHERE id = $source_id"; $q_s = mysql_query($sql_s); $r_s = mysql_fetch_assoc($q_s); if(!empty($r_s['group_id'])){ $group_id = (int)$r_s['group_id']; } } $res[$group_id]['calls_all'] += (int)$r['total']; $res[$source_id]['calls_all'] += (int)$r['total']; $res[$source_id]['sources'] = $source_id; if($res[$source_id]['source'] == 'Источник не выбран'){ $res[$source_id]['sources'] = -1; } if($res[$group_id]['sources'] != 0){ $res[$group_id]['sources'] .= ",".$res[$source_id]['sources']; } else { $res[$group_id]['sources'] = $res[$source_id]['sources']; } } } $sql = "SELECT `source`, count(*) as total FROM $table WHERE 1 $bd_usl_managers $bd_usl and deleted=0 and $date_add $date_between group by `source`"; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $source_id = $sourceId; $group_id = $groupId; if($r['total'] > 0){ if(!empty($r['source'])){ $source_id = (int)$r['source']; $sql_s = "SELECT id, source, group_id FROM advertising_sources WHERE id = $source_id"; $q_s = mysql_query($sql_s); $r_s = mysql_fetch_assoc($q_s); if(!empty($r_s['group_id'])){ $group_id = (int)$r_s['group_id']; } } $res[$group_id]['work'] += (int)$r['total']; $res[$source_id]['work'] += (int)$r['total']; } } $sql = "SELECT `source`, denial, count(*) as total FROM $table WHERE 1 $bd_usl_managers $bd_usl and deleted=1 and confirm != 10 and $date_add $date_between group by `source`, denial"; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $source_id = $sourceId; $group_id = $groupId; if($r['total'] > 0){ if(!empty($r['source'])){ $source_id = (int)$r['source']; $sql_s = "SELECT id, source, group_id FROM advertising_sources WHERE id = $source_id"; $q_s = mysql_query($sql_s); $r_s = mysql_fetch_assoc($q_s); if(!empty($r_s['group_id'])){ $group_id = (int)$r_s['group_id']; } } foreach($denial_work as $denial){ if($denial == (int)$r['denial']){ $res[$group_id]['closest_'.$denial] += (int)$r['total']; $res[$source_id]['closest_'.$denial] += (int)$r['total']; } } $res[$group_id]['closest_all'] += (int)$r['total']; $res[$source_id]['closest_all'] += (int)$r['total']; } } $sql = "SELECT `source`, sum(summa) as summa, count(*) as total FROM $table WHERE 1 $bd_usl_managers $bd_usl and deleted=1 and confirm = 10 and $date_add $date_between group by `source`"; $q = mysql_query($sql); while($r = mysql_fetch_assoc($q)){ $source_id = $sourceId; $group_id = $groupId; if($r['total'] > 0){ if(!empty($r['source'])){ $source_id = (int)$r['source']; $sql_s = "SELECT id, source, group_id FROM advertising_sources WHERE id = $source_id"; $q_s = mysql_query($sql_s); $r_s = mysql_fetch_assoc($q_s); if(!empty($r_s['group_id'])){ $group_id = (int)$r_s['group_id']; } } $res[$group_id]['summa'] += (int)$r['summa']; $res[$source_id]['summa'] += (int)$r['summa']; $res[$group_id]['sdelka'] += (int)$r['total']; $res[$source_id]['sdelka'] += (int)$r['total']; } } if($post['responsible']){ } else { unset($_SESSION['filter_emp']); } $responsible = ''; if(!empty($usersArr)){ $responsible = implode(',', $usersArr); } $row = array(); foreach($res as $rw){ if($rw['calls_all'] > 0){ $isParent = (bool)$rw['pid'] == 0; $sources = $rw['sources']; $calls_all = $rw['calls_all']; $rw['calls_all'] = "$calls_all"; $work = $rw['work']; $rw['work'] = "$work"; $expenditure = $rw['expenditure']; $rw['expenditure'] = "$expenditure"; $sdelka_summa = $rw['sdelka'].'/'.number_format($rw['summa'],0 , '.', ' '); $rw['transaction'] = "$sdelka_summa"; $sdelka_calls_all = round($rw['sdelka']/$rw['calls_all']*100, 2); $rw['conversion'] = "$sdelka_calls_all%"; $closestAll_callsAll = round($rw['closest_all']/$rw['calls_all']*100, 2); $rw['conversion_closes'] = "$closestAll_callsAll%"; $rw['summa'] = number_format($rw['summa'],0 , '.', ' '); foreach($denial_work as $denial){ $tempC = $rw['closest_'.$denial]; $rw['closest_'.$denial] = "$tempC"; } $tempC = $rw['closest_all']; $rw['closest_all'] = "$tempC"; $row[] = $rw; } } $result = array( 'rows' => $row, 'total' => count($row), 'totalNotFiltered' => count($row) ); foreach ($row as $key => $r) { if (!isset($r['id'])) { unset($row[$key]); } } echo json_encode($row, JSON_UNESCAPED_UNICODE);