Files
ibiza_sistema/models/House.php
Administrador Ibiza 5289fd4133 Primer version funcional
2025-12-29 23:37:11 -06:00

94 lines
2.6 KiB
PHP
Executable File

<?php
class House {
public static function all() {
$db = Database::getInstance();
return $db->fetchAll(
"SELECT * FROM houses ORDER BY CAST(number AS UNSIGNED)"
);
}
public static function findById($id) {
$db = Database::getInstance();
return $db->fetchOne(
"SELECT * FROM houses WHERE id = ?",
[$id]
);
}
public static function findByNumber($number) {
$db = Database::getInstance();
return $db->fetchOne(
"SELECT * FROM houses WHERE number = ?",
[$number]
);
}
public static function getActive() {
$db = Database::getInstance();
return $db->fetchAll(
"SELECT * FROM houses WHERE status = 'activa' ORDER BY CAST(number AS UNSIGNED)"
);
}
public static function getAccessible() {
$db = Database::getInstance();
$accessibleIds = Auth::getAccessibleHouseIds();
if (empty($accessibleIds)) {
return [];
}
$placeholders = str_repeat('?,', count($accessibleIds) - 1) . '?';
return $db->fetchAll(
"SELECT * FROM houses WHERE id IN ($placeholders) ORDER BY CAST(number AS UNSIGNED)",
$accessibleIds
);
}
public static function update($id, $data) {
$db = Database::getInstance();
return $db->execute(
"UPDATE houses SET status = ?, consumption_only = ?, owner_name = ?, owner_email = ?, owner_phone = ? WHERE id = ?",
[
$data['status'],
$data['consumption_only'] ?? 0,
$data['owner_name'] ?? null,
$data['owner_email'] ?? null,
$data['owner_phone'] ?? null,
$id
]
);
}
public static function countActive() {
$db = Database::getInstance();
$result = $db->fetchOne(
"SELECT COUNT(*) as count FROM houses WHERE status = 'activa'",
[]
);
return $result['count'] ?? 0;
}
public static function countAll() {
$db = Database::getInstance();
$result = $db->fetchOne(
"SELECT COUNT(*) as count FROM houses",
[]
);
return $result['count'] ?? 0;
}
public static function search($query) {
$db = Database::getInstance();
$term = "%$query%";
return $db->fetchAll(
"SELECT * FROM houses
WHERE number LIKE ? OR owner_name LIKE ?
ORDER BY CAST(number AS UNSIGNED)
LIMIT 10",
[$term, $term]
);
}
}