KitchenModel.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace Models;
  3. class KitchenModel
  4. {
  5. private \PDO $pdo;
  6. public function __construct()
  7. {
  8. $dbFile = $_ENV['DB_FILE'];
  9. $dbPath = __DIR__ . '/../' . $dbFile;
  10. $this->pdo = new \PDO("sqlite:" . $dbPath);
  11. $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
  12. }
  13. public function getKitchenOrders(int $companyId): array
  14. {
  15. $sql = "
  16. SELECT
  17. order_id,
  18. table_id,
  19. user_name,
  20. order_created_at,
  21. order_flag,
  22. order_item_id,
  23. order_item_flag,
  24. product_name,
  25. order_item_kitchen_note
  26. FROM 'order'
  27. NATURAL JOIN order_item
  28. NATURAL JOIN user
  29. NATURAL JOIN product
  30. WHERE company_id = :company_id
  31. AND order_flag IN ('a', 'p')
  32. AND product_is_kitchen = 1
  33. ORDER BY order_created_at ASC;
  34. ";
  35. $stmt = $this->pdo->prepare($sql);
  36. $stmt->execute(['company_id' => $companyId]);
  37. $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
  38. $orders = [];
  39. foreach ($rows as $row) {
  40. $orderId = $row['order_id'];
  41. if (!isset($orders[$orderId])) {
  42. $orders[$orderId] = [
  43. 'order_id' => $row['order_id'],
  44. 'table_id' => $row['table_id'],
  45. 'user_name' => $row['user_name'],
  46. 'order_created_at' => $row['order_created_at'],
  47. 'order_flag' => $row['order_flag'],
  48. 'items' => []
  49. ];
  50. }
  51. $orders[$orderId]['items'][] = [
  52. 'order_item_id' => $row['order_item_id'],
  53. 'order_item_flag' => $row['order_item_flag'],
  54. 'product_name' => $row['product_name'],
  55. 'kitchen_note' => $row['order_item_kitchen_note'] ?? ''
  56. ];
  57. }
  58. return array_values($orders);
  59. }
  60. }