Joywork/ajax/checkAdUnique.php

114 lines
3.7 KiB
PHP
Raw Permalink Normal View History

2026-05-22 20:21:54 +02:00
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/config.php");
$agency_id = isset($_SESSION['user']['agency_id']) ? $_SESSION['user']['agency_id'] : (isset($_COOKIE['agency_id']) ? $_COOKIE['agency_id'] : null);
$object_id = (int) $_POST['object_id'];
$all_agents = getAllAgents($agency_id);
$sql_object = "SELECT o.id, o.adres, o.cadastral_number, o.cadastral_number_land, o.id_add_user, oai.flat_number
FROM objects o
LEFT JOIN objects_additional_information oai ON o.id = oai.object_id
WHERE o.id = $object_id";
$result = mysql_query($sql_object);
$obj_data = mysql_fetch_assoc($result);
// Определяем кадастровый номер для проверки
if (!empty($obj_data['cadastral_number'])) {
$cadastral_number_to_check = $obj_data['cadastral_number'];
$cad_column = 'cadastral_number';
} elseif (!empty($obj_data['cadastral_number_land']) && empty($obj_data['cadastral_number'])) {
$cadastral_number_to_check = $obj_data['cadastral_number_land'];
$cad_column = 'cadastral_number_land';
}
if ($cadastral_number_to_check) {
// Проверяем по кадастровому номеру
$cad_sql = "SELECT id FROM objects
WHERE $cad_column = '" . mysql_real_escape_string($cadastral_number_to_check) . "'
AND id != " . intval($obj_data['id']) . "
AND id_add_user IN (" . implode(",", $all_agents) . ")
AND use_in_advert = 1"; // Исключаем текущий ID сразу в SQL
$cad_res = mysql_query($cad_sql);
$object_ids = [];
while ($cad_obj = mysql_fetch_assoc($cad_res)) {
$object_ids[] = $cad_obj['id'];
}
if (!empty($object_ids)) {
echo json_encode(["object_in_ads" => true, "object_ids" => $object_ids]);
exit();
}
}
// Если нет кадастрового номера, идем по обычной логике
$sim_sql = "SELECT o.id, o.id_add_user
FROM objects o
LEFT JOIN objects_additional_information oai ON o.id = oai.object_id
WHERE o.id_add_user IN (" . implode(",", $all_agents) . ")";
$conditions = [];
if (!empty($obj_data['adres']) && !empty($obj_data['flat_number'])) {
$conditions[] = "(o.adres = '" . mysql_real_escape_string($obj_data['adres']) . "'
AND oai.flat_number = '" . mysql_real_escape_string($obj_data['flat_number']) . "')";
}
if (empty($conditions)) {
echo json_encode(["object_in_ads" => false]);
exit();
} else {
$sim_sql .= " AND (" . implode(" OR ", $conditions) . ")";
}
$sim_res = mysql_query($sim_sql);
$matching_objects = [];
while ($row = mysql_fetch_assoc($sim_res)) {
$matching_objects[$row['id']] = $row['id_add_user'];
}
$filtered_objects = [];
foreach ($matching_objects as $id => $id_add_user) {
if (in_array($id_add_user, $all_agents)) {
$filtered_objects[] = $id;
}
}
function getAllAgents($agency_id)
{
$agents = [$agency_id];
$queue = [$agency_id];
while (!empty($queue)) {
$current_id = array_shift($queue);
$sql = "SELECT id FROM users WHERE id_manager = $current_id";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
$agents[] = $row['id'];
$queue[] = $row['id'];
}
}
return $agents;
}
$object_in_ads = false;
$objects_in_ads = [];
$this_object_id = intval($obj_data['id']);
foreach ($filtered_objects as $obj_id) {
$sql_ad = "SELECT COUNT(*) as count FROM objects WHERE id = $obj_id AND use_in_advert = 1";
$ad_res = mysql_query($sql_ad);
$ad_row = mysql_fetch_assoc($ad_res);
if ($ad_row['count'] > 0 && $obj_id !== $this_object_id) {
$objects_in_ads[] = $obj_id;
$object_in_ads = true;
}
}
echo json_encode(["object_in_ads" => $object_in_ads, "object_ids" => $objects_in_ads]);