Browse Source

Revoke approval enhancement

moell 8 months ago
parent
commit
775156756f
2 changed files with 16 additions and 3 deletions
  1. 15 2
      app/Http/Controllers/API/ApprovalController.php
  2. 1 1
      routes/api.php

+ 15 - 2
app/Http/Controllers/API/ApprovalController.php

@@ -119,13 +119,26 @@ class ApprovalController extends Controller
     /**
      * Remove the specified resource from storage.
      */
-    public function cancel(string $id)
+    public function cancel(Request $request)
     {
+        $mode = $request->get("mode", "approval");
+        throw_validation_if(!$request->get("id"), "ID cannot be empty");
+
+        $where = match ($mode) {
+            "approval" => ["id" => $request->id],
+            "object_type" => ["object_type" => $request->object_type, "object_id" => $request->id],
+            default => [],
+        };
+
+        throw_validation_if(! $where, "Please enter valid parameters.");
+
         $approval = Approval::query()
             ->whereIn("status", [
                 ObjectApprovalStatus::DOING->value,
             ])
-            ->findOrFail($id);
+            ->where($where)
+            ->first();
+        throw_validation_if(! $approval, "The data does not exist or the operation is denied permission.");
 
         $object = ApprovalObjectType::from($approval->object_type)->modelBuilderAllowed($approval->object_id)->findOrFail($approval->object_id);
 

+ 1 - 1
routes/api.php

@@ -77,7 +77,7 @@ Route::middleware(['auth:sanctum'])->group(function () {
         ]);
 
         Route::post("approval/{approval}/action", [API\ApprovalController::class, 'action'])->name("approval.action");
-        Route::patch("approval/{approval}/cancel", [API\ApprovalController::class, 'cancel'])->name("approval.cancel");
+        Route::patch("approval-cancel", [API\ApprovalController::class, 'cancel'])->name("approval.cancel");
 
         Route::get("library-linkage/{type}", [API\LibraryController::class, "linkage"])->name("library.linkage");