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

491 lines
16 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
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
//ini_set('display_errors', 1);
//error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
echo '<ul class="object__list">';
if ($_SESSION['id'] && isset($_POST['objId'])) {
$numOnPage = 10;
$view = array();
$favour = array();
$sql = "SELECT * FROM views WHERE id_user = $_SESSION[id]";
$rez = mysql_query($sql);
while($f=mysql_fetch_assoc($rez)) $view[] = $f['id_obj'];
$sql = "SELECT * FROM favor WHERE id_user = $_SESSION[id]";
$rez = mysql_query($sql);
while($f=mysql_fetch_assoc($rez)) $favour[] = $f['id_obj'];
$agencyId = User::getAgencyIdForUser($_SESSION['id']);
$usersIds = User::getAllAgencyUsers($agencyId);
$usersIds[] = $_SESSION['id'];
$usersIds = array_unique($usersIds);
$notes_bd_usl = "created_by IN (" . implode(",", $usersIds) . ")";
$cabinetObjCompetitors = [];
$db = new MysqlPdo(hstsph, null, null, null, true, '9306');
$post = clearInputData($_POST);
$pageNumber = 1;
if (isset($post['page'])) {
$pageNumber = trim($post['page']);
}
if (!$pageNumber) {
$pageNumber = 1;
}
$objectId = $objectIdForLowPrice = trim($post['objId']);
$forCabinet = isset($post['cabinet']) && $post['cabinet'] == 1;
//если у нас форма для кабинета, то тащим все, что было выбрано раньше для отметка как выбранного
if ($forCabinet) {
$cabinetObjCompetitors[] = ObjectCabinet::getCabinetObjCompetitorsAsObjectIds($mdb, $objectId);
}
$areaFrom = trim($post['areaFrom']);
$areaTo = trim($post['areaTo']);
$kitchenAreaFrom = trim($post['kitchenAreaFrom']);
$kitchenAreaTo = trim($post['kitchenAreaTo']);
$yearFrom = trim($post['yearFrom']);
$yearTo = trim($post['yearTo']);
$kvType = $post['kvType'];
$commType = $post['commType'];
$poly1 = trim($post['poly1']);
$poly2 = trim($post['poly2']);
$poly3 = trim($post['poly3']);
$poly4 = trim($post['poly4']);
$sql = "SELECT * FROM objects WHERE id = $objectId";
$res = mysql_query($sql);
$obj = mysql_fetch_assoc($res);
$parentRegion = '2';
$parentRegionName = '';
$sqlRegion = "SELECT parent, name FROM rf_regions WHERE id=$obj[id_rf_region] or parent=$obj[id_rf_region]";
$resRegion = mysql_query($sqlRegion);
if (mysql_num_rows($resRegion) > 0) {
while($row = mysql_fetch_assoc($resRegion)){
if ($row['parent']) {
$parentRegion = $row['parent'];
}
}
}
$sqlParentRegion = "SELECT name FROM rf_regions WHERE id=$parentRegion";
$resParentRegion = mysql_query($sqlParentRegion);
if (mysql_num_rows($resParentRegion)) {
$parentReg = mysql_fetch_assoc($resParentRegion);
$parentRegionName = $parentReg['name'];
}
//ищем исключения для этого объекта и этого пользователя
$sqlExcl = "SELECT excluded_object_id FROM objects_analytic_exclude WHERE object_id = $objectId and user_id = $_SESSION[id]";
$resExcl = mysql_query($sqlExcl);
$exclIds = array();
$exclSql = "";
$komnSql = "";
$komnSqlWhere = "";
$commTypeSql = "";
if (mysql_num_rows($resExcl) > 0) {
while($row = mysql_fetch_assoc($resExcl)){
if ($row['excluded_object_id']) {
$exclIds[] = $row['excluded_object_id'];
}
}
}
if (count($exclIds)) {
$exclSql = "AND id NOT IN (" . implode(",", $exclIds) . ")";
}
$komnArray = [];
$studioFlag = false;
if ($obj['studio_flag'] > 0) {
$studioFlag = true;
$komnArray[] = "studio_flag = '1'";
}
if ($obj['type'] == 1) {
if ($kvType) {
foreach ($kvType as $key => $value) {
if ($value <= 9) {
$komnArray[] = "komnat = $value";
} else {
if ($value == 100) {
$komnArray[] = "komnat > 9";
} else {
if (!$studioFlag && $value == 1000) {
$komnArray[] = "studio_flag = '1'";
}
}
}
}
}
}
if ($obj['komnat'] && !$studioFlag && $obj['type'] != 3) {
$komnArray[] = "komnat = " . $obj['komnat'];
}
if (count($komnArray) > 0) {
$komnSql = ", (" . implode(' OR ', $komnArray) . ") AS komnCond";
$komnSqlWhere = ' AND komnCond > 0 ';
}
if ($obj['type'] == 4) {
$commArray = [];
if ($commType) {
foreach ($commType as $key => $value) {
$commArray[] = $value;
}
}
$commArray[] = $obj['type_category'];
if (count($commArray) > 0) {
if (count($commArray) == 1) {
$commTypeSql = "AND type_category=$commArray[0]";
} else {
$commTypeSql = "AND type_category in (" . implode(",", $commArray) . ")";
}
}
}
$areaSql = "";
$yearSql = "";
if ($areaFrom) {
$areaSql .= "AND ploshad >= $areaFrom ";
}
if ($areaTo) {
$areaSql .= "AND ploshad <= $areaTo ";
}
if ($yearFrom) {
$yearSql .= "AND build_year >= $yearFrom ";
}
if ($yearTo) {
$yearSql .= "AND build_year <= $yearTo ";
}
$kitchenAreaSql = "";
if ($kitchenAreaFrom) {
$kitchenAreaSql .= "AND ploshad_k >= $kitchenAreaFrom ";
}
if ($kitchenAreaTo) {
$kitchenAreaSql .= "AND ploshad_k <= $kitchenAreaTo ";
}
$resultArrayMap = array();
$data = array(
"type" => "FeatureCollection"
);
$adres_usl = " AND MATCH ('(@(id_rf_region,parent) $parentRegion)') ";
$foundIds = array();
if ($poly1) {
$sql = "SELECT id, CONTAINS(GEOPOLY2D(" . $poly1 . "),latitude,longitude) AS inside $komnSql FROM objects, objects_delta WHERE inside = 1 AND fbn_id = 0 AND
archive = 0 AND black = 0 AND moder = 0 AND id <> $obj[id] AND operation_type = $obj[operation_type] AND type=$obj[type] $kitchenAreaSql $commTypeSql $areaSql $komnSqlWhere $adres_usl $exclSql LIMIT 0, 100000 OPTION max_matches=1000000";
if ($_SESSION['id'] == 93) {
//echo $sql;
}
$res = $db->query($sql, true);
if ($db->num_rows($res) > 0) {
while ($objAddr = $db->fetch_assoc($res)) {
if (!in_array($objAddr['id'], $foundIds)) {
$foundIds[] = $objAddr['id'];
}
}
}
}
if ($poly2) {
$sql = "SELECT id, CONTAINS(GEOPOLY2D(" . $poly2 . "),latitude,longitude) AS inside $komnSql FROM objects, objects_delta WHERE inside = 1 AND fbn_id = 0 AND
archive = 0 AND black = 0 AND moder = 0 AND id <> $obj[id] AND operation_type = $obj[operation_type] AND type=$obj[type] $kitchenAreaSql $commTypeSql $areaSql $komnSqlWhere $adres_usl $exclSql LIMIT 0, 100000 OPTION max_matches=1000000";
if ($_SESSION['id'] == 93) {
//echo $sql;
}
$res = $db->query($sql, true);
if ($db->num_rows($res) > 0) {
while ($objAddr = $db->fetch_assoc($res)) {
if (!in_array($objAddr['id'], $foundIds)) {
$foundIds[] = $objAddr['id'];
}
}
}
}
if ($poly3) {
$sql = "SELECT id, CONTAINS(GEOPOLY2D(" . $poly3 . "),latitude,longitude) AS inside $komnSql FROM objects, objects_delta WHERE inside = 1 AND fbn_id = 0 AND
archive = 0 AND black = 0 AND moder = 0 AND id <> $obj[id] AND operation_type = $obj[operation_type] AND type=$obj[type] $kitchenAreaSql $commTypeSql $areaSql $komnSqlWhere $adres_usl $exclSql LIMIT 0, 100000 OPTION max_matches=1000000";
if ($_SESSION['id'] == 93) {
//echo $sql;
}
$res = $db->query($sql, true);
if ($db->num_rows($res) > 0) {
while ($objAddr = $db->fetch_assoc($res)) {
if (!in_array($objAddr['id'], $foundIds)) {
$foundIds[] = $objAddr['id'];
}
}
}
}
if ($poly4) {
$sql = "SELECT id, CONTAINS(GEOPOLY2D(" . $poly4 . "),latitude,longitude) AS inside $komnSql FROM objects, objects_delta WHERE inside = 1 AND fbn_id = 0 AND
archive = 0 AND black = 0 AND moder = 0 AND id <> $obj[id] AND operation_type = $obj[operation_type] AND type=$obj[type] $kitchenAreaSql $commTypeSql $areaSql $komnSqlWhere $adres_usl $exclSql LIMIT 0, 100000 OPTION max_matches=1000000";
if ($_SESSION['id'] == 93) {
//echo $sql;
}
$res = $db->query($sql, true);
if ($db->num_rows($res) > 0) {
while ($objAddr = $db->fetch_assoc($res)) {
if (!in_array($objAddr['id'], $foundIds)) {
$foundIds[] = $objAddr['id'];
}
}
}
}
$vsego = count($foundIds);
if ($vsego > 0) {
$asScript = true;
//подключаем расчет цен
include($_SERVER['DOCUMENT_ROOT'] . "/ajax/analytics/getAnalyticsPriceStats.php");
$from = ($pageNumber - 1) * $numOnPage;
$all_pages = ceil($vsego / $numOnPage);
$order = 'date_add';
$order_by = 'DESC';
if(isset($post['order'])){
switch(trim($post['order'])){
case 'date_desc' : {
$order = 'date_add';
$order_by = 'DESC';
break;
}
case 'date_asc' : {
$order = 'date_add';
$order_by = 'ASC';
break;
}
case 'date_publish_desc' : {
$order = 'date_really_add';
$order_by = 'DESC';
break;
}
case 'date_publish_asc' : {
$order = 'date_really_add';
$order_by = 'ASC';
break;
}
case 'price_desc' : {
$order = 'stoim';
$order_by = 'DESC';
break;
}
case 'price_asc' : {
$order = 'stoim';
$order_by = 'ASC';
break;
}
case 'pricekv_desc' : {
$order = 'stoim_kvm';
$order_by = 'DESC';
break;
}
case 'pricekv_asc' : {
$order = 'stoim_kvm';
$order_by = 'ASC';
break;
}
case 'area_desc' : {
$order = 'ploshad';
$order_by = 'DESC';
break;
}
case 'area_asc' : {
$order = 'ploshad';
$order_by = 'ASC';
break;
}
}
}
$sqlSearch = "SELECT *, (stoim/ploshad) as stoim_kvm FROM objects, objects_delta WHERE id in (" . implode(",", $foundIds) . ") ORDER BY $order $order_by LIMIT $from, $numOnPage OPTION max_matches=1000000";
/*if ($_SESSION['id'] == 93) {
echo $sqlSearch;
}*/
$rezSearch = $db->query($sqlSearch);
if ($db->num_rows($rezSearch) > 0) {
$user = new User;
$user->get($_SESSION['id']);
if (!isset($user->agencyId)) {
$user->agencyId = $_SESSION['id'];
$user->agencyName = $user->agency_name;
$user->fio = trim($user->last_name . ' ' . $user->first_name . ' ' . $user->middle_name);
}
while ($obj = $db->fetch_assoc($rezSearch)) {
$photo = "";
$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)) {
$photo = $photoInfo;
$obj['photo' . $photoInfo['sort_order']] = $photoInfo['photo'];
}
}
$sql_count_notes = "SELECT COUNT(*) FROM object_notes WHERE object_id = $obj[id] AND $notes_bd_usl";
if ($_SESSION['id'] == 10246) {
echo '<div style="display: none;">' . $sql_count_notes . '</div>';
}
$obj['notes'] = mysql_result(mysql_query($sql_count_notes), 0);
include($_SERVER['DOCUMENT_ROOT'] . "/templates/object_analytics_template.php");
}
echo '<div class="f-system_pagination" style="padding: 20px 20px 0 20px;"><ul class="pagination">';
if ($all_pages > 1) {
paging($pageNumber, $all_pages, $objectId);
}
echo '</ul></div>';
}
} else {
echo "Объекты не найдены.";
$script = '$("#analyticsDempAllPrice").html("-");';
$script .= '$("#analyticsNowPrice").html("-");';
$script .= '$("#analyticsAvarageAllPrice").html("-");';
$script .= '$("#analyticsThreeMonthPrice").html("-");';
$script .= '$("#analyticsHighAllPrice").html("-");';
$script .= '$("#analyticsTwelveMonthPrice").html("-");';
$script .= '$("#analyticsDempMeters").html("-");';
$script .= '$("#analyticsAvarageMeters").html("-");';
$script .= '$("#analyticsHighMeters").html("-");';
$script .= '$("#analyticsMetersTitleWarning").show();';
$script .= '$("#analyticsDempAllPriceLink").hide();';
$script .= '$("#analyticsAvarageAllPriceLink").hide();';
$script .= '$("#analyticsHighAllPriceLink").hide();';
$script .= '$("#averageCountNumber").html("");';
echo '<script type="text/javascript">' . $script . '</script>';
}
}
echo "</ul>";
function paging($page, $all_pages, $objId) {
if ($page == 1) {
echo "<li class=active><a class='obj-analysis-paging15' data-id='$objId' data-page-num='1' href='javascript:void(0);'>1</a></li>";
} else {
$prev = $page - 1;
echo "<li><a data-page-num='$prev' class='obj-analysis-paging15' data-id='$objId' href='javascript:void(0);'>&laquo;</a></li>";
echo "<li><a data-page-num='1' class='obj-analysis-paging15' data-id='$objId' href='javascript:void(0);'>1</a></li>";
}
if ($all_pages > 8) {
if ($page > 4) {
$ot = $page - 3;
echo "<li><a href='javascript:void(0);'>...</a></li>";
} else {
$ot = 2;
}
if ($page < $all_pages - 4) {
$do = $page + 3;
} else {
$do = $all_pages;
}
} else {
$ot = 2;
$do = $all_pages;
}
for ($i = $ot; $i < $do; $i++) {
if ($i == $page) $cl = "active"; else $cl = "";
echo "<li class='$cl'><a class='obj-analysis-paging15' data-id='$objId' data-page-num='$i' href='javascript:void(0);'>$i</a></li>";
}
if ($all_pages > 8 and $page < $all_pages - 4) {
echo "<li><a href='javascript:void(0);'>...</a></li>";
}
if ($page == $all_pages)
echo "<li class=active><a class='obj-analysis-paging15' data-id='$objId' data-page-num='$all_pages' href='javascript:void(0);'>$all_pages</a></li>";
else {
echo "<li><a class='obj-analysis-paging15' data-id='$objId' data-page-num='$all_pages' href='javascript:void(0);'>$all_pages</a></li>";
$nxt = $page + 1;
echo "<li><a class='obj-analysis-paging15' data-id='$objId' data-page-num='$nxt' href='javascript:void(0);'>&raquo;</a></li>";
}
}
?>
<script type="text/javascript">
$(document).ready(function () {
getReSearchObjectsCountsAnalytics();
});
</script>
<script type="text/javascript" src="/js/analytics/bundle.js?v=<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/js/analytics/bundle.js')?>"></script>