248 lines
8.7 KiB
PHP
248 lines
8.7 KiB
PHP
<?php
|
|
|
|
class NewBuildingModel extends BaseModel
|
|
{
|
|
public function getAll()
|
|
{
|
|
// global $agent;
|
|
// $agencyRegionId = $this->arrToString($agency_id);
|
|
$sqlComplexes =
|
|
"SELECT complex_list.* FROM complex_list
|
|
JOIN users ON users.region_rf_id = complex_list.rf_region_id
|
|
WHERE users.id = {$this->agent['id']} AND newbuildings_access = '0'";
|
|
|
|
$complexesQuery = $this->db->query($sqlComplexes);
|
|
$complexesArr = [];
|
|
|
|
while ($complexesResult = $this->db->fetch_assoc($complexesQuery)) {
|
|
// var_dump($complexesResult);die;
|
|
// $complex_id = $complexesResult['id'];
|
|
$complexesArr[] = $complexesResult;
|
|
}
|
|
return $complexesArr;
|
|
}
|
|
public function getNewBuildingBlock($params)
|
|
{
|
|
$block_id = $params['block_id'];
|
|
$blocksQuery = $this->db->query("SELECT b.*, r.name AS region_name
|
|
FROM blocks b
|
|
LEFT JOIN regions r ON r.id = b.region_id
|
|
JOIN apartments a ON a.block_id = b.id
|
|
JOIN buildings ON buildings.id = a.building_id
|
|
WHERE b.id = $block_id
|
|
");
|
|
$block = $this->db->fetch_assoc($blocksQuery);
|
|
if (!$block) {
|
|
return ['status' => false];
|
|
}
|
|
|
|
// Получение изображений блока
|
|
$block_img = "SELECT image FROM block_images WHERE model_id = $block_id";
|
|
$block_imgQuery = $this->db->query($block_img);
|
|
$block_imgArr = [];
|
|
|
|
while ($block_imgRes = $this->db->fetch_assoc($block_imgQuery)) {
|
|
$block_imgArr[] = $block_imgRes['image'];
|
|
}
|
|
|
|
// Получение данных по метро
|
|
$metro = "SELECT subway_id, distance, metro
|
|
FROM block_subways
|
|
LEFT JOIN metro ON block_subways.subway_id = metro.id
|
|
WHERE block_subways.block_id = $block_id";
|
|
$metroQuery = $this->db->query($metro);
|
|
$metroArr = [];
|
|
|
|
while ($metroRes = $this->db->fetch_assoc($metroQuery)) {
|
|
$metroArr[] = $metroRes;
|
|
}
|
|
|
|
// Получение квартир
|
|
$apartments = "SELECT room_types.name AS room_type_name, decoration_types.name AS decoration, a.*,
|
|
buildings.corp AS building_corp, buildings.floors AS building_floors, buildings.deadline AS building_deadline
|
|
FROM apartments a
|
|
JOIN buildings ON buildings.id = a.building_id
|
|
JOIN decoration_types ON decoration_types.id = a.decoration_id
|
|
JOIN room_types ON room_types.id = a.room_type_id
|
|
WHERE a.block_id = $block_id
|
|
";
|
|
$apartmentsQuery = $this->db->query($apartments);
|
|
$apartmentsArr = [];
|
|
|
|
while ($apartmentsRes = $this->db->fetch_assoc($apartmentsQuery)) {
|
|
$apartmentsRes['visible'] = true;
|
|
$apartmentsArr[] = $apartmentsRes;
|
|
}
|
|
|
|
// Получение данных по зданиям (корпуса, этажи и дедлайны)
|
|
$buildings = "SELECT corp AS building_corp, floors AS building_floors, deadline AS building_deadline
|
|
FROM buildings
|
|
WHERE id IN (SELECT building_id FROM apartments WHERE block_id = $block_id)";
|
|
$buildingsQuery = $this->db->query($buildings);
|
|
$maxFloors = 0;
|
|
$buildingCorpsArr = [];
|
|
$deadlinesArr = [];
|
|
|
|
while ($buildingsRes = $this->db->fetch_assoc($buildingsQuery)) {
|
|
// Собираем массив корпусов
|
|
$buildingCorpsArr[] = $buildingsRes['building_corp'];
|
|
|
|
// Определяем максимальное количество этажей
|
|
if ($buildingsRes['building_floors'] > $maxFloors) {
|
|
$maxFloors = $buildingsRes['building_floors'];
|
|
}
|
|
|
|
// Добавляем дедлайн в массив дедлайнов
|
|
$deadlinesArr[] = $buildingsRes['building_deadline'];
|
|
}
|
|
|
|
// Формируем массив block_info
|
|
$block_info = [
|
|
'building_corps' => $buildingCorpsArr, // Массив корпусов
|
|
'max_floors' => $maxFloors, // Самый высокий этаж
|
|
'deadlines' => $deadlinesArr // Массив дедлайнов
|
|
];
|
|
|
|
$block['apartments'] = $apartmentsArr;
|
|
$block['block_img'] = $block_imgArr;
|
|
$block['metros'] = $metroArr;
|
|
$block['block_info'] = $block_info; // Добавляем массив block_info
|
|
|
|
return [
|
|
'block' => $block,
|
|
];
|
|
}
|
|
public function getNewBuildingBlocks($params, $current_page)
|
|
{
|
|
// $constructor_id = $params['id'];
|
|
// $agency_id = $frameRes['agency_id'];
|
|
// $agency = "SELECT users.first_name, last_name, middle_name, phone, photo, email, user_logo, phoneAgency, site, agency_name
|
|
// FROM users WHERE id = $agency_id";
|
|
// $agencyQuery = $this->db->query($agency);
|
|
// $agencyData = [];
|
|
|
|
// if ($agencyRes = $this->db->fetch_assoc($agencyQuery)) {
|
|
// $agencyData = $agencyRes;
|
|
// } else {
|
|
// return 'ended';
|
|
// }
|
|
|
|
|
|
// $price_from = $query['price_from'];
|
|
// $price_to = $query['price_to'];
|
|
// $building_dl = $query['building_dl'];
|
|
// $current_page = $query['page'];
|
|
// $room_type_id = $query['room_type_id'];
|
|
|
|
// $room_type_ids = array_map('intval', explode(',', $room_type_id));
|
|
|
|
// $sql_filter = '';
|
|
// echo htmlspecialchars($sql_filter);
|
|
|
|
|
|
|
|
// if (!empty($price_from)) {
|
|
// $sql_filter .= " AND a.price >= $price_from";
|
|
// }
|
|
|
|
// if (!empty($price_to)) {
|
|
// $sql_filter .= " AND a.price <= $price_to";
|
|
// }
|
|
|
|
// if (!empty($room_type_id)) {
|
|
// $room_type_id_list = implode(',', array_map('intval', $room_type_ids));
|
|
// $sql_filter .= " AND a.room_type_id IN ($room_type_id_list)";
|
|
// }
|
|
|
|
// if (!empty($building_dl) && $building_dl !== "ready") {
|
|
// $sql_filter .= " AND DATE(buildings.deadline) <= '$building_dl'";
|
|
// } else if ($building_dl === "ready") {
|
|
// $sql_filter .= " AND DATE(buildings.deadline) < now()";
|
|
// }
|
|
|
|
|
|
$per_page = 21;
|
|
$offset = $per_page * ($current_page - 1);
|
|
|
|
$blocks = "SELECT b.*, r.name AS region_name
|
|
FROM blocks b
|
|
LEFT JOIN regions r ON r.id = b.region_id
|
|
JOIN apartments a ON a.block_id = b.id
|
|
JOIN buildings ON buildings.id = a.building_id
|
|
GROUP BY b.id
|
|
LIMIT $per_page
|
|
OFFSET $offset
|
|
";
|
|
$blocks_count = "SELECT count(DISTINCT b.id) as total_count
|
|
FROM blocks b
|
|
LEFT JOIN regions r ON r.id = b.region_id
|
|
JOIN apartments a ON a.block_id = b.id
|
|
JOIN buildings ON buildings.id = a.building_id
|
|
";
|
|
|
|
|
|
|
|
$blocks_count_query = $this->db->query($blocks_count);
|
|
$count_row = $this->db->fetch_assoc($blocks_count_query);
|
|
|
|
|
|
$blocksQuery = $this->db->query($blocks);
|
|
$blocksData = [];
|
|
|
|
|
|
|
|
while ($blocksRes = $this->db->fetch_assoc($blocksQuery)) {
|
|
$block_id = $blocksRes['id'];
|
|
|
|
// Получение изображений блока
|
|
$block_img = "SELECT image FROM block_images WHERE model_id = $block_id";
|
|
$block_imgQuery = $this->db->query($block_img);
|
|
$block_imgArr = [];
|
|
|
|
while ($block_imgRes = $this->db->fetch_assoc($block_imgQuery)) {
|
|
$block_imgArr[] = $block_imgRes['image'];
|
|
}
|
|
|
|
// Получение данных по метро
|
|
$metro = "SELECT s.name as metro, bs.distance
|
|
FROM block_subways bs, subways s
|
|
WHERE s.id = bs.subway_id
|
|
AND bs.block_id=$block_id";
|
|
$metroQuery = $this->db->query($metro);
|
|
$metroArr = [];
|
|
|
|
while ($metroRes = $this->db->fetch_assoc($metroQuery)) {
|
|
$metroArr[] = $metroRes;
|
|
}
|
|
|
|
// Получение квартир
|
|
$apartments = "SELECT room_types.name AS room_type_name, decoration_types.name AS decoration, a.*,
|
|
buildings.corp AS building_corp, buildings.floors AS building_floors, buildings.deadline AS building_deadline
|
|
FROM apartments a
|
|
JOIN buildings ON buildings.id = a.building_id
|
|
JOIN decoration_types ON decoration_types.id = a.decoration_id
|
|
JOIN room_types ON room_types.id = a.room_type_id
|
|
WHERE a.block_id = $block_id
|
|
";
|
|
$apartmentsQuery = $this->db->query($apartments);
|
|
$apartmentsArr = [];
|
|
|
|
while ($apartmentsRes = $this->db->fetch_assoc($apartmentsQuery)) {
|
|
// $apartmentsRes['visible'] = true;
|
|
$apartmentsArr[] = $apartmentsRes;
|
|
}
|
|
|
|
$blocksRes['apartments'] = $apartmentsArr;
|
|
$blocksRes['block_img'] = $block_imgArr;
|
|
$blocksRes['metros'] = $metroArr;
|
|
$blocksData[] = $blocksRes;
|
|
}
|
|
|
|
return [
|
|
'blocks' => $blocksData,
|
|
'count_blocks' => $count_row['total_count'],
|
|
'type' => 'newbuildings',
|
|
];
|
|
}
|
|
}
|