Joywork/presentation-api/Models/CatalogModel.php
2026-05-22 21:21:54 +03:00

164 lines
7.8 KiB
PHP

<?php
class CatalogModel extends BaseModel {
public function getCatalog($params) {
$id = $this->arrToString($params);
$catalog = "SELECT * FROM sent_catalog WHERE id = '$id'";
$catalogQuery = $this->db->query($catalog);
$catalogArr = [];
if ($catalogRes = $this->db->fetch_assoc($catalogQuery)) {
$agent_id = $catalogRes['agent_id'];
$agent = "SELECT users.first_name, last_name, middle_name, phone, photo, email, user_logo, phoneAgency, site, agency_name FROM users WHERE id = '$agent_id'";
$agentQuery = $this->db->query($agent);
$agentArr = [];
if ($agentRes = $this->db->fetch_assoc($agentQuery)) {
$agentRes['agency_name'] = html_entity_decode($agentRes['agency_name'], ENT_QUOTES, 'UTF-8');
$agentArr = $agentRes;
}
}
$sendedPdf = "SELECT * FROM sended_pdf_newbuildings WHERE sent_catalog_id = '$id'";
$sendedPdfQuery = $this->db->query($sendedPdf);
$sendedPdfArr = [];
while ($sendedRes = $this->db->fetch_assoc($sendedPdfQuery)) {
$sendedPdfArr[] = $sendedRes['sent_catalog_id'];
}
$blocks = "SELECT blocks.*, regions.name AS region_name
, COUNT(catalogs_apartments_favorite.id) AS count_favorite_apartments
FROM blocks
LEFT JOIN regions ON regions.id = blocks.region_id
LEFT JOIN apartments ON apartments.block_id = blocks.id
LEFT JOIN catalogs_apartments_favorite ON catalogs_apartments_favorite.apartment_id = apartments.id AND catalogs_apartments_favorite.catalog_id = '$id'
WHERE apartments.id IN (
SELECT id_object
FROM sended_pdf_newbuildings
WHERE sent_catalog_id = '$id'
)
GROUP BY blocks.id";
$blocksQuery = $this->db->query($blocks);
$blocksArr = [];
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 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 IF(catalogs_apartments_favorite.id IS NOT NULL, 1, 0) AS is_favorite, room_types.name AS room_type_name, decoration_types.name AS decoration, apartments.*, buildings.corp AS building_corp, buildings.floors AS building_floors, buildings.deadline AS building_deadline
FROM apartments
JOIN buildings ON buildings.id = apartments.building_id
JOIN decoration_types ON decoration_types.id = apartments.decoration_id
JOIN room_types ON room_types.id = apartments.room_type_id
LEFT JOIN catalogs_apartments_favorite ON catalogs_apartments_favorite.apartment_id = apartments.id AND catalogs_apartments_favorite.catalog_id = '$id'
WHERE apartments.id IN (
SELECT id_object
FROM sended_pdf_newbuildings
WHERE sent_catalog_id = '$id'
AND apartments.block_id = '$block_id')";
$apartmentsQuery = $this->db->query($apartments);
$apartmentsArr = [];
while ($apartmentsRes = $this->db->fetch_assoc($apartmentsQuery)) {
$apartmentsRes['is_favorite'] = (bool)$apartmentsRes['is_favorite'];
$apartmentsArr[] = $apartmentsRes;
}
$blocksRes['apartments'] = $apartmentsArr;
$blocksRes['block_img'] = $block_imgArr;
$blocksRes['metros'] = $metroArr;
$blocksArr[] = $blocksRes;
}
return [
'id' => $catalogRes['id'],
'agent_id' => $catalogRes['agent_id'],
'agent' => $agentArr,
'blocks' => $blocksArr,
'sendedPdf' => $sendedPdfArr
];
}
public function getApartment($id, $token)
{
$user = [];
$id = $this->arrToString($id);
if ($token) {
$userSql = "SELECT id, fio, phone, photo, email, site, first_name, last_name, middle_name, id_manager, user_logo FROM users WHERE MD5(id)='$token'";
$rez_user = $this->db->query($userSql);
$user = $this->db->fetch_assoc($rez_user);
if ($user['id_manager']) {
$sql = "SELECT id_manager, photo, fio FROM users WHERE id='$user[id_manager]'";
$rez = $this->db->query($sql);
$manager = $this->db->fetch_assoc($rez);
if ($manager['id_manager']) {
$agency = $this->db->fetch_assoc($this->db->query("SELECT id_manager, email, site, first_name, last_name, middle_name, photo, fio FROM users WHERE id='$manager[id_manager]'"));
} else {
$agency = $manager;
}
$user['photo'] = $agency['photo'];
$user['agency_name'] = trim($agency['last_name'] . ' ' . $agency['first_name'] . ' ' . $agency['middle_name']);
} else {
$user['agency_name'] = $user['fio'];
}
}
$apartments = "SELECT IF(catalogs_apartments_favorite.id IS NOT NULL, 1, 0) AS is_favorite, room_types.name AS room_type_name, decoration_types.name AS decoration, apartments.*, buildings.corp AS building_corp, buildings.floors AS building_floors, buildings.deadline AS building_deadline
FROM apartments
JOIN buildings ON buildings.id = apartments.building_id
JOIN decoration_types ON decoration_types.id = apartments.decoration_id
JOIN room_types ON room_types.id = apartments.room_type_id
LEFT JOIN catalogs_apartments_favorite ON catalogs_apartments_favorite.apartment_id = apartments.id AND catalogs_apartments_favorite.catalog_id = '$id'
LEFT JOIN blocks on blocks.id = apartments.block_id
WHERE apartments.id = {$id}";
// var_dump($apartments);die;
$apartmentsQuery = $this->db->query($apartments);
$apartment = $this->db->fetch_assoc($apartmentsQuery);
$block_id = $apartment['block_id'];
// var_dump($apartment);die;
$blockQuery = "SELECT * FROM blocks WHERE id = '$block_id'";
$block = $this->db->fetch_assoc($this->db->query($blockQuery));
$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;
}
$block['metros'] = $metroArr;
$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'];
}
$block['block_img'] = $block_imgArr;
return [
"user" => $user,
"apartment" => $apartment,
"block" => $block
];
}
}