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', ]; } }