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

606 lines
23 KiB
PHP
Raw 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']."/ajax/vue_php_function.php");
/*ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);*/
$pdo = new MysqlPdo(hst, ndb, user, pass);
$sql = "SET NAMES 'utf8mb4'";
$pdo->query($sql);
$data = json_decode(file_get_contents("php://input"));
$request = $data->request;
if($request == 'get_object'){
$id = (int)$data->id;
if($id > 0){
$sql3="SELECT objects_additional_information.*,
bath_type.name as bath_type,
window_view.name as window_view,
objects.*,
renovation.name as renovation,
hot_water.name as hot_water,
parking_type.name as parking_type,
rayon.rayon,
sale_objects.house_material,
house_material.name as house_material_name,
sale_objects.house_type, house_type.name as house_type_name,
sale_objects.deal_type, sale_objects.sale_type, deal_type.name as deal_type_name,
sale_objects.build_year, DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') as date_add,
lu.name as land_usage_name,
lp.name as land_purpose,
el.name as electricity_type,
gt.name as gas_type,
pt.name as plumbing_type,
st.name as sewerage_type,
rt.name as relief_type,
sht.name as shape_type,
ads_objects.ads_source as ads_source,
ads_objects.ads_url as ads_url
FROM objects objects
LEFT JOIN sale_objects sale_objects on objects.id = sale_objects.object_id
LEFT JOIN ads_objects ads_objects ON objects.id = ads_objects.obj_id
LEFT JOIN house_material house_material on sale_objects.house_material = house_material.id
LEFT JOIN house_type house_type on house_type.id = sale_objects.house_type
LEFT JOIN deal_type deal_type on deal_type.id = sale_objects.deal_type
LEFT JOIN rayon rayon on objects.rayon = rayon.id
LEFT JOIN land_usage_type lu on objects.land_usage_type_id = lu.id
LEFT JOIN land_purpose lp on objects.land_purpose_id = lp.id
LEFT JOIN electricity_type el on objects.electricity_type_id = el.id
LEFT JOIN gas_type gt on objects.gas_type_id = gt.id
LEFT JOIN plumbing_type pt on objects.plumbing_type_id = pt.id
LEFT JOIN sewerage_type st on objects.sewerage_type_id = st.id
LEFT JOIN relief_type rt on objects.relief_type_id = rt.id
LEFT JOIN shape_type sht on objects.shape_type_id = sht.id
LEFT JOIN objects_additional_information on objects_additional_information.object_id = objects.id
LEFT JOIN bath_type on bath_type.id = objects.bath_type_id
LEFT JOIN window_view on window_view.id = objects_additional_information.window_view
LEFT JOIN renovation on renovation.id = objects_additional_information.renovation
LEFT JOIN hot_water on hot_water.id = objects.hot_water_id
LEFT JOIN parking_type on parking_type.id = objects.parking_type_id
WHERE objects.id = {$id}";
$rez_obj = $pdo->query($sql3);
$obj = $pdo->fetch_assoc($rez_obj);
$content['title'] = "Аренда без комиссии - ".$obj['nazv']." по адресу: г. Санкт-Петербург, ".$obj['rayon']." район, ".$obj['adres'];
$user = new User;
$user->get($_SESSION['id']);
$obj['currency'] = 'p';
$sql_price = "SELECT * FROM `object_prices` WHERE `object_id` = '{$obj['id']}' AND `agency_id` = '{$user->agencyId}' LIMIT 1";
$query_price = $pdo->query($sql_price);
if ($pdo->num_rows($query_price)) {
$res_price = $pdo->fetch_assoc($query_price);
if((int)$res_price['currency'] == 1) {
$obj['currency'] = '$';
}
else if((int)$res_price['currency'] == 2) {
$obj['currency'] = '€';
}
}
$favor = array();
$sql = "SELECT id FROM objects WHERE id in (SELECT id_obj FROM favor WHERE id_user = $_SESSION[id])";
$rez = $pdo->query($sql);
while ($f = $pdo->fetch_assoc($rez)) {
$favor[] = $f['id'];
}
if (isset($_SESSION['notes_bd_usl'])) {
$notes_bd_usl = $_SESSION['notes_bd_usl'];
} else {
$agencyId = User::getAgencyIdForUser($_SESSION['id']);
$usersIds = User::getAllAgencyUsers($agencyId);
$usersIds[] = $_SESSION['id'];
$usersIds = array_unique($usersIds);
$notes_bd_usl = "created_by IN (" . implode(",", $usersIds) . ")";
$_SESSION['notes_bd_usl'] = $notes_bd_usl;
}
$sqlAddInfo = "SELECT activity_id FROM objects_activities WHERE object_id={$id}";
$rezAddInfo = $pdo->query($sqlAddInfo);
if ($pdo->num_rows($rezAddInfo) > 0) {
$obj['activities'] = array();
while($row = $pdo->fetch_assoc($rezAddInfo)) {
$obj['activities'][] = $row['activity_id'];
}
} else {
$obj['activities'] = null;
}
/** GET PLAN */
$plan = '';
$sqlP = "SELECT * FROM objects_plan WHERE object_id = {$id}";
$rez_plan = $pdo->query($sqlP);
if($pdo->num_rows($rez_plan) > 0){
$obj_plan = $pdo->fetch_assoc($rez_plan);
if($obj_plan['img_plan'] != ''){
if (stripos($obj_plan['img_plan'], "http://") === false && stripos($obj_plan['img_plan'], "https://") === false) {
$obj_plan['img_plan'] = "https://joywork.ru/photos/" . $obj_plan['img_plan'];
}
$plan = $obj_plan['img_plan'];
}
}
$obj['plan'] = $plan;
$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 = {$id} ORDER BY oop.sort_order";
$rezPhotoInfo = $pdo->query($sqlPhotoInfo);
$obj['photos'] = array();
if ($pdo->num_rows($rezPhotoInfo) > 0) {
while ($photoInfo = $pdo->fetch_assoc($rezPhotoInfo)) {
if(stripos($photoInfo['photo'],"http://") === false && stripos($photoInfo['photo'],"https://") === false) {
$photoInfo['photo'] = "/photos/".$photoInfo['photo'];
}
$obj['photos'][] = $photoInfo['photo'];
//$obj['photo' . $photoInfo['sort_order']] = $photoInfo['photo'];
}
}
//Доп обработка
if(!$obj['etazh']) $obj['etazh']=Filter::getFloorFromName($obj['nazv'],true);
else Filter::getFloorFromName($obj['nazv'],true);
if(!$obj['etazh_iz']) $obj['etazh_iz']=Filter::getMaxFloorFromName($obj['nazv'],true);
else Filter::getMaxFloorFromName($obj['nazv'],true);
Filter::getSpaceFromName($obj['nazv'],true);
$obj['nazv']=Filter::name($obj['nazv']);
Filter::getSpaceFromName($obj['nazv'],true);
if ((int)$obj['etazh'] == 1 && !empty($obj['etaz_first_type'])) {
$obj['etazh'] = $etaz_first_types[$obj['etaz_first_type']];
}
$obj['sobstv'] = Filter::replaceSobstv($obj['sobstv']);
$showForManagerOrBoss = false;
// проверяем, нуждно ли показывать объект начальству
if ($obj['id_add_user'] > 0 && ($_SESSION['agency'] == 1 || $_SESSION['manager'] == 1)) {
$agentsOfAgency = User::getAllAgents($_SESSION['id']);
$found = false;
foreach ($agentsOfAgency as $agent) {
if ($agent['id'] == $obj['id_add_user']) {
$found = true;
}
}
if (!$found) {
$agentsOfManager = User::getAllManagers($_SESSION['id']);
foreach ($agentsOfManager as $agent) {
if ($agent['id'] == $obj['id_add_user']) {
$found = true;
}
}
}
if ($found) {
$showForManagerOrBoss = true;
}
}
$obj['show_dop'] = false;
if ($obj['archive'] || ($obj['id_add_user'] > 0 && $obj['id_add_user'] == $_SESSION['id']) || $showForManagerOrBoss) {
$obj['show_dop'] = true;
}
$sqlCommetc = "SELECT * FROM commercial_object";
$qCommerc = $pdo->query($sqlCommetc);
$arrTypeCommerc = array();
while($rCommerc = $pdo->fetch_assoc($qCommerc)){
$arrTypeCommerc[$rCommerc['id']] = $rCommerc['name'];
}
$obj['nazv'] = Filter::name($obj['nazv']);
$obj['nazv_category'] = '';
if($obj['type']==4 && isset($arrTypeCommerc[$obj['type_category']])){
$obj['nazv_category'] = '<br>Категория помещения '.$arrTypeCommerc[$obj['type_category']];
}
$obj['favor'] = 0;
if(!empty($favor)){
if(in_array($obj['id'],$favor))
$obj['favor'] = 1;
}
$obj['to_send'] = 0;
if(@in_array($obj['id'], $_SESSION['to_send'])) $obj['to_send'] = 1;
$obj['kol_arch'] = 0;
$obj['idstr'] = '';
$obj['vk_token'] = '';
if(!empty($user->vk_token)) {
$obj['vk_token'] = $user->vk_token;
}
if (empty($notes_bd_usl))
$notes_bd_usl = ' true';
$sql_count_notes = "SELECT COUNT(*) FROM object_notes WHERE object_id = $obj[id] AND $notes_bd_usl";
$obj['notes'] = $pdo->result($pdo->query($sql_count_notes),0);
$obj['total_req'] = 0;
$obj['can_autosearch'] = false;
if (isset($user)) {
if ($user->can('autosearch') && $obj['id_rf_region'] > 0) {
$obj['can_autosearch'] = true;
$autosearch = new AutoSearch();
$requisitions = $autosearch->reverseSearch($obj['id'], 0, 100, false, true, true, true);
if ($requisitions['total'] > 0){
$obj['total_req'] = $requisitions['total'];
}
}
}
$obj['obj_my_count'] = 0;
$sql_count_objects = "SELECT COUNT(*) FROM favor WHERE id_obj = $obj[id] AND id_user = $_SESSION[id]";
$obj_my_count = mysql_result(mysql_query($sql_count_objects),0);
$obj['obj_my_count'] = $obj_my_count;
$sourceLink = '';
$sourceName = '';
if ($obj['ads_url'] && $obj['ads_source'] && !$obj['archive']) {
$sourceLink = $obj['ads_url'];
$sourceName = "";
if ($obj['ads_source'] == 3)
$sourceName = "Яндекс";
if ($obj['ads_source'] == 1)
$sourceName = "Авито";
if ($obj['ads_source'] == 4)
$sourceName = "Циан";
if ($obj['ads_source'] == 6)
$sourceName = "Юла";
if ($obj['ads_source'] == 2)
$sourceName = "Из рук в руки";
if ($obj['ads_source'] == 5)
$sourceName = "SOB.RU";
if ($obj['ads_source'] == 7)
$sourceName = "N1.RU";
if ($obj['ads_source'] == 10)
$sourceName = "Моя реклама";
}
$obj['source_link'] = $sourceLink;
$obj['source_name'] = $sourceName;
$tagsThis = [];
$tagsTitle = '';
if ($obj['activities']) {
$tags = [];
$sql_adv = "SELECT * FROM `activities` WHERE `user_id` = '".$user->id."' OR `manager_id` = '".$user->id."'";
if ($user->id_manager)
$sql_adv .= " OR `manager_id` = '".$user->id_manager."' or `user_id` = '".$user->id_manager."'";
if ($user->agencyId)
$sql_adv .= " OR `manager_id` = '".$user->agencyId."' or `user_id` = '".$user->agencyId."'";
$sql_adv .= ' ORDER BY `name`';
$q_adv = mysql_query($sql_adv);
$rows_adv = mysql_num_rows($q_adv);
if ($rows_adv > 0) {
while ($r_adv = mysql_fetch_assoc($q_adv)) {
if (in_array($r_adv['id'], $obj['activities'])){
$tagsThis[] = $r_adv;
$tags[] = '<span data-id="' . $r_adv['id'] . '">' . $r_adv['name'] . '</span>';
}
}
if (!empty($tags)) {
$tagsTitle = strip_tags(implode(', ', $tags));
}
}
}
$obj['tags'] = $tagsThis;
$obj['tags_title'] = $tagsTitle;
list($dateAdd, $timeAdd) = explode(" ", $obj['date_add']);
list($d, $m, $y) = explode(".", $dateAdd);
$date_add = $d." ".getRusMonth($m)." ".$y;
$date = $date_add." ".$timeAdd;
$obj['date'] = $date;
$sqlLocationInfo = "SELECT * FROM object_location WHERE object_id=".$obj['id'];
$rezLocationInfo = mysql_query($sqlLocationInfo);
$obj['objLocationInfo'] = '';
if (mysql_num_rows($rezLocationInfo) > 0) {
$objLocationInfo = mysql_fetch_assoc($rezLocationInfo);
$obj['objLocationInfo'] = $objLocationInfo['address'];
$obj['latitude'] = $objLocationInfo['latitude'];
$obj['longitude'] = $objLocationInfo['longitude'];
} else {
$sql = "SELECT * FROM rayon WHERE id in (select rayon from objects where id = $obj[id])";
$result = mysql_query($sql);
if ($result) {
$rayon = mysql_fetch_assoc($result);
}
if ($obj['id_rf_region'] == 50) {
if(is_bool(strpos($obj['adres'], "Ленинградская область"))){
$obj['objLocationInfo'] .= "Ленинградская область,";
}
}else if($obj['id_rf_region'] == 81){
$obj['objLocationInfo'] .= "Санкт Петербург,";
} else if($obj['id_rf_region'] == 77) {
$sqlRegion = "SELECT parent.name as parent,rf_regions.name FROM rf_regions as parent
LEFT JOIN rf_regions on rf_regions.parent = parent.id
LEFT JOIN rf_region_rayons ON rf_region_rayons.rf_region_id = rf_regions.id
WHERE rayon_id in (select rayon from objects where id = $obj[id])";
$rezRegion = mysql_query($sqlRegion);
if($rezRegion){
$region = mysql_fetch_assoc($rezRegion);
$obj['objLocationInfo'] .= $region['parent'].','.$region['name'].' округ,';
}
}
if($obj['rayon'] && $obj['id_rf_region'] == 81){
if (strpos($obj['rayon'], "район") or strpos($obj['adres'], "район") or strpos($obj['adres'], "р")) {
$obj['objLocationInfo'] .= $obj['rayon'].',';
} else {
$obj['objLocationInfo'] .= $obj['rayon'] . " район,";
}
}
$obj['objLocationInfo'] .= str_replace('г. Санкт-Петербург, ', '', $obj['adres']);
if ($obj['dom']) {
$obj['objLocationInfo'] .= ", " . $obj['dom'];
}
if ($obj['korpus']) {
$obj['objLocationInfo'] .= ", корпус " . $obj['korpus'];
}
if ($obj['litera']) {
$obj['objLocationInfo'] .= ", литера " . $obj['litera'];
}
}
$obj['address'] = $obj['adres'];
if ($obj['dom'])
{
$obj['address'] .= ", " . $obj['dom'];
}
if ($obj['korpus']) {
$obj['address'] .= ", корпус " . $obj['korpus'];
}
if ($obj['litera']) {
$obj['address'] .= ", литера " . $obj['litera'];
}
$obj['metro'] = '';
$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];
$obj['metro'] = implode(", ",$mtr);
$stoim_raw = intval($obj['stoim']);
$obj['stoim'] = number_format($obj['stoim'], 0, ',', ' ');
$obj['sobstv'] = htmlspecialchars_decode($obj['sobstv']);
$sale_type = "Не указан";
switch ($obj['sale_type']) {
case "dupt" :
$sale_type = "Договор уступки права требования";
break;
case "dzhsk" :
$sale_type = "Договор ЖСК";
break;
case "free" :
$sale_type = "Свободная продажа";
break;
case "fz214" :
$sale_type = "214-ФЗ";
break;
case "investment" :
$sale_type = "Договор инвестирования";
break;
case "pdkp" :
$sale_type = "Предварительный договор купли-продажи";
break;
}
$obj['sale_type'] = $sale_type;
$obj['com'] = round(floatval($obj['commission']) * $stoim_raw / 100);
if ($obj['commission_counter_agent_type'] == 'fixed') {
$obj['com_counter'] = floatval($obj['commission_counter_agent']);
} else {
$obj['com_counter'] = round(floatval($obj['commission_counter_agent']) * $stoim_raw / 100);
}
if ($obj['commission_agency_type'] == 'price') {
$obj['com_agency'] = floatval($obj['commission_agency']);
} else {
$obj['com_agency'] = round(floatval($obj['commission_agency']) * $stoim_raw / 100);
}
$obj['com2'] = ($stoim_raw > 0) ? round((intval($obj['lease'])*100/$stoim_raw), 2) : 0;
$obj['layout_object'] = mysql_fetch_assoc(mysql_query("SELECT * FROM `layout_object` WHERE id = ".$obj['layout_id']))['name'];
$obj['name_commer_condition'] = mysql_fetch_assoc(mysql_query("SELECT * FROM `commer_condition` WHERE id = ".$obj['commer_condition']))['name'];
$obj['name_parking_type'] = mysql_fetch_assoc(mysql_query("SELECT * FROM `parking_type` WHERE id = ".$obj['parking_type_id']))['name'];
$obj['name_vat_type'] = mysql_fetch_assoc(mysql_query("SELECT * FROM `vat_type` WHERE id = ".$obj['vat_type_id']))['name'];
$obj['name_floor_material'] = mysql_fetch_assoc(mysql_query("SELECT * FROM `floor_material` WHERE id = ".$obj['floor_material_id']))['name'];
$obj['name_commerc_portal'] = mysql_fetch_assoc(mysql_query("SELECT * FROM `commerc_portal` WHERE id = ".$obj['commerc_portal_id']))['name'];
$commerc_purpose1 = json_decode($obj['commerc_purpose']);
$commerc_purpose = array();
if(!empty($commerc_purpose1)){
$sql = "SELECT * FROM commerc_purpose WHERE id in (".implode(',',$commerc_purpose1).")";
$q = mysql_query($sql);
$i=0;
//echo '<div class="info-value">';
while($r = mysql_fetch_assoc($q)){
/*if($i>0) echo ",";
if($i % 2 == 0) echo "<br>";
echo '&nbsp;'.$r['name'];*/
if(!empty(trim($r['name']))){
$commerc_purpose[] = $r;
}
//$i++;
}
}
$obj['commerc_purpose'] = $commerc_purpose;
if($obj['type'] == 4){
$obj['name_commerc_building'] = mysql_fetch_assoc(mysql_query("SELECT * FROM `commerc_building_type` WHERE id = ".$obj['commerc_building_type_id']))['name'];
$obj['name_commerc_building_class'] = mysql_fetch_assoc(mysql_query("SELECT * FROM `commerc_building_class` WHERE id = ".$obj['commerc_building_class_id']))['name'];
$obj['name_commerc_houselinetype'] = mysql_fetch_assoc(mysql_query("SELECT * FROM `commerc_houselinetype` WHERE id = ".$obj['commerc_houseLineType_id']))['name'];
$obj['name_commerc_building_category'] = mysql_fetch_assoc(mysql_query("SELECT * FROM `commerc_building_category` WHERE id = ".$obj['commerc_building_category_id']))['name'];
$obj['name_commerc_opened'] = mysql_fetch_assoc(mysql_query("SELECT * FROM `commerc_opened` WHERE id = ".$obj['commerc_opened_id']))['name'];
}
$obj['is_fields'] = 0;
$obj['fields'] = array();
$user = new User;
if ($agency_id = User::getUserAgencyID()) {
$sql = "SELECT `fields`.`id` AS `id`,
`fields`.`name` AS `name`,
`fields`.`type` AS `type`,
`fields`.`title` AS `title`,
`fields`.`params` AS `params`,
`data`.`value` AS `value`
FROM `object_data` AS `data`
LEFT JOIN `object_fields` AS `fields` ON `data`.`field_id` = `fields`.`id`
WHERE `data`.`object_id`='$obj[id]' AND
`fields`.`agency_id`='$agency_id' AND
`fields`.`is_active`='1'
ORDER BY `fields`.`order`";
$query = mysql_query($sql);
if (mysql_num_rows($query)) {
$obj['is_fields'] = 1;
while ($row = mysql_fetch_assoc($query)) {
if (isset($row['value'])) {
$field_name = $row['name'];
$field_title = $row['title'];
if ($row['type'] == 2 || $row['type'] == 3) {
$values = json_decode($row['value']);
$params = json_decode($row['params'], true);
if (count($values) > 0) {
$values_str = '';
foreach ($values as $value) {
foreach ($params['items'] as $item) {
if ($item['value'] == $value) {
if (!empty($values_str))
$values_str .= ", " . $item['name'];
else
$values_str .= $item['name'];
}
}
}
if (!empty($values_str)) {
$obj['fields'][] = array('label'=>$row['title'], 'value'=>$values_str);
}
}
} else if ($row['type'] == 4) {
$obj['fields'][] = array('label'=>$row['title'], 'value'=>((boolval($row['value'])) ? 'Да' : 'Нет'));
} else {
$obj['fields'][] = array('label'=>$row['title'], 'value'=>$row['value']);
}
}
}
}
}
echo json_encode($obj);
exit;
}
}
if($request == 'check_cadastral_number_unique'){
$agency_id = (int)$data->agency_id;
$cadastral_number = trim($data->cadastral_number);
$object_id = (int)$data->object_id;
if($agency_id > 0 && !empty($cadastral_number)){
$sc = new SourcesConnection($agency_id);
$agentIds = $sc->getAllUserAgency();
$cad_sql = "SELECT id FROM objects
WHERE (cadastral_number = '" . mysql_real_escape_string($cadastral_number) . "' OR cadastral_number_land = '" . mysql_real_escape_string($cadastral_number) . "')
AND id_add_user IN (" . implode(",", $agentIds) . ")";
if($object_id != 0){
$cad_sql .= " AND id != {$object_id}";// Исключаем текущий 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();
}
}
}
if($request == 'check_address_unique'){
$agency_id = (int)$data->agency_id;
$address = trim($data->address);
$flat_number = trim($data->flat_number);
$object_id = (int)$data->object_id;
if($agency_id > 0 && !empty($address) && !empty($flat_number)){
$sc = new SourcesConnection($agency_id);
$agentIds = $sc->getAllUserAgency();
$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(",", $agentIds) . ") AND (o.adres = '" . mysql_real_escape_string($address) . "'
AND oai.flat_number = '" . mysql_real_escape_string($flat_number) . "')";
if($object_id != 0){
$sim_sql .= " AND id != {$object_id}";// Исключаем текущий ID сразу в SQL
}
$cad_res = mysql_query($sim_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();
}
}
}