getUsersFilter($usersArr, $post['user_id'], $post['users_admin']); $user_id = $post['user_id']; $rows = $row = $res = $arrIdAddUsers = $arrIdWhoWork = array(); foreach ($usersId as $userId) { $arrIdWhoWork[] = "who_work = $userId"; $arrIdAddUsers[] = "id_add_user = $userId"; } $bd_piriod = ''; $bd_piriod_objects = ''; $bd_do_period = ''; if (isset($post['period'])) { $period = $post['period']; if ($period == 'dates') { $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_piriod_objects .= " AND `date_really_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_piriod_objects .= " AND `date_really_add` > '{$days}'"; } } $period = 'all'; $whereTasks = ""; if (isset($post['period'])) { $period = $post['period']; } // $period = $_POST['period']; $onDate = null; $offDate = null; if(isset($_POST['onDate']) && !empty($_POST['onDate'])){ $_SESSION['on_date'] = date('d.m.Y', strtotime($_POST['onDate'])); $onDate = $_POST['onDate']; } if(isset($_POST['offDate']) && !empty($_POST['offDate'])){ $_SESSION['off_date'] = date('d.m.Y', strtotime($_POST['offDate'])); $offDate = $_POST['offDate']; } $dates = getPeriod($period, $onDate, $offDate); $startDate = $dates['dateStart']; $endDate = $dates['dateEnd']; $date_between = $dates['between']; $whereTasks = $dates['whereTasks']; $bd_piriod .= " AND `date_add` $date_between"; $bd_piriod_objects .= " AND `date_really_add` $date_between"; $bd_do_period .= " AND `date_add` < '{$dates['dateStart']}'"; $rowAdd = $row_pr = $rowAdvPeriod = $rowAdvBeforePeriod = $rowNotAdvInPeriod = $rowAdvCostsBudgets = $rowAdvCostsPeriod = $row_requests = $row_requests_all = $row_task_old = $row_task_new = $row_task_slung = $row_meet = array(); $bd_usl_addUsers = " AND (" . implode(" OR ", $arrIdAddUsers) . ")"; $bd_usl_whoWork = " AND (" . implode(" OR ", $arrIdWhoWork) . ")"; $sqlAddedObj = "SELECT `id_add_user` FROM objects WHERE 1 and `id_add_user` in (". implode(', ', $usersId).") $bd_piriod_objects "; //echo $sqlAddedObj; $rowAdd = array(); $queryAddedObj = mysql_query($sqlAddedObj); while ($r = mysql_fetch_assoc($queryAddedObj)) { if(!isset($rowAdd[$r['id_add_user']])) $rowAdd[$r['id_add_user']] = 0; $rowAdd[$r['id_add_user']]++; } //Было в рекламе за период - период, указанный пользователем, должен включать либо дату начала, либо дату окончания периода публикации //также период пользователя может быть полностью включен в период публикации, для этого третье условие, что дата начала публикации внутри периода, заданного пользователем. $sqlAdv = "SELECT count(DISTINCT object_id) as total, user_owner_id FROM object_publish_statistic WHERE on_moderation = 0 AND user_owner_id in (" . implode(', ', $usersId) . ") AND ('$startDate' between publish_start_date and publish_end_date) group by user_owner_id"; //echo $sqlAdv; $rez = mysql_query($sqlAdv); while ($r = mysql_fetch_assoc($rez)) { $rowAdvPeriod[$r['user_owner_id']] = (int)$r['total']; } //Затраты на рекламу - суммируем расход за период, дата добавления записи должна быть внутри периода, заданного пользователем /*$sqlAdvCosts = "SELECT sum(price) as total_sum, user_owner_id FROM object_publish_statistic WHERE on_moderation = 0 AND user_owner_id in (" . implode(', ', $usersId) . ") and created_at $date_between group by user_owner_id";*/ $sqlAdvCosts = "SELECT DISTINCT `user_owner_id`, SUM(`price`) as `total_sum` FROM `object_publish_statistic` INNER JOIN objects o ON object_publish_statistic.object_id = o.id WHERE `user_owner_id` IN (" . implode(', ', $usersId) . ") AND ( `publish_start_date` $date_between ) AND `on_moderation` = 0 GROUP BY `user_owner_id`"; $rezAdvCosts = mysql_query($sqlAdvCosts); while ($statRec = mysql_fetch_assoc($rezAdvCosts)) { $rowAdvCostsPeriod[$statRec['user_owner_id']] = $statRec['total_sum']; } // Определяем текущего пользователя $user = new User; $user->get($_SESSION['id']); $user->checkPermissions(); // Затраты на рекламу $advert_budget = new AdvertBudgets(); $advert_summary = $advert_budget->getSummaryByUsers($usersId, null, $period, $onDate, $offDate); $rowAdvCostsTotal = []; foreach ($advert_summary as $summary) { $user_id = (int)$summary['user_id']; if ($summary['service_id'] == 1) $rowAdvCostsBudgets[$user_id]['avito'] += $summary['amount']; if ($summary['service_id'] == 2) $rowAdvCostsBudgets[$user_id]['cian'] += $summary['amount']; if ($summary['service_id'] == 3) $rowAdvCostsBudgets[$user_id]['yandex'] += $summary['amount']; if ($summary['service_id'] == 4) $rowAdvCostsBudgets[$user_id]['domclick'] += $summary['amount']; if ($summary['service_id'] == 5) $rowAdvCostsBudgets[$user_id]['jcat'] += $summary['amount']; } // Затраты на Зипал $sql = "SELECT sum(`price`) as `total_sum`, `user_owner_id` FROM `object_publish_statistic` WHERE `user_owner_id` IN (" . implode(', ', $usersId) . ") AND `destination` = 'ZIPAL' AND `on_moderation` = 0 AND `created_at` $date_between AND ( `advertising_package_object_publish_id` IS NOT NULL OR `zipal_objects_id` IS NOT NULL ) GROUP BY `user_owner_id`"; if ($query = mysql_query($sql)) { while ($row = mysql_fetch_assoc($query)) { $rowAdvCostsBudgets[(int)$row['user_owner_id']]['zipal'] = $row['total_sum']; } } // Затраты на продвижение $sql = "SELECT sum(`price`) as `total_sum`, `user_owner_id` FROM `object_publish_statistic` WHERE `user_owner_id` IN (" . implode(', ', $usersId) . ") AND `destination` IN (" . "'" . implode("', '", array_keys($PROMO_TARGETS)) . "'" . ") AND `on_moderation` = 0 AND `created_at` $date_between GROUP BY `user_owner_id`"; if ($query = mysql_query($sql)) { while ($row = mysql_fetch_assoc($query)) { $rowAdvCostsBudgets[(int)$row['user_owner_id']]['promo'] = $row['total_sum']; $rowAdvPeriod[(int)$row['user_owner_id']]++; } } //Было в рекламе к началу периода - дата начала периода пользователя должна быть внутри периода публикации $sqlAdvBefore = "SELECT count(DISTINCT object_id) as total, user_owner_id FROM object_publish_statistic WHERE on_moderation = 0 AND user_owner_id in (" . implode(', ', $usersId) . ") and '$startDate' between publish_start_date and publish_end_date group by user_owner_id"; $rez = mysql_query($sqlAdvBefore); while ($r = mysql_fetch_assoc($rez)) { $rowAdvBeforePeriod[$r['user_owner_id']] = $r['total']; } $bd_piriod_objects2 = " AND `date_really_add` $date_between"; $sqlNotAdvInPeriodObjCount = "SELECT count(id) as total, id_add_user FROM objects WHERE objects.id not in (SELECT id FROM objects WHERE id in (SELECT object_id FROM object_publish_statistic WHERE on_moderation = 0 AND user_owner_id in (" . implode(', ', $usersId) . ") and ('$startDate' between publish_start_date and publish_end_date)) $bd_piriod_objects2) and objects.id_add_user in (" . implode(', ', $usersId) . ") group by objects.id_add_user"; $rez = mysql_query($sqlNotAdvInPeriodObjCount); while ($r = mysql_fetch_assoc($rez)) { $rowNotAdvInPeriod[(int)$r['id_add_user']] = $r['total']; } //Презентации $sqlPresentation = "SELECT count(id) as total, id_agent FROM sended_pdf WHERE id_object in (SELECT id FROM objects WHERE `date_add` <= '$endDate' $bd_usl_addUsers) and id_agent in (" . implode(', ', $usersId) . ") and date_send $date_between group by id_agent"; $rez = mysql_query($sqlPresentation); while ($r = mysql_fetch_assoc($rez)) { $row_pr[$r['id_agent']] = $r['total']; } $bd_piriod_req = str_replace('date_add', 'created_at', $bd_piriod); //$sqlAddedObj = "SELECT `id_add_user`, count(id) as total FROM objects WHERE 1 $bd_usl_addUsers $bd_piriod_objects group by `id_add_user`"; if ($post['users_admin']) { $user_id = $user->agencyId; } //$who_work_req_agency = " AND ((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 in (select id from users where id_manager=$user->agencyId))) or who_work 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 in (select id from users where id_manager=$user->agencyId)))) or doers like '%"".$user->agencyId."":1%')"; //$sqlRequestAll = "SELECT `object_id`, count(id) as total FROM requisitions WHERE 1 $bd_piriod_req $who_work_req_agency and object_id > 0 and type_id=4 group by object_id"; $sqlRequestAll = "SELECT r.`object_id`, COUNT(r.id) as total FROM requisitions r INNER JOIN objects o ON r.object_id = o.id WHERE 1 $bd_piriod_req AND r.object_id > 0 AND r.deleted = 0 AND (r.type_id = 4 OR r.type_id IN (SELECT id FROM requisitions_type WHERE heir = 4 AND agency_id = {$user->agencyId})) AND o.id_add_user IN (" . implode(', ', $usersId) . ") GROUP BY r.object_id"; //echo $sqlRequestAll; $qRequestAll = mysql_query($sqlRequestAll); while($r_all = mysql_fetch_assoc($qRequestAll)){ $arrObjAll[] = $r_all['object_id']; $arrReq_all[$r_all['object_id']] = (int)$r_all['total']; } $sql_obj_req_all = "SELECT `id_add_user`, id FROM objects WHERE 1 AND id in (".implode(',',$arrObjAll).")"; //$who_work_req = " AND ((user_id in (select id from users where id=$user_id or id_manager=$user_id or id_manager in // (select id from users where id_manager=$user_id) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$user_id))) or who_work in (select id from users where id=$user_id or id_manager=$user_id or id_manager in // (select id from users where id_manager=$user_id) or id_manager in (select id from users where id_manager in (select id from users where id_manager=$user_id)))) or doers like '%"".$user_id."":1%')"; //$sqlRequest = "SELECT `object_id`, count(id) as total FROM requisitions WHERE 1 $bd_piriod_req $who_work_req and object_id > 0 and type_id=4 group by object_id"; //echo $sqlRequest; //$qRequest = mysql_query($sqlRequest); //while($r = mysql_fetch_assoc($qRequest)){ // $arrObj[] = $r['object_id']; // $arrReq[$r['object_id']] = (int)$r['total']; //} //$sql_obj_req = "SELECT `id_add_user`, id FROM objects WHERE 1 AND id in (".implode(',',$arrObj).")"; //echo $sql_obj_req; //$qSqlReq = mysql_query($sql_obj_req); //while($r_obj_req = mysql_fetch_assoc($qSqlReq)){ // if(!isset($row_requests[$r_obj_req['id_add_user']])) $row_requests[$r_obj_req['id_add_user']] = 0; // $row_requests[$r_obj_req['id_add_user']] += $arrReq[$r_obj_req['id']]; //} $qSqlReqAll = mysql_query($sql_obj_req_all); while($r_obj_req_all = mysql_fetch_assoc($qSqlReqAll)){ if(!isset($row_requests_all[$r_obj_req_all['id_add_user']])) $row_requests_all[$r_obj_req_all['id_add_user']] = 0; $row_requests_all[$r_obj_req_all['id_add_user']] += $arrReq_all[$r_obj_req_all['id']]; } //var_dump($row_requests_all); //считаем просроченные задачи объектов $sqlTaskOld = "SELECT count(id) as total, user_id FROM user_object_events WHERE user_id in (". implode(', ', $usersId).") and calendar_view = 0 and schedule_date is not null $whereTasks and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') < '".date("Y-m-d H:i:s")."' group by user_id"; $rezTaskOld = mysql_query($sqlTaskOld); while($r = mysql_fetch_assoc($rezTaskOld)){ $row_task_old[$r['user_id']] = $r['total']; } // считаем будущие задачи по объектам $sqlTaskNew = "SELECT count(id) as total, user_id FROM user_object_events WHERE user_id in (". implode(', ', $usersId).") and calendar_view = 0 and schedule_date is not null $whereTasks and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') > '".date("Y-m-d H:i:s")."' group by user_id"; $rezTaskNew = mysql_query($sqlTaskNew); while($r = mysql_fetch_assoc($rezTaskNew)){ $row_task_new[$r['user_id']] = $r['total']; } // считаем выполненные задачи по объектам $sqlTaskSlung = "SELECT count(id) as total, user_id FROM user_object_events WHERE user_id in (". implode(', ', $usersId).") and calendar_view = 1 and schedule_date is not null $whereTasks group by user_id"; $rezTaskSlung = mysql_query($sqlTaskSlung); while($r = mysql_fetch_assoc($rezTaskSlung)){ $row_task_slung[$r['user_id']] = $r['total']; } //Встречи по объектам $sqlMeet = "SELECT count(id) as total, user_id FROM user_object_events WHERE user_id in (". implode(', ', $usersId).") and `type` = 'show' AND object_id in (".implode(',',$arrObjAll).") and calendar_view = 1 and schedule_date is not null $whereTasks group by user_id"; //echo $sql; $rezMeet = mysql_query($sqlMeet); while($r = mysql_fetch_assoc($rezMeet)){ $row_meet[$r['user_id']] = $r['total']; } $array_managers = array(); $departmentClass = new Department; $departments = $departmentClass->getDepartments(); $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; } //количество объектов пользователя, которые были созданы за период и рекламировались $advAndCreateInPeriodSql = "SELECT id_add_user FROM objects WHERE id in (SELECT object_id FROM object_publish_statistic WHERE on_moderation = 0 AND user_owner_id in (". implode(', ', $usersId).") and ('$startDate' between publish_start_date and publish_end_date)) and `id_add_user` in (". implode(', ', $usersId).") $bd_piriod_objects"; $objectPublishPeriodCount = array(); $q_objectPublish = mysql_query($advAndCreateInPeriodSql); while($r_objectPublish = mysql_fetch_assoc($q_objectPublish)){ if(!isset($objectPublishPeriodCount[$r_objectPublish['id_add_user']])) $objectPublishPeriodCount[$r_objectPublish['id_add_user']] = 0; $objectPublishPeriodCount[$r_objectPublish['id_add_user']]++; } foreach ($usersId as $key => $id) { $mstr = $users[$id]; $arrTemp = array(); //$mstr = 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']])){ $departmentUser = $departmentClass->getDepartment($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'] = $id; $arrTemp['added'] = 0; if (isset($rowAdd[$id])) { $arrTemp['added'] = $rowAdd[$id]; if($arrTemp['post'] == 'manager'){ $array_managers[$id]['added'] = $rowAdd[$id]; } } $arrTemp['adv_in_period'] = 0; $sqlAdv = " SELECT COUNT(DISTINCT ops.object_id) AS total FROM object_publish_statistic ops WHERE ops.on_moderation = 0 AND ops.user_owner_id = $id AND ops.publish_start_date <= '$endDate' AND ( ops.publish_end_date >= '$startDate' OR ops.publish_end_date IS NULL OR ops.publish_end_date = '0000-00-00' )"; $rezAdv = mysql_query($sqlAdv); $r = mysql_fetch_assoc($rezAdv); if ($r['total']) { $arrTemp['adv_in_period'] = $r['total']; if($arrTemp['post'] == 'manager'){ $array_managers[$id]['adv_in_period'] = $r['total']; } } if (isset($rowAdvPeriod[$id])) { $arrTemp['adv_in_period_and_sended'] = (int)$rowAdvPeriod[$id] - (int)$arrTemp['adv_in_period']; } $arrTemp['adv_before_period'] = 0; if (isset($rowAdvBeforePeriod[$id])) { $arrTemp['adv_before_period'] = $rowAdvBeforePeriod[$id]; if($arrTemp['post'] == 'manager'){ $array_managers[$id]['adv_before_period'] = $rowAdvBeforePeriod[$id]; } } $arrTemp['not_adv_in_period'] = 0; if (isset($rowNotAdvInPeriod[$id])) { $arrTemp['not_adv_in_period'] = $rowNotAdvInPeriod[$id]; if($arrTemp['post'] == 'manager'){ $array_managers[$id]['not_adv_in_period'] = $rowNotAdvInPeriod[$id]; } } $arrTemp['adv_costs_promo'] = 0; if (isset($rowAdvCostsBudgets[$id]['promo'])) { $arrTemp['adv_costs_promo'] = round(floatval($rowAdvCostsBudgets[$id]['promo']), 2); if ($arrTemp['post'] == 'manager') { $array_managers[$id]['adv_costs_promo'] = round(floatval($rowAdvCostsBudgets[$id]['promo']), 2); } else if ($arrTemp['post'] == 'agency') { $costs = array_reduce($rowAdvCostsBudgets, function ($curr, $item) { return $curr += round(floatval($item['promo']), 2); }, 0); $arrTemp['adv_costs_promo'] = $costs; } } $arrTemp['adv_costs_avito'] = 0; if (isset($rowAdvCostsBudgets[$id]['avito'])) { $arrTemp['adv_costs_avito'] = round(floatval($rowAdvCostsBudgets[$id]['avito']), 2); if ($arrTemp['post'] == 'manager') { $array_managers[$id]['adv_costs_avito'] = round(floatval($rowAdvCostsBudgets[$id]['avito']), 2); } else if ($arrTemp['post'] == 'agency') { $costs = array_reduce($rowAdvCostsBudgets, function ($curr, $item) { return $curr += round(floatval($item['avito']), 2); }, 0); $arrTemp['adv_costs_avito'] = $costs; } } $arrTemp['adv_costs_cian'] = 0; // var_dump(json_encode($rowAdvCostsBudgets[4]));die; if (isset($rowAdvCostsBudgets[$id]['cian'])) { $arrTemp['adv_costs_cian'] = round(floatval($rowAdvCostsBudgets[$id]['cian']), 2); if ($arrTemp['post'] == 'manager') { $array_managers[$id]['adv_costs_cian'] = round(floatval($rowAdvCostsBudgets[$id]['cian']), 2); } else if ($arrTemp['post'] == 'agency') { $costs = array_reduce($rowAdvCostsBudgets, function ($curr, $item) { return $curr += round(floatval($item['cian']), 2); }, 0); $arrTemp['adv_costs_cian'] = $costs; } } $arrTemp['adv_costs_domclick'] = 0; if (isset($rowAdvCostsBudgets[$id]['domclick'])) { $arrTemp['adv_costs_domclick'] = round(floatval($rowAdvCostsBudgets[$id]['domclick']), 2); if ($arrTemp['post'] == 'manager') { $array_managers[$id]['adv_costs_domclick'] = round(floatval($rowAdvCostsBudgets[$id]['domclick']), 2); } else if ($arrTemp['post'] == 'agency') { $costs = array_reduce($rowAdvCostsBudgets, function ($curr, $item) { return $curr += round(floatval($item['domclick']), 2); }, 0); $arrTemp['adv_costs_domclick'] = $costs; } } $arrTemp['adv_costs_jcat'] = 0; if (isset($rowAdvCostsBudgets[$id]['jcat'])) { $arrTemp['adv_costs_jcat'] = round(floatval($rowAdvCostsBudgets[$id]['jcat']), 2); if ($arrTemp['post'] == 'manager') { $array_managers[$id]['adv_costs_jcat'] = round(floatval($rowAdvCostsBudgets[$id]['jcat']), 2); } else if ($arrTemp['post'] == 'agency') { $costs = array_reduce($rowAdvCostsBudgets, function ($curr, $item) { return $curr += round(floatval($item['jcat']), 2); }, 0); $arrTemp['adv_costs_jcat'] = $costs; } } $arrTemp['adv_costs_yandex'] = 0; if (isset($rowAdvCostsBudgets[$id]['yandex'])) { $arrTemp['adv_costs_yandex'] = round(floatval($rowAdvCostsBudgets[$id]['yandex']), 2); if ($arrTemp['post'] == 'manager') { $array_managers[$id]['adv_costs_yandex'] = round(floatval($rowAdvCostsBudgets[$id]['yandex']), 2); } else if ($arrTemp['post'] == 'agency') { $costs = array_reduce($rowAdvCostsBudgets, function ($curr, $item) { return $curr += round(floatval($item['yandex']), 2); }, 0); $arrTemp['adv_costs_yandex'] = $costs; } } $arrTemp['adv_costs_zipal'] = 0; if (isset($rowAdvCostsBudgets[$id]['zipal'])) { $arrTemp['adv_costs_zipal'] = round(floatval($rowAdvCostsBudgets[$id]['zipal']), 2); if ($arrTemp['post'] == 'manager') { $array_managers[$id]['adv_costs_zipal'] = round(floatval($rowAdvCostsBudgets[$id]['zipal']), 2); } else if ($arrTemp['post'] == 'agency') { $costs = array_reduce($rowAdvCostsBudgets, function ($curr, $item) { return $curr += round(floatval($item['zipal']), 2); }, 0); $arrTemp['adv_costs_zipal'] = $costs; } } $arrTemp['adv_costs_period'] = 0; if (isset($rowAdvCostsPeriod[$id])) { $arrTemp['adv_costs_period'] = floatval($rowAdvCostsPeriod[$id]); if($arrTemp['post'] == 'manager'){ $array_managers[$id]['adv_costs_period'] = floatval($rowAdvCostsPeriod[$id]); } } $arrTemp['presentation'] = 0; if (isset($row_pr[$id])) { $arrTemp['presentation'] = $row_pr[$id]; if($arrTemp['post'] == 'manager'){ $array_managers[$id]['presentation'] = $row_pr[$id]; } } $arrTemp['requests'] = 0; if(isset($row_requests_all[$id])) { $arrTemp['requests'] = $row_requests_all[$id]; // if($arrTemp['post'] == 'manager'){ // $array_managers[$id]['requests'] = $row_requests_all[$id]; // } } $arrTemp['requests_all'] = $arrTemp['requests']; // $arrTemp['requests_all'] = 0; // if(isset($row_requests_all[$id])) { // $arrTemp['requests_all'] = $row_requests_all[$id]; // if($arrTemp['post'] == 'manager'){ // $array_managers[$id]['requests_all'] = $row_requests_all[$id]; // } // } $arrTemp['task_old'] = 0; if(isset($row_task_old[$id])) { $arrTemp['task_old'] = $row_task_old[$id]; if($arrTemp['post'] == 'manager'){ $array_managers[$id]['task_old'] = $row_task_old[$id]; } } $arrTemp['task_new'] = 0; if(isset($row_task_new[$id])) { $arrTemp['task_new'] = $row_task_new[$id]; if($arrTemp['post'] == 'manager'){ $array_managers[$id]['task_new'] = $row_task_new[$id]; } } $arrTemp['task_slung'] = 0; if(isset($row_task_slung[$id])) { $arrTemp['task_slung'] = $row_task_slung[$id]; if($arrTemp['post'] == 'manager'){ $array_managers[$id]['task_slung'] = $row_task_slung[$id]; } } $arrTemp['meet'] = 0; if(isset($row_meet[$id])) { $arrTemp['meet'] = $row_meet[$id]; if($arrTemp['post'] == 'manager'){ $array_managers[$id]['meet'] = $row_meet[$id]; } } $arrTemp['id_manager'] = $mstr['id_manager']; $arrTemp['id'] = $id; $arrTemp['fio'] = $master; $arrTemp['agency_name'] = $mstr['agency_name']; $arrTemp['first_name'] = $mstr['first_name']; $arrTemp['last_name'] = $mstr['last_name']; $arrTemp['middle_name'] = $mstr['middle_name']; $arrTemp['pid'] = 0; if(in_array((int)$mstr['id_manager'], $usersId)){ $arrTemp['pid'] = (int)$mstr['id_manager']; } if(isset($rows[$mstr['id_manager']])){ $rows[$mstr['id_manager']]['added'] = (int)$rows[$mstr['id_manager']]['added'] + (int)$arrTemp['added']; if (!$rows[$mstr['id_manager']]['addedByManagerUsers']) { $rows[$mstr['id_manager']]['addedByManagerUsers'] = 0; } $rows[$mstr['id_manager']]['addedByManagerUsers'] = (int)$rows[$mstr['id_manager']]['addedByManagerUsers'] + (int)$arrTemp['added']; $rows[$mstr['id_manager']]['adv_in_period'] = (int)$rows[$mstr['id_manager']]['adv_in_period'] + (int)$arrTemp['adv_in_period']; if (!$rows[$mstr['id_manager']]['adv_in_periodByManagerUsers']) { $rows[$mstr['id_manager']]['adv_in_periodByManagerUsers'] = 0; } $rows[$mstr['id_manager']]['adv_in_periodByManagerUsers'] = (int)$rows[$mstr['id_manager']]['adv_in_periodByManagerUsers'] + (int)$arrTemp['adv_in_period']; $rows[$mstr['id_manager']]['adv_before_period'] = (int)$rows[$mstr['id_manager']]['adv_before_period'] + (int)$arrTemp['adv_before_period']; if (!$rows[$mstr['id_manager']]['adv_before_periodByManagerUsers']) { $rows[$mstr['id_manager']]['adv_before_periodByManagerUsers'] = 0; } $rows[$mstr['id_manager']]['adv_before_periodByManagerUsers'] = (int)$rows[$mstr['id_manager']]['adv_before_periodByManagerUsers'] + (int)$arrTemp['adv_before_period']; $rows[$mstr['id_manager']]['not_adv_in_period'] = (int)$rows[$mstr['id_manager']]['not_adv_in_period'] + (int)$arrTemp['not_adv_in_period']; if (!$rows[$mstr['id_manager']]['not_adv_in_periodByManagerUsers']) { $rows[$mstr['id_manager']]['not_adv_in_periodByManagerUsers'] = 0; } $rows[$mstr['id_manager']]['not_adv_in_periodByManagerUsers'] = (int)$rows[$mstr['id_manager']]['not_adv_in_periodByManagerUsers'] + (int)$arrTemp['not_adv_in_period']; $rows[$mstr['id_manager']]['adv_costs_period'] = floatval($rows[$mstr['id_manager']]['adv_costs_period']) + floatval($arrTemp['adv_costs_period']); if (!$rows[$mstr['id_manager']]['adv_costs_periodByManagerUsers']) { $rows[$mstr['id_manager']]['adv_costs_periodByManagerUsers'] = 0; } $rows[$mstr['id_manager']]['adv_costs_periodByManagerUsers'] = floatval($rows[$mstr['id_manager']]['adv_costs_periodByManagerUsers']) + floatval($arrTemp['adv_costs_period']); $rows[$mstr['id_manager']]['presentation'] = (int)$rows[$mstr['id_manager']]['presentation'] + (int)$arrTemp['presentation']; if (!$rows[$mstr['id_manager']]['presentationByManagerUsers']) { $rows[$mstr['id_manager']]['presentationByManagerUsers'] = 0; } $rows[$mstr['id_manager']]['presentationByManagerUsers'] = (int)$rows[$mstr['id_manager']]['presentationByManagerUsers'] + (int)$arrTemp['presentation']; $rows[$mstr['id_manager']]['requests_all'] = (int)$rows[$mstr['id_manager']]['requests_all'] + (int)$arrTemp['requests_all']; if (!$rows[$mstr['id_manager']]['requestsAllByManagerUsers']) { $rows[$mstr['id_manager']]['requestsAllByManagerUsers'] = 0; } $rows[$mstr['id_manager']]['requestsAllByManagerUsers'] = (int)$rows[$mstr['id_manager']]['requestsAllByManagerUsers'] + (int)$arrTemp['requests_all']; $rows[$mstr['id_manager']]['task_new'] = (int)$rows[$mstr['id_manager']]['task_new'] + (int)$arrTemp['task_new']; if (!$rows[$mstr['id_manager']]['task_newByManagerUsers']) { $rows[$mstr['id_manager']]['task_newByManagerUsers'] = 0; } $rows[$mstr['id_manager']]['task_newByManagerUsers'] = (int)$rows[$mstr['id_manager']]['task_newByManagerUsers'] + (int)$arrTemp['task_new']; $rows[$mstr['id_manager']]['task_old'] = (int)$rows[$mstr['id_manager']]['task_old'] + (int)$arrTemp['task_old']; if (!$rows[$mstr['id_manager']]['task_oldByManagerUsers']) { $rows[$mstr['id_manager']]['task_oldByManagerUsers'] = 0; } $rows[$mstr['id_manager']]['task_oldByManagerUsers'] = (int)$rows[$mstr['id_manager']]['task_oldByManagerUsers'] + (int)$arrTemp['task_old']; $rows[$mstr['id_manager']]['task_slung'] = (int)$rows[$mstr['id_manager']]['task_slung'] + (int)$arrTemp['task_slung']; if (!$rows[$mstr['id_manager']]['task_slungByManagerUsers']) { $rows[$mstr['id_manager']]['task_slungByManagerUsers'] = 0; } $rows[$mstr['id_manager']]['task_slungByManagerUsers'] = (int)$rows[$mstr['id_manager']]['task_slungByManagerUsers'] + (int)$arrTemp['task_slung']; $rows[$mstr['id_manager']]['meet'] = (int)$rows[$mstr['id_manager']]['meet'] + (int)$arrTemp['meet']; if (!$rows[$mstr['id_manager']]['meetByManagerUsers']) { $rows[$mstr['id_manager']]['meetByManagerUsers'] = 0; } $rows[$mstr['id_manager']]['meetByManagerUsers'] = (int)$rows[$mstr['id_manager']]['meetByManagerUsers'] + (int)$arrTemp['meet']; } $rows[$id] = $arrTemp; } foreach ($rows as $key => $row ){ if(isset($rows[$row['id_manager']]) && $row['post'] == 'manager') { $rows[$row['id_manager']]['added'] = (int)$rows[$row['id_manager']]['added'] + (int)$row['added']-(int)$array_managers[$row['id']]['added']; if(isset($rows[$rows[$row['id_manager']]['id_manager']])){ $rows[$rows[$row['id_manager']]['id_manager']]['added'] =$rows[$rows[$row['id_manager']]['id_manager']]['added'] + (int)$row['added']-(int)$array_managers[$row['id']]['added']; } $rows[$row['id_manager']]['adv_in_period'] = (int)$rows[$row['id_manager']]['adv_in_period'] + (int)$row['adv_in_period']-(int)$array_managers[$row['id']]['adv_in_period']; if(isset($rows[$rows[$row['id_manager']]['id_manager']])){ $rows[$rows[$row['id_manager']]['id_manager']]['adv_in_period'] =$rows[$rows[$row['id_manager']]['id_manager']]['adv_in_period'] + (int)$row['adv_in_period']-(int)$array_managers[$row['id']]['adv_in_period']; } $rows[$row['id_manager']]['adv_before_period'] = (int)$rows[$row['id_manager']]['adv_before_period'] + (int)$row['adv_before_period']-(int)$array_managers[$row['id']]['adv_before_period']; $rows[$row['id_manager']]['not_adv_in_period'] = (int)$rows[$row['id_manager']]['not_adv_in_period'] + (int)$row['not_adv_in_period']-(int)$array_managers[$row['id']]['not_adv_in_period']; if(isset($rows[$rows[$row['id_manager']]['id_manager']])){ $rows[$rows[$row['id_manager']]['id_manager']]['not_adv_in_period'] =$rows[$rows[$row['id_manager']]['id_manager']]['not_adv_in_period'] + (int)$row['not_adv_in_period']-(int)$array_managers[$row['id']]['not_adv_in_period']; } $rows[$row['id_manager']]['adv_costs_period'] = floatval($rows[$row['id_manager']]['adv_costs_period']) + floatval($row['adv_costs_period']) - floatval($array_managers[$row['id']]['adv_costs_period']); $rows[$row['id_manager']]['requests_all'] = (int)$rows[$row['id_manager']]['requests_all'] + (int)$row['requests_all']-(int)$array_managers[$row['id']]['requests_all']; if(isset($rows[$rows[$row['id_manager']]['id_manager']])){ $rows[$rows[$row['id_manager']]['id_manager']]['requests_all'] =$rows[$rows[$row['id_manager']]['id_manager']]['requests_all'] + (int)$row['requests_all']-(int)$array_managers[$row['id']]['requests_all']; } $rows[$row['id_manager']]['task_new'] = (int)$rows[$row['id_manager']]['task_new'] + (int)$row['task_new']-(int)$array_managers[$row['id']]['task_new']; $rows[$row['id_manager']]['task_old'] = (int)$rows[$row['id_manager']]['task_old'] + (int)$row['task_old']-(int)$array_managers[$row['id']]['task_old']; $rows[$row['id_manager']]['task_slung'] = (int)$rows[$row['id_manager']]['task_slung'] + (int)$row['task_slung']-(int)$array_managers[$row['id']]['task_slung']; $rows[$row['id_manager']]['presentation'] = (int)$rows[$row['id_manager']]['presentation'] + (int)$row['presentation']-(int)$array_managers[$row['id']]['presentation']; $rows[$row['id_manager']]['meet'] = (int)$rows[$row['id_manager']]['meet'] + (int)$row['meet']-(int)$array_managers[$row['id']]['meet']; } } foreach ($rows as $row) { $row['adv_costs_period'] = number_format($row['adv_costs_period'], 2, '.', ' '); $res[] = $row; } $time = microtime(true) - $start; $result = array('current' => 1, 'rowCount' => 10, 'rows' => $res, 'total' => count($usersId), 'sqlCreate' => '', 'sqlAdv' => '', 'sqlRAll' => '', 'sqlNotAdv' => '', 'array' => $array_managers, 'time' => $time ); echo json_encode($result);