Преглед изворни кода

refactor(student_contracts): adiciona metodos para congelar e cancelar contrato

ebagabee пре 1 месец
родитељ
комит
e861c7a795

+ 8 - 3
app/Http/Controllers/StudentContractController.php

@@ -50,10 +50,15 @@ public function attachFile(Request $request, int $id): JsonResponse
         return $this->successResponse(payload: new StudentContractResource($item), message: __('messages.updated'));
     }
 
-    public function updateStatus(Request $request, int $id): JsonResponse
+    public function freeze(int $id): JsonResponse
     {
-        $request->validate(['status' => 'required|string|in:frozen,cancelled']);
-        $item = $this->service->updateStatus($id, $request->input('status'));
+        $item = $this->service->freeze($id);
+        return $this->successResponse(payload: new StudentContractResource($item), message: __('messages.updated'));
+    }
+
+    public function cancel(int $id): JsonResponse
+    {
+        $item = $this->service->cancel($id);
         return $this->successResponse(payload: new StudentContractResource($item), message: __('messages.updated'));
     }
 

+ 14 - 2
app/Services/StudentContractService.php

@@ -70,7 +70,7 @@ public function attachFile(int $id, $file): ?StudentContract
         return $model->fresh();
     }
 
-    public function updateStatus(int $id, string $status): ?StudentContract
+    public function freeze(int $id): ?StudentContract
     {
         $model = $this->findById($id);
 
@@ -78,7 +78,19 @@ public function updateStatus(int $id, string $status): ?StudentContract
             return null;
         }
 
-        $model->update(['status' => $status]);
+        $model->update(['status' => 'frozen']);
+        return $model->fresh();
+    }
+
+    public function cancel(int $id): ?StudentContract
+    {
+        $model = $this->findById($id);
+
+        if (!$model) {
+            return null;
+        }
+
+        $model->update(['status' => 'cancelled']);
         return $model->fresh();
     }
 

+ 3 - 1
routes/authRoutes/student_contract.php

@@ -14,7 +14,9 @@
 
     Route::post('/{id}/file', 'attachFile');
 
-    Route::patch('/{id}/status', 'updateStatus');
+    Route::post('/{id}/freeze', 'freeze');
+
+    Route::post('/{id}/cancel', 'cancel');
 
     Route::post('/{id}/unfreeze', 'unfreeze');