60 lines
2.0 KiB
PHP
60 lines
2.0 KiB
PHP
<?php
|
|
|
|
class BlockFavModel extends BaseModel {
|
|
|
|
public function toggleFavoriteBlock($catalogId, $blockId, $isFavorite) {
|
|
|
|
// Валидация и санитизация входных данных
|
|
if (!is_numeric($catalogId) || !is_numeric($blockId)) {
|
|
return false;
|
|
}
|
|
|
|
$catalogId = intval($catalogId);
|
|
$blockId = intval($blockId);
|
|
$isFavorite = filter_var($isFavorite, FILTER_VALIDATE_BOOLEAN);
|
|
|
|
$apartmentIds = $this->getApartmentsByBlock($blockId, $catalogId);
|
|
|
|
if ($isFavorite) {
|
|
foreach ($apartmentIds as $apartmentId) {
|
|
$query = "INSERT INTO catalogs_apartments_favorite (catalog_id, apartment_id) VALUES ('$catalogId', '$apartmentId')";
|
|
$this->db->query($query);
|
|
}
|
|
} else {
|
|
foreach ($apartmentIds as $apartmentId) {
|
|
$query = "DELETE FROM catalogs_apartments_favorite WHERE catalog_id = '$catalogId' AND apartment_id = '$apartmentId'";
|
|
$this->db->query($query);
|
|
}
|
|
}
|
|
|
|
return $apartmentIds;
|
|
}
|
|
|
|
private function getApartmentsByBlock($blockId, $catalogId) {
|
|
|
|
// Валидация и санитизация входных данных
|
|
if (!is_numeric($blockId) || !is_numeric($catalogId)) {
|
|
return [];
|
|
}
|
|
|
|
$blockId = intval($blockId);
|
|
$catalogId = intval($catalogId);
|
|
|
|
$query = "SELECT apartments.id FROM apartments
|
|
JOIN blocks on blocks.id = '$blockId'
|
|
WHERE apartments.id IN (
|
|
SELECT id_object
|
|
FROM sended_pdf_newbuildings
|
|
WHERE sent_catalog_id = '$catalogId'
|
|
AND apartments.block_id = '$blockId')
|
|
GROUP BY apartments.id";
|
|
|
|
$result = [];
|
|
$rezSearch = $this->db->query($query);
|
|
while ($row = $this->db->fetch_assoc($rezSearch)) {
|
|
$result[] = $row['id'];
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
} |