KitchenModel.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 o.order_id,
  17. o.table_id,
  18. o.order_created_at,
  19. p.product_name,
  20. oi.kitchen_note
  21. FROM 'order' o
  22. NATURAL JOIN order_item oi
  23. NATURAL JOIN product p
  24. WHERE o.company_id = :company_id
  25. AND o.order_flag = 'a'
  26. AND p.product_is_kitchen = 1
  27. ORDER BY o.order_created_at ASC;
  28. ";
  29. $stmt = $this->pdo->prepare($sql);
  30. $stmt->execute(['company_id' => $companyId]);
  31. $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC);
  32. $orders = [];
  33. foreach ($rows as $row) {
  34. $orderId = $row['order_id'];
  35. if (!isset($orders[$orderId])) {
  36. $orders[$orderId] = [
  37. 'order_id' => $row['order_id'],
  38. 'table_id' => $row['table_id'],
  39. 'order_created_at'=> $row['order_created_at'],
  40. 'items' => []
  41. ];
  42. }
  43. $orders[$orderId]['items'][] = [
  44. 'product_name' => $row['product_name'],
  45. 'kitchen_note' => $row['kitchen_note'] ?? ''
  46. ];
  47. }
  48. return array_values($orders);
  49. }
  50. }