KitchenModel.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. o.order_id,
  18. t.table_number,
  19. u.user_name,
  20. o.order_name,
  21. o.order_created_at,
  22. o.order_flag,
  23. oi.order_item_id,
  24. oi.order_item_flag,
  25. p.product_name,
  26. oi.order_item_kitchen_note
  27. FROM `order` o
  28. INNER JOIN order_item oi ON o.order_id = oi.order_id
  29. INNER JOIN product p ON oi.product_id = p.product_id
  30. INNER JOIN `table` t ON o.table_id = t.table_id
  31. INNER JOIN user u ON o.user_id = u.user_id
  32. WHERE o.company_id = :company_id
  33. AND o.order_flag IN ('a', 'p')
  34. AND p.product_is_kitchen = 1
  35. ORDER BY o.order_created_at ASC;
  36. ";
  37. $stmt = $this->pdo->prepare($sql);
  38. $stmt->execute(['company_id' => $companyId]);
  39. $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
  40. $orders = [];
  41. foreach ($rows as $row) {
  42. $orderId = $row['order_id'];
  43. if (!isset($orders[$orderId])) {
  44. $orders[$orderId] = [
  45. 'order_id' => $row['order_id'],
  46. 'table_number' => $row['table_number'],
  47. 'user_name' => $row['user_name'],
  48. 'order_name' => $row['order_name'],
  49. 'order_created_at' => $row['order_created_at'],
  50. 'order_flag' => $row['order_flag'],
  51. 'items' => []
  52. ];
  53. }
  54. $orders[$orderId]['items'][] = [
  55. 'order_item_id' => $row['order_item_id'],
  56. 'order_item_flag' => $row['order_item_flag'],
  57. 'product_name' => $row['product_name'],
  58. 'kitchen_note' => $row['order_item_kitchen_note'] ?? ''
  59. ];
  60. }
  61. return array_values($orders);
  62. }
  63. }