Joywork/ajax/getObjectsStatistic.php

734 lines
34 KiB
PHP
Raw Normal View History

2026-05-22 20:21:54 +02:00
<?php
$start = microtime(true);
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
global $PROMO_TARGETS;
$post = clearInputData($_POST);
$usersArr = json_decode($_POST['responsible'], true);
$cl = new Clients();
$usersId = $cl->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 '%&quot;".$user->agencyId."&quot;: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 '%&quot;".$user_id."&quot;: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);