Joywork/presentation-api/Models/BlockFavModel.php

60 lines
2.0 KiB
PHP
Raw Normal View History

2026-05-22 20:21:54 +02:00
<?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;
}
}