Kaynağa Gözat

fix: description get; feat: order finish time stamp

Fernando 4 ay önce
ebeveyn
işleme
2b93f172a7

+ 3 - 1
controllers/ProductGetController.php

@@ -23,14 +23,16 @@ class ProductGetController
 
         try {
             v::key('company_id', v::intType()->positive())
+             ->key('show_description', v::optional(v::boolType()), false)
              ->assert($body);
         } catch (ValidationException $e) {
             return ResponseLib::sendFail("Validation failed: " . $e->getFullMessage(), [], "E_VALIDATE")->withStatus(401);
         }
 
         $companyId = (int) $body['company_id'];
+        $showDescription = $body['show_description'] ?? false;
 
-        $products = $this->model->getProducts($companyId);
+        $products = $this->model->getProducts($companyId, $showDescription);
 
         if ($products) {
             return ResponseLib::sendOk($products);

+ 27 - 26
migrations/migrations_v1.sql

@@ -1,10 +1,10 @@
-CREATE TABLE IF NOT EXISTS "company" (
+CREATE TABLE "company" (
     "company_id" INTEGER PRIMARY KEY AUTOINCREMENT,
     "company_name" TEXT NOT NULL,
     "company_flag" TEXT NOT NULL
 );
 
-CREATE TABLE IF NOT EXISTS "role" (
+CREATE TABLE "role" (
     "role_id" INTEGER PRIMARY KEY AUTOINCREMENT,
     "company_id" INTEGER NOT NULL,
     "role_name" TEXT NOT NULL,
@@ -13,21 +13,12 @@ CREATE TABLE IF NOT EXISTS "role" (
     FOREIGN KEY ("company_id") REFERENCES "company" ("company_id")
 );
 
-CREATE TABLE IF NOT EXISTS "status" (
+CREATE TABLE "status" (
     "status_id" INTEGER PRIMARY KEY AUTOINCREMENT,
     "status_status" TEXT NOT NULL
 );
 
-CREATE TABLE IF NOT EXISTS "description" (
-  description_id INTEGER PRIMARY KEY AUTOINCREMENT,
-  description_text TEXT NOT NULL,
-  product_id INTEGER NOT NULL,
-  company_id INTEGER NOT NULL,
-  FOREIGN KEY (product_id) REFERENCES product(product_id),
-  FOREIGN KEY (company_id) REFERENCES company(company_id)
-);
-
-CREATE TABLE IF NOT EXISTS "user" (
+CREATE TABLE "user" (
     "user_id" INTEGER PRIMARY KEY AUTOINCREMENT,
     "user_name" TEXT NOT NULL,
     "user_email" TEXT NOT NULL UNIQUE,
@@ -39,7 +30,7 @@ CREATE TABLE IF NOT EXISTS "user" (
     FOREIGN KEY ("role_id") REFERENCES "role" ("role_id")
 );
 
-CREATE TABLE IF NOT EXISTS "table" (
+CREATE TABLE "table" (
     "table_id" INTEGER PRIMARY KEY AUTOINCREMENT,
     "company_id" INTEGER NOT NULL,
     "table_number" TEXT NOT NULL,
@@ -49,7 +40,7 @@ CREATE TABLE IF NOT EXISTS "table" (
     FOREIGN KEY ("company_id") REFERENCES "company" ("company_id")
 );
 
-CREATE TABLE IF NOT EXISTS "category" (
+CREATE TABLE "category" (
     "category_id" INTEGER PRIMARY KEY AUTOINCREMENT,
     "company_id" INTEGER NOT NULL,
     "category_name" TEXT NOT NULL,
@@ -57,7 +48,7 @@ CREATE TABLE IF NOT EXISTS "category" (
     FOREIGN KEY ("company_id") REFERENCES "company" ("company_id")
 );
 
-CREATE TABLE IF NOT EXISTS "product" (
+CREATE TABLE "product" (
     "product_id" INTEGER PRIMARY KEY AUTOINCREMENT,
     "company_id" INTEGER NOT NULL,
     "category_id" INTEGER NOT NULL,
@@ -69,7 +60,7 @@ CREATE TABLE IF NOT EXISTS "product" (
     FOREIGN KEY ("company_id") REFERENCES "company" ("company_id")
 );
 
-CREATE TABLE IF NOT EXISTS "order" (
+CREATE TABLE "order" (
     "order_id" INTEGER PRIMARY KEY AUTOINCREMENT,
     "table_id" INTEGER NOT NULL,
     "user_id" INTEGER NOT NULL,
@@ -78,6 +69,7 @@ CREATE TABLE IF NOT EXISTS "order" (
     "order_phone" TEXT NOT NULL,
     "status_id" INTEGER NOT NULL,
     "order_created_at" TEXT NOT NULL,
+    "order_finished_at" TEXT NOT NULL,
     "order_flag" TEXT NOT NULL,
     FOREIGN KEY ("table_id") REFERENCES "table" ("table_id"),
     FOREIGN KEY ("user_id") REFERENCES "user" ("user_id"),
@@ -85,7 +77,7 @@ CREATE TABLE IF NOT EXISTS "order" (
     FOREIGN KEY ("status_id") REFERENCES "status" ("status_id")
 );
 
-CREATE TABLE IF NOT EXISTS "order_item" (
+CREATE TABLE "order_item" (
     "order_item_id" INTEGER PRIMARY KEY AUTOINCREMENT,
     "order_id" INTEGER NOT NULL,
     "product_id" INTEGER NOT NULL,
@@ -95,7 +87,7 @@ CREATE TABLE IF NOT EXISTS "order_item" (
     FOREIGN KEY ("company_id") REFERENCES "company" ("company_id")
 );
 
-CREATE TABLE IF NOT EXISTS "sale" (
+CREATE TABLE "sale" (
     "sale_id" INTEGER PRIMARY KEY AUTOINCREMENT,
     "company_id" INTEGER NOT NULL,
     "order_id" INTEGER NOT NULL,
@@ -108,7 +100,7 @@ CREATE TABLE IF NOT EXISTS "sale" (
     FOREIGN KEY ("company_id") REFERENCES "company" ("company_id")
 );
 
-CREATE TABLE IF NOT EXISTS "fee" (
+CREATE TABLE "fee" (
     "fee_id" INTEGER PRIMARY KEY AUTOINCREMENT,
     "company_id" INTEGER NOT NULL,
     "fee_fixed" TEXT NOT NULL,
@@ -117,10 +109,19 @@ CREATE TABLE IF NOT EXISTS "fee" (
     FOREIGN KEY ("company_id") REFERENCES "company" ("company_id")
 );
 
-CREATE TABLE IF NOT EXISTS "api_key" (
-    "api_key_id" INTEGER PRIMARY KEY AUTOINCREMENT,
-    "user_id" INTEGER NOT NULL,
-    "api_key_user" TEXT NOT NULL,
-    "api_key_secret" TEXT NOT NULL,
-    FOREIGN KEY ("user_id") REFERENCES "user" ("user_id")
+CREATE TABLE api_key (
+    api_key_id INTEGER PRIMARY KEY AUTOINCREMENT,
+    user_id INTEGER NOT NULL,
+    api_key_user TEXT NOT NULL,
+    api_key_secret TEXT NOT NULL,
+    FOREIGN KEY (user_id) REFERENCES user(user_id)
+);
+
+CREATE TABLE "description" (
+    "description_id" INTEGER PRIMARY KEY AUTOINCREMENT,
+    "company_id" INTEGER NOT NULL,
+    "description_text" TEXT NOT NULL,
+    "product_id" INTEGER NOT NULL,
+    FOREIGN KEY ("company_id") REFERENCES "company" ("company_id")
+    FOREIGN KEY ("product_id") REFERENCES "product" ("product_id")
 );

+ 9 - 5
models/OrderModel.php

@@ -30,8 +30,8 @@ class OrderModel
         }
 
         $stmt = $this->pdo->prepare("
-            INSERT INTO `order` (table_id, user_id, company_id, order_name, order_phone, status_id, order_created_at, order_flag)
-            VALUES (:table_id, :user_id, :company_id, :order_name, :order_phone, :status_id, :order_created_at, 'a')
+            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');
@@ -44,7 +44,8 @@ class OrderModel
                 'order_name' => $orderName,
                 'order_phone' => $orderPhone,
                 'status_id' => $statusId,
-                'order_created_at' => $currentTime
+                'order_created_at' => $currentTime,
+                'order_finished_at' => ' '
             ]);
             return $executed ? (int)$this->pdo->lastInsertId() : false;
         } catch (\PDOException $e) {
@@ -73,13 +74,16 @@ class OrderModel
 
     public function deleteOrder(int $orderId, int $companyId): bool
     {
+        $currentTime = date('Y-m-d H:i:s');
+
         $stmt = $this->pdo->prepare("
             UPDATE `order`
-            SET order_flag = 'd'
+            SET order_flag = 'd', order_finished_at = :order_finished_at
             WHERE order_id = :order_id AND company_id = :company_id AND order_flag = 'a'
         ");
-
+            
         $executed = $stmt->execute([
+            'order_finished_at' => $currentTime,
             'order_id' => $orderId,
             'company_id' => $companyId
         ]);

+ 7 - 3
models/ProductModel.php

@@ -14,11 +14,15 @@ class ProductModel
         $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
     }
 
-    public function getProducts(int $companyId): array
+    public function getProducts(int $companyId, bool $showDescription = false): array
     {
-        $stmt = $this->pdo->prepare("SELECT * FROM product WHERE company_id = :company_id AND product_flag = 'a'");
-        $stmt->execute(['company_id' => $companyId]);
+        if ($showDescription === false) {
+            $stmt = $this->pdo->prepare("SELECT * FROM product WHERE company_id = :company_id AND product_flag = 'a'");
+        } else {
+            $stmt = $this->pdo->prepare("SELECT * FROM product NATURAL JOIN `description` WHERE company_id = :company_id AND product_flag = 'a'");
+        }
 
+        $stmt->execute(['company_id' => $companyId]);
         $products = $stmt->fetchAll(\PDO::FETCH_ASSOC);
 
         foreach ($products as &$product) {

+ 0 - 1
public/index.php

@@ -81,7 +81,6 @@ $app->post('/order_item/delete', $cors, $authJwt, \Controllers\OrderItemDeleteCo
 $app->post('/order_item/get', $cors, $authJwt, \Controllers\OrderItemGetController::class);
 
 // Description Routes
-$app->post('/description/get', $cors, \Controllers\DescriptionGetController::class);
 $app->post('/description/create', $cors, $authJwt, \Controllers\DescriptionCreateController::class);
 $app->post('/description/update', $cors, $authJwt, \Controllers\DescriptionUpdateController::class);