Browse Source

chengeStatusWorkflow funcionando

EmilianoOrtiz 2 tháng trước cách đây
mục cha
commit
bb579aba97

+ 113 - 1
sistema-mantenimiento-back/app/Http/Controllers/ProcessManagementController.php

@@ -201,17 +201,127 @@ class ProcessManagementController extends Controller
         return $this->responseController->makeResponse(false, "ÉXITO: Workflow actualizado exitosamente");
     }
 
+    public function changeWorkflowStatus(Request $request) {
+        $validator = Validator::make($request->all(), [
+            'ESTADO' => 'required|string|in:Activo,Eliminado',
+            'COMENTARIO_CAMBIO' => 'nullable|string',
+            'USUARIO' => 'required|string',
+            'NUMERO_LINEA' => 'required|integer',
+            'ID_WORKFLOW' => 'required|integer'
+        ]);
+        
+        if ($validator->fails()) {
+            return $this->responseController->makeResponse(
+                true,
+                "Se encontraron uno o más errores.",
+                $this->responseController->makeErrors($validator->errors()->messages()),
+                401
+            );
+        }
+
+        DB::beginTransaction();
+        $requestData = $request->all();
+
+        $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
+        if ($arrResponseCheckUser['error']) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
+        }
+        $user = $arrResponseCheckUser['response'];
+
+        try {
+            $currentWorkflow = (array) DB::table('S002V01TWORK')
+                ->where('WORK_IDWO', '=', $requestData['ID_WORKFLOW'])
+                ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
+                ->first([
+                    'WORK_NOWO',
+                    'WORK_DESC',
+                    'WORK_ESTA',
+                    'WORK_VERS'
+                ]);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el workflow.", $th->getMessage(), 500);
+        }
+
+        if (empty($currentWorkflow)) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "El workflow no existe.", [], 404);
+        }
+
+        if ($currentWorkflow['WORK_ESTA'] === $requestData['ESTADO']) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "El workflow ya tiene el estado solicitado.", [], 400);
+        }
+
+        $now = $this->functionsController->now();
+        $currentDate = $now->toDateTimeString();
+
+        try {
+            DB::table('S002V01THWORK')->insert([
+                'HWORK_IDWO' => $requestData['ID_WORKFLOW'],
+                'HWORK_VERS' => $currentWorkflow['WORK_VERS'],
+                'HWORK_NOWO' => $currentWorkflow['WORK_NOWO'],
+                'HWORK_DESC' => $currentWorkflow['WORK_DESC'],
+                'HWORK_COME' => $requestData['COMENTARIO_CAMBIO'] ?? 'Cambio de estado a: ' . $requestData['ESTADO'],
+                'HWORK_USRE' => $user,
+                'HWORK_FERE' => $currentDate,
+                'HWORK_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
+            ]);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "Ocurrió un error al registrar el historial.", $th->getMessage(), 500);
+        }
+
+        try {
+            DB::table('S002V01THEWO')->insert([
+                'HEWO_IDWO' => $requestData['ID_WORKFLOW'],
+                'HEWO_ESTA' => $requestData['ESTADO'],
+                'HEWO_USRE' => $user,
+                'HEWO_FECH' => $currentDate,
+                'HEWO_COME' => $requestData['COMENTARIO_CAMBIO'],
+            ]);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "Ocurrió un error al registrar el historial de estados.", $th->getMessage(), 500);
+        }
+
+        try {
+            $validateUpdate = DB::table('S002V01TWORK')
+                ->where('WORK_IDWO', '=', $requestData['ID_WORKFLOW'])
+                ->where('WORK_NULI', '=', $requestData['NUMERO_LINEA'])
+                ->update([
+                    'WORK_ESTA' => $requestData['ESTADO'],
+                    'WORK_USMO' => $user,
+                    'WORK_FEMO' => $currentDate,
+                    'WORK_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
+                ]);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "Ocurrió un error al cambiar el estado del workflow.", $th->getMessage(), 500);
+        }
+
+        if (!$validateUpdate) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "No se pudo cambiar el estado del workflow.", [], 500);
+        }
+
+        DB::commit();
+        return $this->responseController->makeResponse(false, "ÉXITO: Estado del workflow cambiado exitosamente");
+    }
+
     public function getWorkflowHistory($idWorkflow, $user, $line) {
         $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
         if ($arrResponseCheckUser['error']) {
             return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
         }
 
+        /*
         try {
             $idWorkflow = $this->encController->decrypt($idWorkflow);
         } catch (\Throwable $th) {
             return $this->responseController->makeResponse(true, 'Ocurrió un error al desencriptar el ID del workflow', $th->getMessage(), 406);
-        }
+        }*/
 
         try {
             $arrHistory = DB::table('S002V01THWORK')
@@ -2701,3 +2811,5 @@ class ProcessManagementController extends Controller
 
 }
 
+    
+    

+ 5 - 4
sistema-mantenimiento-back/routes/api.php

@@ -553,13 +553,14 @@ Route::get("/print-order-details/{idOrder}/{idUser}/{line}",
     Route::get ('inventory-management/get-article-without-movements/{user}/{line}',                                             "App\Http\Controllers\StockController@getArticlesWithoutMovements");
     
     // Módulo de Procesos (Workflow)
-    Route::post('process-management/restore-workflows',                                             "App\Http\Controllers\ProcessManagementController@restoreWorkflows");
+    //Route::post('process-management/restore-workflows',                                             "App\Http\Controllers\ProcessManagementController@restoreWorkflows");
     Route::get ('process-management/get-workflows/{user}/{line}',                                   "App\Http\Controllers\ProcessManagementController@getWorkflows");
     Route::get ('process-management/get-workflow-by-id/{idWorkflow}/{user}/{line}',                 "App\Http\Controllers\ProcessManagementController@getWorkflowById");
-    Route::get ('process-management/get-workflows-actives/{user}/{line}',                           "App\Http\Controllers\ProcessManagementController@getWorkflowActives");
-    Route::post('process-management/register-workflows',                                            "App\Http\Controllers\ProcessManagementController@registerWorkflow");
+    //Route::get ('process-management/get-workflows-actives/{user}/{line}',                           "App\Http\Controllers\ProcessManagementController@getWorkflowActives");
+    //Route::post('process-management/register-workflows',                                            "App\Http\Controllers\ProcessManagementController@registerWorkflow");
     Route::post('process-management/update-workflows/{idWorkflow}',                                 "App\Http\Controllers\ProcessManagementController@updateWorkflow");
-    Route::post('process-management/delete-workflows/{idWorkflow}',                                 "App\Http\Controllers\ProcessManagementController@deleteWorkflow");
+    //Route::post('process-management/delete-workflows/{idWorkflow}',                                 "App\Http\Controllers\ProcessManagementController@deleteWorkflow");
+    Route::post('process-management/change-workflow-status',                       "App\Http\Controllers\ProcessManagementController@changeWorkflowStatus");
     Route::get ('process-management/get-process-workflow/{user}/{line}',                            "App\Http\Controllers\ProcessManagementController@getProcessWorkflow");
     Route::get ('process-management/get-tasks/{user}/{line}',                                       "App\Http\Controllers\ProcessManagementController@getTasks");
     Route::get ('process-management/get-task-by-workflow/{idWorkflow}/{user}/{line}',               "App\Http\Controllers\ProcessManagementController@getTaskByWorkflow");