Эх сурвалжийг харах

fix: order_item description instead of order description

Fernando 4 сар өмнө
parent
commit
3192fb9465

+ 7 - 12
controllers/OrderCreateController.php

@@ -31,11 +31,9 @@ class OrderCreateController
              ->key('order_name', v::stringType()->notEmpty()->alnum(' '))
              ->key('order_phone', v::optional(v::stringType()->notEmpty()->length(8, 20)), false)
              ->key('status_status', v::stringType()->notEmpty()->in(['Aberta', 'Finalizada', 'Cancelada']))
-             ->key('kitchen_note', v::optional(v::stringType()), false)
              ->assert($body);
         } catch (ValidationException $e) {
-            return ResponseLib::sendFail("Validation failed: " . $e->getFullMessage(), [], "E_VALIDATE")
-                ->withStatus(400);
+            return ResponseLib::sendFail("Validation failed: " . $e->getFullMessage(), [], "E_VALIDATE")->withStatus(400);
         }
 
         $tableId = (int) $body['table_id'];
@@ -44,20 +42,18 @@ class OrderCreateController
         $orderPhone = $body['order_phone'] ?? '';
         $statusStatus = $body['status_status'];
         $userName = $body['user_name'];
-        $kitchenNote = isset($body['kitchen_note']) ? trim($body['kitchen_note']) : '';
 
         // Buscar user_id correspondente ao user_name
         $userId = $this->getUserIdByUserName($userName, $companyId);
+
         if (!$userId) {
-            return ResponseLib::sendFail("Usuário '{$userName}' não encontrado", [], "E_USER_NOT_FOUND")
-                ->withStatus(404);
+            return ResponseLib::sendFail("Usuário '{$userName}' não encontrado", [], "E_USER_NOT_FOUND")->withStatus(404);
         }
 
-        // Buscar status_id correspondente ao status_status
         $statusId = $this->model->getStatusIdByName($statusStatus);
+
         if ($statusId === null) {
-            return ResponseLib::sendFail("Invalid status_status provided: '{$statusStatus}'", [], "E_VALIDATE")
-                ->withStatus(400);
+            return ResponseLib::sendFail("Invalid status_status provided: '{$statusStatus}'", [], "E_VALIDATE")->withStatus(400);
         }
 
         $created = $this->model->createOrder(
@@ -66,8 +62,7 @@ class OrderCreateController
             $companyId,
             $orderName,
             $orderPhone,
-            $statusId,
-            $kitchenNote
+            $statusId 
         );
 
         return $created
@@ -85,4 +80,4 @@ class OrderCreateController
         }
         return null;
     }
-}
+}

+ 8 - 7
controllers/OrderItemCreateController.php

@@ -22,11 +22,11 @@ class OrderItemCreateController
         $body = json_decode((string)$request->getBody(), true) ?? [];
 
         try {
-            // company_id, order_id e product_id são obrigatórios para criar um item de pedido
-            v::key('company_id', v::intType()->positive()) // company_id agora é obrigatório
-                ->key('order_id', v::intType()->positive())
-                ->key('product_id', v::intType()->positive())
-                ->assert($body);
+            v::key('company_id', v::intType()->positive())
+              ->key('order_id', v::intType()->positive())
+              ->key('product_id', v::intType()->positive())
+              ->key('kitchen_note', v::optional(v::stringType()), false)
+              ->assert($body);
         } catch (ValidationException $e) {
             return ResponseLib::sendFail("Validation failed: " . $e->getFullMessage(), [], "E_VALIDATE")->withStatus(400);
         }
@@ -34,11 +34,12 @@ class OrderItemCreateController
         $companyId = (int) $body['company_id'];
         $orderId = (int) $body['order_id'];
         $productId = (int) $body['product_id'];
+        $kitchenNote = $body['kitchen_note'] ?? '';
 
-        $created = $this->model->createOrderItem($orderId, $productId, $companyId);
+        $created = $this->model->createOrderItem($orderId, $productId, $companyId, $kitchenNote);
 
         return $created
             ? ResponseLib::sendOk(['created' => true, 'order_item_id' => $created])
             : ResponseLib::sendFail("Failed to create order item", [], "E_DATABASE")->withStatus(500);
     }
-}
+}

+ 1 - 1
migrations/migrations_v1.sql

