Browse Source

updateTaskConfiguration y su ruta ya probado

EmilianoOrtiz 1 month ago
parent
commit
e3f546209d

+ 112 - 0
sistema-mantenimiento-back/app/Http/Controllers/ProcessManagementController.php

@@ -442,6 +442,7 @@ class ProcessManagementController extends Controller
         //     return $this->responseController->makeResponse(true, "Ocurrió un error al registrar el historial de estados.", $th->getMessage(), 500);
         // }
 
+        // Actualizar estado del workflow
         try {
             $validateUpdate = DB::table('S002V01TWORK')
                 ->where('WORK_IDWO', '=', $requestData['ID_WORKFLOW'])
@@ -462,6 +463,31 @@ class ProcessManagementController extends Controller
             return $this->responseController->makeResponse(true, "No se pudo cambiar el estado del workflow.", [], 500);
         }
 
+        // Actualizar estado de las tareas relacionadas
+        $taskStatus = null;
+        if ($currentWorkflow['WORK_ESTA'] === 'Borrador' && $requestData['ESTADO'] === 'Activo') {
+            $taskStatus = 'Activo';
+        } elseif ($currentWorkflow['WORK_ESTA'] === 'Activo' && $requestData['ESTADO'] === 'Eliminado') {
+            $taskStatus = 'Eliminado';
+        }
+
+        if ($taskStatus) {
+            try {
+                DB::table('S002V01TTAWO')
+                    ->where('TAWO_IDWO', '=', $requestData['ID_WORKFLOW'])
+                    ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
+                    ->update([
+                        'TAWO_ESTA' => $taskStatus,
+                        'TAWO_USMO' => $user,
+                        'TAWO_FEMO' => $currentDate,
+                        'TAWO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
+                    ]);
+            } catch (\Throwable $th) {
+                DB::rollBack();
+                return $this->responseController->makeResponse(true, "Ocurrió un error al actualizar el estado de las tareas.", $th->getMessage(), 500);
+            }
+        }
+
         DB::commit();
         return $this->responseController->makeResponse(false, "ÉXITO: Estado del workflow cambiado exitosamente");
     }
@@ -660,6 +686,91 @@ class ProcessManagementController extends Controller
         return $this->responseController->makeResponse(false, "ÉXITO: Tarea eliminada exitosamente");
     }
 
+    public function updateTaskConfiguration(Request $request, $idTask) {
+        $validator = Validator::make($request->all(), [
+            'REQUIERE_VALIDACION' => 'nullable|boolean',
+            'NOTIFICAR_USUARIOS' => 'array',
+            'USUARIO_VALIDACION' => 'nullable|string',
+            'REGLAS_VALIDACION' => 'string|in:Esperar,Ejecutar,NA',
+            'ID_FUNCION' => 'nullable|string',
+            'ID_MODULO' => 'nullable|string',
+            'ID_WORKFLOW_EJECUTAR' => 'nullable|integer',
+            'USUARIO' => 'required|string',
+            'NUMERO_LINEA' => '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);
+        }
+
+        $idTask = $this->encController->decrypt($idTask);
+        if (is_null($idTask)) {
+            return $this->responseController->makeResponse(true, 'El identificador no se encuentra encriptado correctamente.', [], 401);
+        }
+
+        $user = $arrResponseCheckUser['response'];
+
+        $decryptMod = null;
+        if (!empty($requestData['ID_MODULO'])) {
+            $decryptMod = $this->encController->decrypt($requestData['ID_MODULO']);
+            if (!$decryptMod) {
+                DB::rollBack();
+                return $this->responseController->makeResponse(true, "ID_MODULO no fue desencriptada correctamente", [], 400);
+            }
+        }
+
+        $now = $this->functionsController->now();
+        $currentDate = $now->toDateTimeString();
+
+        $informacionExtra = null;
+        if ($requestData['REGLAS_VALIDACION'] === 'Ejecutar' && !empty($requestData['ID_WORKFLOW_EJECUTAR'])) {
+            $informacionExtra = json_encode(['workflow_id' => $requestData['ID_WORKFLOW_EJECUTAR']]);
+        }
+
+        try {
+            $validateUpdate = DB::table('S002V01TTAWO')
+                ->where('TAWO_IDTA', '=', $idTask)
+                ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
+                ->update([
+                    'TAWO_RQVA' => $requestData['REQUIERE_VALIDACION'],
+                    'TAWO_USAN' => json_encode($requestData['NOTIFICAR_USUARIOS']),
+                    'TAWO_USAV' => $requestData['USUARIO_VALIDACION'],
+                    'TAWO_REVA' => $requestData['REGLAS_VALIDACION'],
+                    'TAWO_IDFU' => $requestData['ID_FUNCION'],
+                    'TAWO_IDMO' => $decryptMod,
+                    'TAWO_INEX' => $informacionExtra,
+                    'TAWO_USMO' => $user,
+                    'TAWO_FEMO' => $currentDate,
+                    'TAWO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
+                ]);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "Ocurrió un error al actualizar la configuración de la tarea.", $th->getMessage(), 500);
+        }
+
+        if (!$validateUpdate) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "No se pudo actualizar la configuración de la tarea.", [], 404);
+        }
+
+        DB::commit();
+        return $this->responseController->makeResponse(false, "ÉXITO: Configuración de tarea actualizada exitosamente");
+    }
+
     //Submodulo de auditoria: Busqueda de flujos de trabajo y solicitudes de validacion
     public function getProcessWorkflow($user, $line) {
         $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
@@ -2267,4 +2378,5 @@ class ProcessManagementController extends Controller
 }
 
     
+    
     

+ 1 - 0
sistema-mantenimiento-back/routes/api.php

@@ -560,6 +560,7 @@ Route::get("/print-order-details/{idOrder}/{idUser}/{line}",
     Route::post('process-management/register-workflow-tasks',                                       "App\Http\Controllers\ProcessManagementController@registerWorkflowTasks");
     Route::post('process-management/update-workflows/{idWorkflow}',                                 "App\Http\Controllers\ProcessManagementController@updateWorkflow");
     Route::post('process-management/change-workflow-status',                                        "App\Http\Controllers\ProcessManagementController@changeWorkflowStatus");
+    Route::post('process-management/update-task-configuration/{idTask}',                                          "App\Http\Controllers\ProcessManagementController@updateTaskConfiguration");
     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");