Răsfoiți Sursa

feat: adiciona funcionalidade de congelar e cancelar contrato

ebagabee 1 lună în urmă
părinte
comite
99ed16bbf0

+ 7 - 0
app/Http/Controllers/StudentContractController.php

@@ -50,6 +50,13 @@ 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
+    {
+        $request->validate(['status' => 'required|string|in:frozen,cancelled']);
+        $item = $this->service->updateStatus($id, $request->input('status'));
+        return $this->successResponse(payload: new StudentContractResource($item), message: __('messages.updated'));
+    }
+
     public function destroy(int $id): JsonResponse
     {
         $this->service->delete($id);

+ 12 - 0
app/Services/StudentContractService.php

@@ -68,6 +68,18 @@ public function attachFile(int $id, $file): ?StudentContract
         return $model->fresh();
     }
 
+    public function updateStatus(int $id, string $status): ?StudentContract
+    {
+        $model = $this->findById($id);
+
+        if (!$model) {
+            return null;
+        }
+
+        $model->update(['status' => $status]);
+        return $model->fresh();
+    }
+
     public function delete(int $id): bool
     {
         $model = $this->findById($id);

+ 2 - 0
routes/authRoutes/student_contract.php

@@ -14,5 +14,7 @@
 
     Route::post('/{id}/file', 'attachFile');
 
+    Route::patch('/{id}/status', 'updateStatus');
+
     Route::delete('/{id}', 'destroy');
 });