Joywork/ajax/getObjectsTableStats.php
2026-05-22 21:21:54 +03:00

1056 lines
52 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
$start = microtime(true);
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
global $PROMO_TARGETS;
/*error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);*/
$post = clearInputData($_POST);
$usersArr = json_decode($_POST['responsible'], true);
$one_page_size = 10;
$page = $post['page'];
if(!isset($page) || $page < 1) {
$page = 1;
}
$limit = ' limit '.(($page-1) * $one_page_size) . ', ' . $one_page_size;
$cl = new Clients();
//список тех, кто входит в статистику.
$usersId = $cl->getUsersFilter($usersArr, $post['user_id'], $post['users_admin']);
$user_id = $post['user_id'];
$usersIdReal = array();
//пользователь, по которому смотрим объекты
$userId = $post['userId'];
//тип для вывода списка объектов - обозначнеие столбца из таблицы
$type = $post['type'];
//echo $type;
$tempUserId = $userId;
if($userId == 'all'){
$tempUserId = $user_id;
}
$user = mysql_fetch_assoc(mysql_query("SELECT agency, manager, agency_name, last_name, first_name, middle_name, id_manager FROM users WHERE id=" . $tempUserId));
$arrIdAddUsers = $arrIdWhoWork = array();
//если смотрим статистику по агентству, то смотрим по всем, кто в списке
if ($user['agency']) {
foreach ($usersId as $usrId) {
$arrIdWhoWork[] = "who_work = $usrId";
$arrIdAddUsers[] = $usrId;
}
// $usersIdReal = $usersId;
} elseif ($user['manager']) {
$arrIdWhoWork[] = "who_work = $userId";
$arrIdAddUsers[] = $userId;
//$usersIdReal[] = $userId;
$usersResult = mysql_query("SELECT id, manager FROM users WHERE id_manager=" . $userId);
while ($usr = mysql_fetch_assoc($usersResult)) {
if (in_array($usr['id'], $usersId)) {
$arrIdWhoWork[] = "who_work = $usr[id]";
$arrIdAddUsers[] = $usr['id'];
// $usersIdReal[] = $usr['id'];
}
if($usr['manager'] > 0){
$rez004 = mysql_query("SELECT id FROM users WHERE id_manager=$usr[id]");
while ($mm02 = mysql_fetch_assoc($rez004)) {
if(!in_array((int)$mm02['id'], $arrIdAddUsers)){
$arrIdWhoWork[] = "who_work = $mm02[id]";
$arrIdAddUsers[] = $mm02['id'];
// $usersIdReal[] = $mm02['id'];
}
}
}
}
} else {
$arrIdWhoWork[] = "who_work = $userId";
$arrIdAddUsers[] = $userId;
//$usersIdReal[] = $userId;
}
/*$arrIdWhoWork[] = "who_work = $userId";
$arrIdAddUsers[] = $userId;*/
if($userId == 'all'){
$usersIdReal = $usersId;
} else
$usersIdReal[] = $userId;
$bd_usl_addUsers = " id_add_user in (" . implode(",", $arrIdAddUsers) . ")";
$bd_usl_whoWork = " AND (" . implode(" OR ", $arrIdWhoWork) . ")";
$period = 'all';
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}'";*/
$_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}'";*/
}
}
$dates = getPeriod($period,$_POST['onDate'],$_POST['offDate']);
/*$lastDay = '';
$startDate = '1970-01-01 00:00:00';
$endDate = '3000-12-31 23:59:59';
$whereTasks = " and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') between '1970-01-01 00:00:00' AND '3000-12-31 23:59:59'";
switch ($period) {
case 'month': {
$totalDays = cal_days_in_month(CAL_GREGORIAN, (int)date('m'), date('Y'));
$lastDay = $totalDays;
$startDate = date('Y') . "-" . date('m') . "-01 00:00:00";
$endDate = date('Y') . "-" . date('m') . "-" . $lastDay . " 23:59:59";
$whereTasks = " and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') between '".date('Y')."-".date('m')."-01 00:00:00' AND '".date('Y')."-".date('m')."-".$lastDay." 23:59:59'";
break;
}
case 'today':{
$startDate = date("Y-m-d 00:00:00");
$endDate = date("Y-m-d 23:59:59");
$whereTasks = " and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') between '".date("Y-m-d 00:00:00")."' AND '".date("Y-m-d 23:59:59")."'";
break;
}
case 'quarter' : {
$nowMonth = (int)date('m');
if ($nowMonth < 4) {
$startDate = date('Y') . "-01-01 00:00:00";
$endDate = date('Y') . "-03-31 23:59:59";
$whereTasks = " and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') between '".date('Y')."-01-01 00:00:00' AND '".date('Y')."-03-31 23:59:59'";
} else if ($nowMonth >= 4 && $nowMonth < 7) {
$startDate = date('Y') . "-04-01 00:00:00";
$endDate = date('Y') . "-06-30 23:59:59";
$whereTasks = " and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') between '".date('Y')."-04-01 00:00:00' AND '".date('Y')."-06-30 23:59:59'";
} else if ($nowMonth >= 7 && $nowMonth < 10) {
$startDate = date('Y') . "-07-01 00:00:00";
$endDate = date('Y') . "-09-30 23:59:59";
$whereTasks = " and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') between '".date('Y')."-07-01 00:00:00' AND '".date('Y')."-09-30 23:59:59'";
} else if ($nowMonth >= 10 && $nowMonth < 13) {
$startDate = date('Y') . "-10-01 00:00:00";
$endDate = date('Y') . "-12-31 23:59:59";
$whereTasks = " and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') between '".date('Y')."-10-01 00:00:00' AND '".date('Y')."-12-31 23:59:59'";
}
break;
}
case 'week': {
$startDate = date("Y-m-d 00:00:00", strtotime("monday this week"));
$endDate = date("Y-m-d 23:59:59", strtotime("sunday this week"));
$whereTasks = " and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') between '".date("Y-m-d 00:00:00", strtotime("monday this week"))."' AND '".date("Y-m-d 23:59:59", strtotime("sunday this week"))."'";
break;
}
case 'dates' : {
$onDate = $_POST['onDate'];
//if(empty($onDate)) $onDate = '1970-01-01 00:00:00';
$offDate = $_POST['offDate'];
if (empty($offDate)) {
$offDate = date('Y-m-d 23:59:59');
}
$startDate = date("Y-m-d 00:00:00", strtotime($onDate));
$endDate = date("Y-m-d 23:59:59", strtotime($offDate));
$whereTasks = " and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') between '".date("Y-m-d 00:00:00", strtotime($onDate))."' AND '".date("Y-m-d 23:59:59", strtotime($offDate))."'";
break;
}
case 'year' : {
$startDate = date('Y') . "-01-01 00:00:00";
$endDate = date('Y') . "-12-31 23:59:59";
$whereTasks = " and DATE_FORMAT(schedule_date, '%Y-%m-%d %H:%i:%s') between '".date('Y')."-01-01 00:00:00' AND '".date('Y')."-12-31 23:59:59'";
break;
}
}*/
//var_dump($dates);
$startDate = $dates['dateStart'];
$endDate = $dates['dateEnd'];
$date_between = "between '" . $dates['dateStart'] . "' AND '" . $dates['dateEnd'] . "'";
$bd_piriod = " AND `date_add` between '{$dates['dateStart']}' AND '{$dates['dateEnd']}'";
$bd_piriod_objects = " AND `date_really_add` between '{$dates['dateStart']}' AND '{$dates['dateEnd']}'";
$date_between = $dates['between'];
$whereTasks = $dates['whereTasks'];
$all_pages = 0;
$db = new MysqlPdo(hstsph, null, null, null, true, '9306');
// Определяем текущего пользователя
$user = new User;
$user->get($_SESSION['id']);
$user->checkPermissions();
if ($post['type'] == 'added') {
$objectIds = array();
$total = 0;
$sqlS = "SELECT id FROM objects, objects_delta WHERE id_add_user in (" . implode(', ', $usersIdReal) . ") LIMIT 1000000 OPTION max_matches=1000000";
$rezS = $db->query($sqlS);
while($rS = $db->fetch_assoc($rezS)) {
$objectIds[] = $rS['id'];
}
$sqlAddedObjCount = "SELECT id FROM objects WHERE id in (".implode(',', $objectIds).") $bd_piriod_objects ORDER BY objects.id ";
// echo $sqlAddedObjCount;
// die();
$objectIds = array();
$rezAddedObjCount = mysql_query($sqlAddedObjCount);
while($r_rezAddedObjCount = mysql_fetch_array($rezAddedObjCount)){
$objectIds[] = $r_rezAddedObjCount[0];
$total++;
}
$all_pages = ceil($total/$one_page_size);
$sqlAddedObj = "SELECT objects.*, rayon.rayon, DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') as date_add, DATE_FORMAT(objects.date_really_add,'%d.%m.%Y %H:%i') as date_really_add
FROM objects LEFT JOIN rayon on objects.rayon = rayon.id WHERE objects.id in (" .implode(',', $objectIds).") ORDER BY objects.id " . $limit;
//echo $sqlAddedObj;
$query = mysql_query($sqlAddedObj);
}
if ($post['type'] == 'advInPeriod') {
$sqlAdvInPeriodObjCount = "SELECT * FROM objects
WHERE id IN (SELECT DISTINCT object_id FROM object_publish_statistic WHERE on_moderation = 0
AND user_owner_id IN (" . implode(', ', $usersIdReal) . ")
AND publish_start_date <= '$endDate'
AND (publish_end_date >= '$startDate'
OR publish_end_date IS NULL
OR publish_end_date = '0000-00-00'
))
ORDER BY objects.id ";
$rezAdvInPeriodObjCount = mysql_query($sqlAdvInPeriodObjCount);
$total = mysql_num_rows($rezAdvInPeriodObjCount);
$all_pages = ceil($total/$one_page_size);
$sqlAdvInPeriodObj = "SELECT objects.*,
rayon.rayon, DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') AS date_add,
DATE_FORMAT(objects.date_really_add,'%d.%m.%Y %H:%i') AS date_really_add
FROM objects
LEFT JOIN rayon ON objects.rayon = rayon.id
WHERE objects.id IN (SELECT DISTINCT object_id FROM object_publish_statistic
WHERE on_moderation = 0
AND user_owner_id IN (" . implode(', ', $usersIdReal) . ")
AND publish_start_date <= '$endDate'
AND (publish_end_date >= '$startDate'
OR publish_end_date IS NULL
OR publish_end_date = '0000-00-00'
OR publish_end_date = '0000-00-00 00:00:00'
))";
$sqlAdvInPeriodObj .= " ORDER BY objects.id " . $limit;
$query = mysql_query($sqlAdvInPeriodObj);
}
if ($post['type'] == 'advBeforePeriod') {
$sqlAdvBeforePeriodObjCount = "SELECT objects.id FROM objects WHERE objects.id in (SELECT DISTINCT object_id FROM object_publish_statistic WHERE on_moderation = 0 AND user_owner_id in (" . implode(', ', $usersIdReal) . ") and
publish_start_date <= '$startDate' AND (publish_end_date >= '$startDate' OR publish_end_date IS NULL OR publish_end_date = '0000-00-00' OR publish_end_date = '0000-00-00 00:00:00')) ORDER BY objects.id ";
$rezAdvBeforePeriodObjCount = mysql_query($sqlAdvBeforePeriodObjCount);
$total = mysql_num_rows($rezAdvBeforePeriodObjCount);
$all_pages = ceil($total/$one_page_size);
$sqlAdvBeforePeriodObj = "SELECT objects.*,
rayon.rayon,
DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') AS date_add,
DATE_FORMAT(objects.date_really_add,'%d.%m.%Y %H:%i') AS date_really_add
FROM objects
LEFT JOIN rayon ON objects.rayon = rayon.id
WHERE objects.id IN (
SELECT DISTINCT object_id
FROM object_publish_statistic
WHERE on_moderation = 0 AND user_owner_id IN (" . implode(', ', $usersIdReal) . ") AND
publish_start_date <= '$startDate' AND (publish_end_date >= '$startDate' OR publish_end_date IS NULL OR publish_end_date = '0000-00-00' OR publish_end_date = '0000-00-00 00:00:00')
)";
$sqlAdvBeforePeriodObj .= " ORDER BY objects.id " . $limit;
$query = mysql_query($sqlAdvBeforePeriodObj);
}
if ($post['type'] == 'statsNotAdvInPeriod') {
/* $sqlNotAdvInPeriodObjCount = "SELECT objects.id FROM objects WHERE $bd_usl_addUsers $bd_piriod_objects and 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(', ', $usersIdReal) . ") and
(`publish_start_date` $date_between OR '$startDate' between publish_start_date and publish_end_date)) and $bd_usl_addUsers $bd_piriod_objects) ORDER BY objects.id ";
*/
$sqlNotAdvInPeriodObjCount = "SELECT objects.id FROM objects WHERE objects.id not in
(SELECT DISTINCT object_id FROM object_publish_statistic WHERE on_moderation = 0 AND user_owner_id in (" . implode(', ', $usersIdReal) . ")
and publish_start_date <= '$endDate' AND (publish_end_date >= '$startDate' OR publish_end_date IS NULL OR publish_end_date = '0000-00-00' OR publish_end_date = '0000-00-00 00:00:00'))
and objects.id_add_user in (" . implode(', ', $usersIdReal) . ")";
$rezNotAdvInPeriodObjCount = mysql_query($sqlNotAdvInPeriodObjCount);
$total = mysql_num_rows($rezNotAdvInPeriodObjCount);
$all_pages = ceil($total/$one_page_size);
$sqlNotAdvInPeriodObj = "SELECT objects.*,
rayon.rayon,
DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') AS date_add,
DATE_FORMAT(objects.date_really_add,'%d.%m.%Y %H:%i') AS date_really_add
FROM objects
LEFT JOIN rayon ON objects.rayon = rayon.id
WHERE objects.id not in
(SELECT DISTINCT object_id FROM object_publish_statistic WHERE on_moderation = 0 AND user_owner_id in (" . implode(', ', $usersIdReal) . ")
and publish_start_date <= '$endDate' AND (publish_end_date >= '$startDate' OR publish_end_date IS NULL OR publish_end_date = '0000-00-00' OR publish_end_date = '0000-00-00 00:00:00'))
and objects.id_add_user in (" . implode(', ', $usersIdReal) . ")";
$sqlNotAdvInPeriodObj .= " ORDER BY objects.id " . $limit;
$query = mysql_query($sqlNotAdvInPeriodObj);
}
if ($post['type'] == 'statsAdvCost') {
$sql = "SELECT DISTINCT objects.id
FROM objects
WHERE objects.id IN (
SELECT object_id
FROM object_publish_statistic
WHERE on_moderation = 0 AND
user_owner_id = $userId AND
`publish_start_date` $date_between AND price > 0
)
ORDER BY objects.id ";
$rezAdvCostObjCount = mysql_query($sql);
$total = mysql_num_rows($rezAdvCostObjCount);
$all_pages = ceil($total/$one_page_size);
$ids = [];
while ($rez = mysql_fetch_assoc($rezAdvCostObjCount)) {
$ids[] = $rez['id'];
}
// Основная статистика
$sqlAdvCostObj = "SELECT DISTINCT objects.*,
rayon.rayon,
DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') AS date_add,
DATE_FORMAT(objects.date_really_add,'%d.%m.%Y %H:%i') AS date_really_add
FROM objects
LEFT JOIN rayon ON objects.rayon = rayon.id
WHERE objects.id IN (" . implode(', ', $ids) . ")";
// (
// SELECT object_id
// FROM object_publish_statistic
// WHERE on_moderation = 0 AND user_owner_id IN (" . implode(', ', $usersIdReal) . ") AND
// created_at $date_between
// )";
$sqlAdvCostObj .= " ORDER BY objects.id " . $limit;
$query = mysql_query($sqlAdvCostObj);
}
if ($post['type'] == 'statsRequests') {
$start_date = $dates['dateStart'];
$end_date = $dates['dateEnd'];
//$bd_piriod_req = str_replace('date_add', 'created_at', $bd_piriod);
// $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%')";
//$sqlRequestObjCount = "SELECT objects.id FROM objects WHERE $bd_usl_addUsers and objects.id in (SELECT object_id FROM requisitions WHERE 1 $who_work_req $bd_piriod_req and object_id > 0 and type_id=4) ORDER BY objects.id ";
$type_id_condition = "(type_id = 4 OR type_id IN (SELECT id FROM requisitions_type WHERE heir = 4 AND agency_id = {$user->agencyId}))";
$sqlRequestObjCount = "SELECT DISTINCT o.id
FROM objects o
INNER JOIN requisitions r ON o.id = r.object_id
WHERE o.id_add_user IN (" . implode(', ', $usersIdReal) . ")
AND r.created_at BETWEEN '$start_date' AND '$end_date'
AND r.object_id > 0
AND r.deleted = 0
AND $type_id_condition
ORDER BY o.id";
//echo $sqlRequestObjCount;
$rezRequestObjCount = mysql_query($sqlRequestObjCount);
$total = mysql_num_rows($rezRequestObjCount);
$all_pages = ceil($total/$one_page_size);
$sqlRequestObj = "SELECT o.*,
rayon.rayon,
DATE_FORMAT(o.date_add,'%d.%m.%Y %H:%i') as date_add,
DATE_FORMAT(o.date_really_add,'%d.%m.%Y %H:%i') as date_really_add
FROM objects o
LEFT JOIN rayon rayon ON o.rayon = rayon.id
INNER JOIN requisitions r ON o.id = r.object_id
WHERE o.id_add_user IN (" . implode(', ', $usersIdReal) . ")
AND r.created_at BETWEEN '$start_date' AND '$end_date'
AND r.object_id > 0
AND r.deleted = 0
AND $type_id_condition
GROUP BY o.id
ORDER BY o.id " . $limit;
//echo $sqlRequestObj;
$query = mysql_query($sqlRequestObj);
}
if ($post['type'] == 'statsPresentations') {
$sqlPresentationsObjCount = "SELECT objects.id FROM objects WHERE objects.id in (SELECT id_object FROM sended_pdf WHERE id_object in
(SELECT id FROM objects WHERE `date_add` <= '$endDate' AND id_add_user in (" . implode(', ', $usersId) . ")) and id_agent in (" . implode(', ', $usersIdReal) . ") and date_send $date_between) ORDER BY objects.id ";
$rezPresentationsObjCount = mysql_query($sqlPresentationsObjCount);
$total = mysql_num_rows($rezPresentationsObjCount);
$all_pages = ceil($total/$one_page_size);
$sqlPresentationsObj = "SELECT objects.*, rayon.rayon, DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') as date_add, DATE_FORMAT(objects.date_really_add,'%d.%m.%Y %H:%i') as date_really_add
FROM objects LEFT JOIN rayon on objects.rayon = rayon.id WHERE objects.id in
(SELECT id_object FROM sended_pdf WHERE id_object in (SELECT id FROM objects WHERE `date_add` <= '$endDate' and $bd_usl_addUsers) and id_agent in (" . implode(', ', $usersIdReal) . ") and date_send $date_between) ORDER BY objects.id " . $limit;
$query = mysql_query($sqlPresentationsObj);
}
if ($post['type'] == 'statsMeets') {
$sqlMeetsObjCount = "SELECT objects.id FROM objects WHERE objects.id in (SELECT object_id FROM user_object_events WHERE user_id in (". implode(', ', $usersIdReal).") and `type` = 'show' and calendar_view = 1
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")."')";
$rezMeetsObjCount = mysql_query($sqlMeetsObjCount);
$total = mysql_num_rows($rezMeetsObjCount);
$all_pages = ceil($total/$one_page_size);
$sqlMeetsObj = "SELECT objects.*, rayon.rayon, DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') as date_add, DATE_FORMAT(objects.date_really_add,'%d.%m.%Y %H:%i') as date_really_add
FROM objects LEFT JOIN rayon on objects.rayon = rayon.id WHERE objects.id in
(SELECT object_id FROM user_object_events WHERE user_id in (" . implode(', ', $usersIdReal).") and `type` = 'show' and calendar_view = 1
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")."') ORDER BY objects.id " . $limit;
$query = mysql_query($sqlMeetsObj);
}
if ($post['type'] == 'statsTaskNew') {
$sqlTaskNewObjCount = "SELECT objects.id FROM objects WHERE objects.id in (SELECT object_id FROM user_object_events WHERE user_id in (". implode(', ', $usersIdReal).") 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")."')";
$rezTaskNewObjCount = mysql_query($sqlTaskNewObjCount);
$total = mysql_num_rows($rezTaskNewObjCount);
$all_pages = ceil($total/$one_page_size);
$sqlTaskNewObj = "SELECT objects.*, rayon.rayon, DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') as date_add, DATE_FORMAT(objects.date_really_add,'%d.%m.%Y %H:%i') as date_really_add
FROM objects LEFT JOIN rayon on objects.rayon = rayon.id WHERE objects.id in
(SELECT object_id FROM user_object_events WHERE user_id in (" . implode(', ', $usersIdReal).") 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")."') ORDER BY objects.id " . $limit;
$query = mysql_query($sqlTaskNewObj);
}
if ($post['type'] == 'statsTaskOld') {
$sqlTaskOldObjCount = "SELECT objects.id FROM objects WHERE objects.id in (SELECT object_id FROM user_object_events WHERE user_id in (". implode(', ', $usersIdReal).") 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")."')";
$rezTaskOldObjCount = mysql_query($sqlTaskOldObjCount);
$total = mysql_num_rows($rezTaskOldObjCount);
$all_pages = ceil($total/$one_page_size);
$sqlTaskOldObj = "SELECT objects.*, rayon.rayon, DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') as date_add, DATE_FORMAT(objects.date_really_add,'%d.%m.%Y %H:%i') as date_really_add
FROM objects LEFT JOIN rayon on objects.rayon = rayon.id WHERE objects.id in
(SELECT object_id FROM user_object_events WHERE user_id in (" . implode(', ', $usersIdReal).") 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")."') ORDER BY objects.id " . $limit;
$query = mysql_query($sqlTaskOldObj);
}
if ($post['type'] == 'statsTaskSlung') {
$sqlTaskSlungObjCount = "SELECT objects.id FROM objects WHERE objects.id in (SELECT object_id FROM user_object_events
WHERE user_id in (". implode(', ', $usersIdReal).") and calendar_view = 1 and schedule_date is not null $whereTasks)";
$rezTaskSlungObjCount = mysql_query($sqlTaskSlungObjCount);
$total = mysql_num_rows($rezTaskSlungObjCount);
$all_pages = ceil($total/$one_page_size);
$sqlTaskSlungObj = "SELECT objects.*, rayon.rayon, DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') as date_add, DATE_FORMAT(objects.date_really_add,'%d.%m.%Y %H:%i') as date_really_add
FROM objects LEFT JOIN rayon on objects.rayon = rayon.id WHERE objects.id in
(SELECT object_id FROM user_object_events WHERE user_id in (" . implode(', ', $usersIdReal).") and calendar_view = 1 and schedule_date is not null $whereTasks) ORDER BY objects.id " . $limit;
$query = mysql_query($sqlTaskSlungObj);
}
if(isset($query)) {
?>
<div class="crm__table" style="margin-bottom: 40px;">
<link rel="stylesheet" href="/css/bootstrap.css?v=3" type="text/css">
<link rel="stylesheet" href="/css/jquery.bootgrid.css" type="text/css">
<div class="grid_table">
<div id="export_stat_obj" data-type="<?=$post['type']?>" data-userid="<?=$post['userId']?>" style="margin-left: 20px; margin-top: 3px; " class="crm__new-client">
<a style="padding: 3px 15px 6px; background: linear-gradient(to bottom, #fff, #f5f5f5); cursor: pointer; border: 1px solid #d0d0d0;" href="javascript:{}" class="jw__g-button">Экспорт в Excel</a>
</div>
<div id="export_stat_obj_show" style="padding: 15px 0 0 50px; display:none;">Подождите...</div>
<table id="object_list_table" class="table table-condensed table-hover table-striped">
<thead>
<tr>
<th data-column-id="id" data-identifier="true">ID объекта</th>
<th data-formatter="preview" data-column-id="preview">Превью</th>
<th data-column-id="type">Тип рынка</th>
<th data-column-id="objType">Тип квартиры/помещения</th>
<th data-column-id="metro">Район/Метро</th>
<th data-column-id="address">Адрес</th>
<th data-column-id="allArea">Метраж общий</th>
<th data-column-id="liveArea">Метраж жилой</th>
<th data-column-id="kitchenArea">Метраж кухни</th>
<th data-column-id="floor">Этаж/Этажность</th>
<th data-column-id="price">Цена</th>
<th data-column-id="prep_price">Предварительная цена</th>
<th data-column-id="start_price">Начальная цена</th>
<th data-column-id="fact_price">Фактическая цена</th>
<th data-column-id="manager">Ответственный менеджер</th>
<th data-column-id="agent">Ответственный агент</th>
<th data-column-id="client" data-formatter="clients">Клиент - собственник</th>
<th data-column-id="createDate">Дата создания</th>
<th data-column-id="updateDate">Дата последнего изменения</th>
<th data-column-id="requests" data-formatter="request">Заявки по объекту</th>
<th data-column-id="presentations">Кол-во отправленных презентаций</th>
<th data-column-id="meets">Встречи на объекте</th>
<th data-column-id="advPacks">Реклама</th>
<th data-column-id="advStart">Дата начала рекламы</th>
<th data-column-id="advEnd">Дата окончания рекламы</th>
<th data-column-id="daysCount">Кол-во дней в рекламе</th>
<th data-column-id="adv_price" data-formatter="adv_price_formatter">Потрачено на рекламу</th>
</tr>
<tr>
</tr>
</thead>
<tbody>
<?php
//выводим таблицу с объектами
while ($obj = mysql_fetch_assoc($query)) {
$sqlPhotoInfo = "SELECT oop.sort_order, p.photo FROM objects_object_photo oop, object_photo p WHERE p.id = oop.object_photo_id AND oop.object_id = $obj[id] ORDER BY oop.sort_order";
$rezPhotoInfo = mysql_query($sqlPhotoInfo);
if (mysql_num_rows($rezPhotoInfo) > 0) {
while ($photoInfo = mysql_fetch_assoc($rezPhotoInfo)) {
$obj['photo' . $photoInfo['sort_order']] = $photoInfo['photo'];
}
}
$type = 'Объект';
switch ($obj['type']) {
case 1:
if ($obj['komnat'] == 1 && $obj['studio_flag']) {
$type = "Квартира-студия";
} else {
$type = "$obj[komnat]-комнатная квартира";
}
break;
case 2:
$type = "Комната в $obj[komnat]-комнатной квартире";
break;
case 3:
$type = "$obj[komnat]-комнатный дом";
break;
case 4:
if ($obj['komnat'] == 0) {
$type = "Помещение";
} else {
$type = "$obj[komnat]-комнатное помещение";
}
break;
case 5:
$type = "Часть дома";
break;
case 6:
$type = "Комплекс";
break;
case 7:
$type = "Участок";
break;
default:
$type = "$obj[komnat]-комнатная квартира";
}
$mtr = array();
$sql = "SELECT metro.metro FROM metro, sp_metro WHERE sp_metro.id_metro = metro.id AND sp_metro.id_obj = $obj[id]";
$result = mysql_query($sql);
while ($m = mysql_fetch_row($result)) {
$mtr[] = $m[0];
}
$metroRayon = '';
if ($obj['rayon']) {
$metroRayon .= $obj['rayon'] . ' район';
}
if (count($mtr) > 0) {
$metroRayon .= ' / ' . implode(", ", $mtr);
}
$address = $obj['adres'];
if ($obj['dom']) {
$address = $address . ", " . $obj['dom'];
}
if ($obj['korpus']) {
$address = $address . ", корпус " . $obj['korpus'];
}
if ($obj['litera']) {
$address = $address . ", литера " . $obj['litera'];
}
$etazh = '';
if ($obj['type'] == 3) {
if ($obj['etazh_iz'] * 1 != 0) {
$etazh = $obj['etazh_iz'] . " этажей";
}
}
$etaz_first_types = ["Тип первого этажа", "Подвал", "Цоколь", "Бельэтаж"];
if ($obj['etazh'] * 1 != 0) {
$etazh = $obj['etazh'] . ' этаж';
if ((int)$obj['etazh'] == 1 && !empty($obj['etaz_first_type'])) {
$etazh = $etaz_first_types[$obj['etaz_first_type']];
}
if ($obj['etazh_iz'] * 1 != 0) {
$etazh .= "&nbsp;из&nbsp;" . $obj['etazh_iz'];
}
}
list($dateAdd, $timeAdd) = explode(" ", $obj['date_add']);
list($d, $m, $y) = explode(".", $dateAdd);
$date_add = $d . " " . getRusMonth($m) . " " . $y;
$updateDate = $date_add . "&nbsp;" . $timeAdd;
list($dateAdd, $timeAdd) = explode(" ", $obj['date_really_add']);
list($d, $m, $y) = explode(".", $dateAdd);
$date_add = $d . " " . getRusMonth($m) . " " . $y;
$createDate = $date_add . "&nbsp;" . $timeAdd;
$agentData = mysql_fetch_assoc(mysql_query("SELECT first_name, fio, last_name, middle_name, id_manager FROM users WHERE id=" . $userId));
$agentData['fio'] = trim($agentData['last_name'] . ' ' . $agentData['first_name'] . ' ' . $agentData['middle_name']);
$managerData = [];
if (isset($agentData['id_manager']) && $agentData['id_manager']) {
$managerData = mysql_fetch_assoc(mysql_query("SELECT first_name, last_name, middle_name, id_manager FROM users WHERE id=" . $agentData['id_manager']));
$managerData['fio'] = trim($managerData['last_name'] . ' ' . $managerData['first_name'] . ' ' . $managerData['middle_name']);
} else {
$managerData['fio'] = $agentData['fio'];
}
$clients = '[';
$clientObjIds = [];
$sql_cl_obj = "SELECT client_id FROM client_objects WHERE object_id = {$obj['id']}";
$q_cl_obj = mysql_query($sql_cl_obj);
while($r_cl_obj = mysql_fetch_assoc($q_cl_obj)){
$clientObjIds[] = $r_cl_obj['client_id'];
}
$sql_clients = "SELECT `id`, `fio`, `email` FROM `clients` WHERE id in (".implode(',', $clientObjIds).")";
$q_client = mysql_query($sql_clients);
if (mysql_num_rows($q_client) > 0) {
$clCount = 0;
while ($client = mysql_fetch_assoc($q_client)) {
mask_client_contacts_inplace($client);
if ($clCount > 0) {
$clients .= ',';
}
$clients = $clients . '{"fio": "' . htmlspecialchars($client['fio'], ENT_QUOTES, 'UTF-8') . '", "id" : "' . $client['id'] . '"}';
$clCount++;
}
}
$clients .= ']';
// $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 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 doers like '%&quot;".$user_id."&quot;:1%')";
$bd_piriod_req = str_replace('date_add', 'created_at', $bd_piriod);
$sqlRequest = "SELECT id FROM requisitions WHERE 1 $bd_piriod_req and object_id = $obj[id] AND deleted = 0 and (type_id = 4 or type_id in (SELECT id FROM requisitions_type WHERE heir = 4 AND agency_id = {$user->agencyId}))";
$qRequest = mysql_query($sqlRequest);
// echo $sqlRequest;
$requestsCount = mysql_num_rows($qRequest);
$sqlPresentation = "SELECT id FROM sended_pdf WHERE id_object = $obj[id] and date_send $date_between";
$rezPresentation = mysql_query($sqlPresentation);
$presentationsCount = mysql_num_rows($rezPresentation);
$sqlMeet = "SELECT id FROM user_object_events WHERE object_id = $obj[id] and `type` = 'show' and calendar_view = 1
and schedule_date is not null ";
$rezMeet = mysql_query($sqlMeet);
$meetCount = mysql_num_rows($rezMeet);
$packs = '';
$sqlAdvInPeriod = "SELECT id, name FROM `advertising_package` where id in (SELECT advertising_package_id from advertising_package_object_publish where id in (SELECT DISTINCT advertising_package_object_publish_id FROM object_publish_statistic WHERE on_moderation = 0 AND user_owner_id in (" . implode(', ', $usersIdReal) . ") and
(`publish_start_date` $date_between OR '$startDate' between publish_start_date and publish_end_date) and object_id=$obj[id]))";
$rezAdvInPeriod = mysql_query($sqlAdvInPeriod);
if (mysql_num_rows($rezAdvInPeriod) > 0) {
while ($pack = mysql_fetch_assoc($rezAdvInPeriod)) {
$packs = $packs . $pack['name'] . "; ";
}
}
$minDate = '';
$maxDate = '';
$sumPrice = 0;
$periods = [];
$periodsCount = 0;
$usersWhere = $userId == $_SESSION['id'] ? "`user_owner_id` IN (" . implode(', ', $usersId) . ")" : "user_owner_id = '$userId'";
// $usersWhere = "user_owner_id = '$userId'";
$sqlAdvCosts = "SELECT
`object_publish_statistic`.id,
`publish_start_date`,
`publish_end_date`,
`price`,
`destination`,
`created_at`,
`days_count`
FROM `object_publish_statistic`
WHERE $usersWhere AND
(`publish_start_date` $date_between) AND
`on_moderation` = 0 AND
`object_id` = '$obj[id]'";
$rezAdvCosts = mysql_query($sqlAdvCosts);
while ($statRec = mysql_fetch_assoc($rezAdvCosts)) {
if (!$minDate) {
$minDate = $statRec['publish_start_date'];
} else {
if (strtotime($minDate) > strtotime($statRec['publish_start_date'])) {
$minDate = $statRec['publish_start_date'];
}
}
if ($statRec['days_count'] != 5000) {
if (!$maxDate) {
$maxDate = $statRec['publish_end_date'];
} else {
if (strtotime($maxDate) < strtotime($statRec['publish_end_date'])) {
$maxDate = $statRec['publish_end_date'];
}
}
}
if (
(strtotime($statRec['publish_start_date']) >= strtotime($startDate) && strtotime($statRec['publish_start_date']) <= strtotime($endDate)) ||
(strtotime($statRec['publish_end_date']) >= strtotime($startDate) && strtotime($statRec['publish_end_date']) <= strtotime($endDate)) ||
(strtotime($startDate) >= strtotime($statRec['publish_start_date']) && strtotime($statRec['publish_end_date']) <= strtotime($statRec['publish_end_date']))
) {
$sumPrice += $statRec['price'];
}
if ($periodsCount == 0) {
$p['publish_start_date'] = $statRec['publish_start_date'];
$p['publish_end_date'] = $statRec['days_count'] != 5000 ? $statRec['publish_end_date'] : '-';
$periods[] = $p;
$periodsCount++;
} else {
$found = false;
foreach ($periods as $key => $period) {
if ($period['publish_start_date'] === $statRec['publish_start_date'] && $period['publish_end_date'] === $statRec['publish_end_date'] ){
//тот же период, ничего не делаем
$found = true;
}
}
if (!$found) {
$p['publish_start_date'] = $statRec['publish_start_date'];
$p['publish_end_date'] = $statRec['days_count'] != 5000 ? $statRec['publish_end_date'] : '-';
$periods[] = $p;
$periodsCount++;
}
}
}
$days = [];
foreach ($periods as $key => $period) {
if ($period['publish_end_date'] != '-') {
$startStr = date("Y-m-d", strtotime($period['publish_start_date']));
$endStr = date("Y-m-d", strtotime($period['publish_end_date']));
$startAsDate = strtotime(date("Y-m-d", strtotime($period['publish_start_date'])));
$endAsDate = strtotime(date("Y-m-d", strtotime($period['publish_end_date'])));
$foundStart = false;
$foundEnd = false;
foreach ($days as $dayKey => $day) {
if ($day === $startStr) {
$foundStart = true;
}
if ($day === $endStr) {
$foundEnd = true;
}
}
if (!$foundStart) {
$days[] = $startStr;
}
if (!$foundEnd) {
$days[] = $endStr;
}
while (true) {
if ($startStr === $endStr) {
break;
}
if (strtotime($startStr) > strtotime($endStr)) {
break;
}
$startStr = date('Y-m-d', strtotime($startStr . ' + 1 days'));
$found = false;
foreach ($days as $dayKey => $day) {
if ($day === $startStr) {
$found = true;
}
}
if (!$found) {
$days[] = $startStr;
}
}
}
}
$photo = "";
for ($num = 1; $num <= 20; $num++) {
if ($obj['photo' . $num]) {
if(stripos($obj['photo'.$num],"http://") === false && stripos($obj['photo'.$num], "https://") === false) {
$obj['photo'.$num] = "/photos/".$obj['photo'.$num];
}
if($obj['photo'.$num]) {
$photo = $obj['photo'.$num];
break;
}
}
}
$agency_id = $user->agencyId;
$sql = "SELECT *
FROM `object_prices`
WHERE `object_id`='$obj[id]' AND
`agency_id`='$agency_id' LIMIT 1";
if ($query_stat = mysql_query($sql)) {
$row_stat = mysql_fetch_assoc($query_stat);
if (!is_null($row_stat['prep_price']))
$obj['prep_price'] = $row_stat['prep_price'];
else
$obj['prep_price'] = '-';
if (!is_null($row_stat['start_price']))
$obj['start_price'] = $row_stat['start_price'];
else
$obj['start_price'] = '-';
if (!is_null($row_stat['fact_price']))
$obj['fact_price'] = $row_stat['fact_price'];
else
$obj['fact_price'] = '-';
}
$countDays = count($days);
if (!empty($minDate) && !empty($maxDate)) {
$countDays = intval(round(abs(strtotime($minDate) - strtotime($maxDate)) / 86400));
} else if (!empty($minDate)) {
if (date("d.m.Y", strtotime($minDate)) == date("d.m.Y"))
$countDays = 1;
else
$countDays = intval(round(abs(strtotime($minDate) - strtotime(date("d.m.Y"))) / 86400));
}
?>
<tr>
<td><?= $obj['id'] ?></td>
<td><?php echo $photo;?></td>
<td><?php echo $obj['operation_type'] == 1 ? "Продажа" : "Аренда";?></td>
<td><?php echo $type;?></td>
<td><?php echo $metroRayon;?></td>
<td><?php echo $address;?></td>
<td><?php echo $obj['type'] == 7 ? $obj['land_area'] * 1 : $obj['ploshad'] * 1;?></td>
<td><?php echo $obj['ploshad_komn'];?></td>
<td><?php echo $obj['ploshad_k'] * 1;?></td>
<td><?php echo $etazh;?></td>
<td><?php echo number_format($obj['stoim'], 0, ',', ' ');?></td>
<td><?php echo number_format($obj['prep_price'], 0, ',', ' ');?></td>
<td><?php echo number_format($obj['start_price'], 0, ',', ' ');?></td>
<td><?php echo number_format($obj['fact_price'], 0, ',', ' ');?></td>
<td><?php echo $managerData['fio'];?></td>
<td><?php echo $agentData['fio'];?></td>
<td><?php echo $clients;?></td>
<td><?php echo $createDate;?></td>
<td><?php echo $updateDate;?></td>
<td><?php echo $requestsCount;?></td>
<td><?php echo $presentationsCount;?></td>
<td><?php echo $meetCount;?></td>
<td><?php echo $packs;?></td>
<td><?php echo $minDate ? date("d.m.Y", strtotime($minDate)) : '';?></td>
<td><?php echo $maxDate ? date("d.m.Y", strtotime($maxDate)) : '';?></td>
<td><?php echo $countDays; ?></td>
<td><?php echo number_format($sumPrice, 2, '.', ' ');?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<script type="text/javascript" src="/js/bootstrap.js"></script>
<script type="text/javascript" src="/js/jquery.bootgrid.js"></script>
<?php
if ($all_pages > 1) {
echo "<div class='f-system_pagination' style='margin-bottom: 50px !important;'><center><ul class='pagination' style='padding-top: 1px !important;'>";
num_of_pages_for_ajax_with_class($page, $all_pages, "objects-table");
echo "</ul></center></div>";
}
?>
</div>
<script type="text/javascript">
$("#object_list_table").bootgrid({
rowCount: 20,
sorting: false,
ajax: false,
selection: true,
rowSelect: true,
keepSelection: true,
templates: {
search: ""
},
css: {
selected: 'row-selected'
},
formatters: {
"adv_price_formatter" : function(column, row) {
if (row.adv_price && row.adv_price.split(" ").join("") > 0) {
return '<a href="javascript:void();" class="openAdvObjectStats" data-id="' + row.id + '"><span>' + row.adv_price + '</span></a>';
} else {
return row.adv_price;
}
},
"clients": function(column, row) {
var result = JSON.parse(row.client);
var html = '';
if (result && result.length > 0) {
for (var i = 0; i < result.length; i++) {
if (html) {
html = html + '<br/>';
}
html = html + '<a href="javascript:void();" class="openClient" data-id="' + result[i].id + '"><span>' + result[i].fio + '</span></a>';
}
}
return html;
},
"request" : function(column, row) {
if (row.requests) {
return '<a data-id="' + row.id + '" data-period-start="<?= $startDate ?>" data-period-end="<?= $endDate ?>" class="openListReq" href="javascript:{}"><span>' + row.requests + '</span></a>';
} else {
return '';
}
},
"preview": function(column, row) {
if (row.preview) {
return '<image style="width: 40px; height: 40px;" src="' + row.preview + '"></image>';
} else {
return '';
}
}
}
}).on("loaded.rs.jquery.bootgrid", function (e) {
$(".openClient").click(function(e) {
e.preventDefault();
e.stopPropagation();
var id = $(this).attr('data-id');
editClientNew(id, null);
return false;
});
$(".openAdvObjectStats").click(function(e) {
e.preventDefault();
e.stopPropagation();
var id = $(this).attr('data-id');
openObjectAdvPlacesStatsWindow(id, null);
return false;
});
$(".openListReq").click(function(e) {
e.preventDefault();
e.stopPropagation();
var obj_id = 0;
var periodStart = "<?=$startDate?>";
var periodEnd = "<?=$endDate?>";
var formattedStart = periodStart.substring(0, 10).split('-').reverse().join('.');
var formattedEnd = periodEnd.substring(0, 10).split('-').reverse().join('.');
if($(this).attr('data-id')){
obj_id = parseInt($(this).attr('data-id'));
//console.log(obj_id);
requisitions_object.openForm(obj_id, formattedStart, formattedEnd);
}
return false;
});
});
</script>
<?php
}