Slot.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace App\Models;
  3. use App\Database;
  4. class Slot
  5. {
  6. private $db;
  7. public function __construct()
  8. {
  9. $this->db = Database::getInstance();
  10. }
  11. public function getAll()
  12. {
  13. return $this->db->fetchAll("SELECT * FROM slots ORDER BY created_at DESC");
  14. }
  15. public function getById($id)
  16. {
  17. return $this->db->fetchOne("SELECT * FROM slots WHERE id = ?", [$id]);
  18. }
  19. public function getByProvider($provider)
  20. {
  21. return $this->db->fetchAll("SELECT * FROM slots WHERE provider = ? ORDER BY name ASC", [$provider]);
  22. }
  23. public function create($data)
  24. {
  25. $sql = "INSERT INTO slots (name, image, provider, rtp, demo_url) VALUES (?, ?, ?, ?, ?)";
  26. $params = [
  27. $data['name'],
  28. $data['image'] ?? null,
  29. $data['provider'] ?? null,
  30. $data['rtp'] ?? null,
  31. $data['demo_url'] ?? null
  32. ];
  33. $this->db->execute($sql, $params);
  34. return $this->db->lastInsertId();
  35. }
  36. public function update($id, $data)
  37. {
  38. $sql = "UPDATE slots SET name = ?, image = ?, provider = ?, rtp = ?, demo_url = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?";
  39. $params = [
  40. $data['name'],
  41. $data['image'] ?? null,
  42. $data['provider'] ?? null,
  43. $data['rtp'] ?? null,
  44. $data['demo_url'] ?? null,
  45. $id
  46. ];
  47. return $this->db->execute($sql, $params);
  48. }
  49. public function delete($id)
  50. {
  51. return $this->db->execute("DELETE FROM slots WHERE id = ?", [$id]);
  52. }
  53. public function exists($name, $excludeId = null)
  54. {
  55. if ($excludeId) {
  56. return $this->db->fetchOne("SELECT id FROM slots WHERE name = ? AND id != ?", [$name, $excludeId]);
  57. }
  58. return $this->db->fetchOne("SELECT id FROM slots WHERE name = ?", [$name]);
  59. }
  60. public function getProviders()
  61. {
  62. $result = $this->db->fetchAll("SELECT DISTINCT provider FROM slots WHERE provider IS NOT NULL ORDER BY provider ASC");
  63. return array_column($result, 'provider');
  64. }
  65. public function search($query, $provider = null)
  66. {
  67. $sql = "SELECT * FROM slots WHERE name LIKE ?";
  68. $params = ["%{$query}%"];
  69. if ($provider) {
  70. $sql .= " AND provider = ?";
  71. $params[] = $provider;
  72. }
  73. $sql .= " ORDER BY name ASC";
  74. return $this->db->fetchAll($sql, $params);
  75. }
  76. }