Selaa lähdekoodia

Feat: update flag route & category routes fix

Fernando 5 kuukautta sitten
vanhempi
sitoutus
8a6b2bf41c

+ 0 - 30
controllers/CategoryAddProductController.php

@@ -1,30 +0,0 @@
-<?php
-
-namespace Controllers;
-
-use Libs\ResponseLib;
-use Models\CategoryModel;
-use Psr\Http\Message\ServerRequestInterface;
-
-class CategoryAddProductController
-{
-    private CategoryModel $model;
-
-    public function __construct()
-    {
-        $this->model = new CategoryModel();
-    }
-
-    public function __invoke(ServerRequestInterface $request)
-    {
-        $body = json_decode((string)$request->getBody(), true) ?? [];
-        $companyId = $body['company_id'] ?? null;
-        $added = $this->model->addProductToCategory(
-                    $body['product_name'],
-                    $body['product_price'],
-                    $body['category_name'],
-                    $companyId
-                );
-        return $added ? ResponseLib::sendOk(['product_added' => true]) : ResponseLib::sendFail("Category Not Found", [], "E_VALIDATE")->withStatus(404);
-    }
-}

+ 43 - 0
controllers/CategoryUpdateFlagController.php

@@ -0,0 +1,43 @@
+<?php
+
+namespace Controllers;
+
+use Libs\ResponseLib;
+use Models\CategoryModel;
+use Psr\Http\Message\ServerRequestInterface;
+use Respect\Validation\Validator as v;
+use Respect\Validation\Exceptions\ValidationException;
+
+class CategoryUpdateFlagController
+{
+    private CategoryModel $model;
+
+    public function __construct()
+    {
+        $this->model = new CategoryModel();
+    }
+
+    public function __invoke(ServerRequestInterface $request)
+    {
+        $body = json_decode((string)$request->getBody(), true) ?? [];
+
+        try {
+            v::key('company_id', v::intType()->positive())
+             ->key('category_name', v::stringType()->notEmpty()->alnum(' '))
+             ->key('category_flag', v::stringType()->notEmpty())
+             ->assert($body);
+        } catch (ValidationException $e) {
+            return ResponseLib::sendFail("Validation failed: " . $e->getFullMessage(), [], "E_VALIDATE")->withStatus(400);
+        }
+
+        $companyId = $body['company_id'];
+        $categoryName = $body['category_name'];
+        $newFlag = $body['category_flag'];
+
+        $deleted = $this->model->updateFlag($categoryName, $companyId, $newFlag);
+
+        return $deleted
+            ? ResponseLib::sendOk(['updated flag' => true])
+            : ResponseLib::sendFail("Failed to Update Category Flag", [], "E_VALIDATE")->withStatus(204);
+    }
+}

+ 10 - 14
models/CategoryModel.php

@@ -16,7 +16,7 @@ class CategoryModel
 
     public function getCategories(int $companyId): array
     {
-        $stmt = $this->pdo->prepare("SELECT * FROM category WHERE company_id = :company_id AND category_flag = 'a'");
+        $stmt = $this->pdo->prepare("SELECT * FROM category WHERE company_id = :company_id AND category_flag != 'd'");
         $stmt->execute(['company_id' => $companyId]);
         return $stmt->fetchAll(\PDO::FETCH_ASSOC);
     }
@@ -31,22 +31,18 @@ class CategoryModel
     public function deleteByName(string $name, int $companyId): bool
     {
         $stmt = $this->pdo->prepare("UPDATE category SET category_flag = 'd'
-            WHERE category_name = :name AND company_id = :company_id AND category_flag = 'a'");
+            WHERE category_name = :name AND company_id = :company_id AND category_flag != 'd'");
         return $stmt->execute(['name' => $name, 'company_id' => $companyId]);
     }
 
-    public function addProductToCategory(string $productName, float $price, string $categoryName, int $companyId): bool
+    public function updateFlag(string $name, int $companyId, string $newFlag): bool
     {
-        $stmt = $this->pdo->prepare("SELECT category_id FROM category WHERE category_name = :name AND company_id = :company_id AND category_flag = 'a'");
-        $stmt->execute(['name' => $categoryName, 'company_id' => $companyId]);
-        $category = $stmt->fetch(\PDO::FETCH_ASSOC);
-
-        if (!$category) {
-            return false;
-        }
-
-        $stmt = $this->pdo->prepare("INSERT INTO product (product_name, product_price, category_id, company_id, product_flag)
-            VALUES (:name, :price, :category_id, :company_id, 'a')");
-        return $stmt->execute(['name' => $productName, 'price' => $price, 'category_id' => $category['category_id'], 'company_id' => $companyId]);
+    $stmt = $this->pdo->prepare("UPDATE category SET category_flag = :flag
+        WHERE category_name = :name AND company_id = :company_id AND category_flag != 'd'");
+    return $stmt->execute([
+        'flag' => $newFlag,
+        'name' => $name,
+        'company_id' => $companyId
+    ]);
     }
 }

+ 1 - 1
public/index.php

@@ -55,7 +55,7 @@ $app->post('/user/delete', $cors, $authJwt, \Controllers\UserDeleteController::c
 $app->post('/category/get', $cors, \Controllers\CategoryGetController::class);
 $app->post('/category/create', $cors, $authJwt, \Controllers\CategoryCreateController::class);
 $app->post('/category/delete', $cors, $authJwt, \Controllers\CategoryDeleteController::class);
-$app->post('/category/add-product', $cors, $authJwt, \Controllers\CategoryAddProductController::class);
+$app->post('/category/updatef', $cors, $authJwt, \Controllers\CategoryUpdateFlagController::class);
 
 //Rotas Product 
 $app->post('/product/get', $cors, \Controllers\ProductGetController::class);