@@ -71,7 +71,6 @@ CREATE TABLE "order" (
     "order_created_at" TEXT NOT NULL,
     "order_finished_at" TEXT NOT NULL,
     "order_flag" TEXT NOT NULL,
-    "kitchen_note" TEXT NOT NULL DEFAULT '',
     FOREIGN KEY ("table_id") REFERENCES "table" ("table_id"),
     FOREIGN KEY ("user_id") REFERENCES "user" ("user_id"),
     FOREIGN KEY ("company_id") REFERENCES "company" ("company_id"),
@@ -83,6 +82,7 @@ CREATE TABLE "order_item" (
     "order_id" INTEGER NOT NULL,
     "product_id" INTEGER NOT NULL,
     "company_id" INTEGER NOT NULL,
+    "kitchen_note" TEXT NOT NULL DEFAULT '',
     FOREIGN KEY ("order_id") REFERENCES "order" ("order_id"),
     FOREIGN KEY ("product_id") REFERENCES "product" ("product_id"),
     FOREIGN KEY ("company_id") REFERENCES "company" ("company_id")

+ 10 - 10
models/OrderItemModel.php

@@ -19,41 +19,41 @@ class OrderItemModel
         $this->pdo->exec('PRAGMA busy_timeout = 5000;');
     }
 
-    public function createOrderItem(int $orderId, int $productId, int $companyId): int|false
+    public function createOrderItem(int $orderId, int $productId, int $companyId, string $kitchenNote = ''): int|false
     {
         $orderModel = new OrderModel();
         $productModel = new ProductModel();
-
+    
         $order = $orderModel->getOrderById($orderId, $companyId);
         if (!$order) {
             return false;
         }
-
+    
         $product = $productModel->getProductById($productId, $companyId);
         if (!$product) {
             return false;
         }
-
+    
         $stmt = $this->pdo->prepare("
-            INSERT INTO order_item (order_id, product_id, company_id)
-            VALUES (:order_id, :product_id, :company_id)
+            INSERT INTO order_item (order_id, product_id, company_id, kitchen_note)
+            VALUES (:order_id, :product_id, :company_id, :kitchen_note)
         ");
-
+    
         try {
             $executed = $stmt->execute([
                 'order_id' => $orderId,
                 'product_id' => $productId,
-                'company_id' => $companyId
+                'company_id' => $companyId,
+                'kitchen_note' => $kitchenNote
             ]);
             return $executed ? (int)$this->pdo->lastInsertId() : false;
         } catch (\PDOException $e) {
-            // Em ambiente de produção, considere logar a exceção de forma mais robusta
-            // ou retornar uma mensagem de erro genérica mais amigável.
             error_log("PDO Exception during order item creation: " . $e->getMessage());
             return false;
         }
     }
 
+
     public function deleteOrderItem(int $orderItemId, int $companyId): bool
     {
         $stmt = $this->pdo->prepare("

+ 8 - 37
models/OrderModel.php

@@ -22,47 +22,20 @@ class OrderModel
         int $companyId,
         string $orderName,
         string $orderPhone,
-        int $statusId,
-        string $kitchenNote = ''
+        int $statusId
     ): int|false {
-        if (
-            !$this->tableExists($tableId, $companyId) ||
-            !$this->userExists($userId, $companyId) ||
-            !$this->companyExists($companyId) ||
-            !$this->statusExists($statusId)
-        ) {
+        if (!$this->tableExists($tableId, $companyId) || !$this->userExists($userId, $companyId) || !$this->companyExists($companyId) || !$this->statusExists($statusId)) {
             error_log("Tentativa de criar pedido com IDs inválidos: table_id={$tableId}, user_id={$userId}, company_id={$companyId}, status_id={$statusId}");
             return false;
         }
-    
+
         $stmt = $this->pdo->prepare("
-            INSERT INTO `order` (
-                table_id,
-                user_id,
-                company_id,
-                order_name,
-                order_phone,
-                status_id,
-                order_created_at,
-                order_finished_at,
-                order_flag,
-                kitchen_note
-            ) VALUES (
-                :table_id,
-                :user_id,
-                :company_id,
-                :order_name,
-                :order_phone,
-                :status_id,
-                :order_created_at,
-                :order_finished_at,
-                'a',
-                :kitchen_note
-            )
+            INSERT INTO `order` (table_id, user_id, company_id, order_name, order_phone, status_id, order_created_at, order_finished_at, order_flag)
+            VALUES (:table_id, :user_id, :company_id, :order_name, :order_phone, :status_id, :order_created_at, :order_finished_at, 'a')
         ");
-    
+
         $currentTime = date('Y-m-d H:i:s');
-    
+
         try {
             $executed = $stmt->execute([
                 'table_id' => $tableId,
@@ -72,10 +45,8 @@ class OrderModel
                 'order_phone' => $orderPhone,
                 'status_id' => $statusId,
                 'order_created_at' => $currentTime,
-                'order_finished_at' => ' ',
-                'kitchen_note' => $kitchenNote
+                'order_finished_at' => ' '
             ]);
-        
             return $executed ? (int)$this->pdo->lastInsertId() : false;
         } catch (\PDOException $e) {
             error_log("PDO Exception during order creation: " . $e->getMessage());