Bladeren bron

getTaskConfiguration y updateTaskConfiguration funcionando

EmilianoOrtiz 1 maand geleden
bovenliggende
commit
12e33c0ae3

+ 240 - 56
sistema-mantenimiento-back/app/Http/Controllers/ProcessManagementController.php

@@ -8,6 +8,7 @@ use Illuminate\Support\Facades\Validator;
 use ElephantIO\Client;
 use Illuminate\Support\Carbon;
 use Illuminate\Support\Facades\Log;
+use App\Services\TaskConfigurationService;
 
 class ProcessManagementController extends Controller
 {
@@ -98,13 +99,15 @@ class ProcessManagementController extends Controller
             'DESCRIPCION' => 'required|string',
             'SECUENCIA' => 'required|integer',
             'REQUIERE_VALIDACION' => 'nullable|boolean',
-            'NOTIFICAR_USUARIOS' => 'array',
-            'USUARIO_VALIDACION' => 'nullable|string',
+            'USUARIOS_NOTIFICAR' => 'array',
+            'USUARIO_VALIDADOR' => 'nullable|string',
             'REGLAS_VALIDACION' => 'string|in:Esperar,Ejecutar,NA',
             'ID_FUNCION' => 'nullable|string',
             'ID_MODULO' => 'nullable|string',
             'ID_SUBMODULO' => 'nullable|string',
             'ID_WORKFLOW_EJECUTAR' => 'nullable|integer',
+            'INTERVALO' => 'nullable|integer',
+            'UNIDAD' => 'nullable|string',
             'USUARIO' => 'required|string',
             'NUMERO_LINEA' => 'required|integer',
         ]);
@@ -149,11 +152,10 @@ class ProcessManagementController extends Controller
 
         Log::info($requestData);
 
-        // Preparar información extra para TAWO_INEX
-        $informacionExtra = null;
-        if ($requestData['REGLAS_VALIDACION'] === 'Ejecutar' && !empty($requestData['ID_WORKFLOW_EJECUTAR'])) {
-            $informacionExtra = json_encode(['workflow_id' => $requestData['ID_WORKFLOW_EJECUTAR']]);
-        }
+        $informacionExtra = TaskConfigurationService::processExtraInfo(
+            $requestData['REGLAS_VALIDACION'],
+            $requestData
+        );
 
         try {
             $taskId = DB::table('S002V01TTAWO')->insertGetId([
@@ -163,8 +165,8 @@ class ProcessManagementController extends Controller
                 'TAWO_DESC' => $requestData['DESCRIPCION'],
                 'TAWO_SECU' => $requestData['SECUENCIA'],
                 'TAWO_RQVA' => $requestData['REQUIERE_VALIDACION'],
-                'TAWO_USAN' => json_encode($requestData['NOTIFICAR_USUARIOS']),
-                'TAWO_USAV' => $requestData['USUARIO_VALIDACION'],
+                'TAWO_USAN' => json_encode($requestData['USUARIOS_NOTIFICAR']),
+                'TAWO_USAV' => $requestData['USUARIO_VALIDADOR'],
                 'TAWO_REVA' => $requestData['REGLAS_VALIDACION'],
                 'TAWO_IDFU' => $requestData['ID_FUNCION'],
                 'TAWO_IDMO' => $decryptMod,
@@ -597,33 +599,38 @@ class ProcessManagementController extends Controller
         }*/
 
         try {
-            $arrTask = (array) DB::table('S002V01TTAWO')
-                ->where('TAWO_IDTA', '=', $idTask)
-                ->where('TAWO_NULI', '=', $line)
-                ->first([
-                    'TAWO_IDTA AS ID_TAREA',
-                    'TAWO_NULI AS NUMERO_LINEA',
-                    'TAWO_IDWO AS ID_WORKFLOW',
-                    'TAWO_NOTA AS NOMBRE_TAREA',
-                    'TAWO_DESC AS DESCRIPCION',
-                    'TAWO_SECU AS SECUENCIA',
-                    'TAWO_RQVA AS REQUIERE_VALIDACION',
-                    'TAWO_USAN AS USUARIOS_NOTIFICAR',
-                    'TAWO_USAV AS USUARIO_VALIDADOR',
-                    'TAWO_REVA AS REGLAS_VALIDACION',
-                    'TAWO_IDFU AS ID_FUNCION',
-                    'TAWO_IDMO AS ID_MODULO',
-                    'TAWO_IDSM AS ID_SUBMODULO',
-                    'TAWO_ESTA AS ESTADO',
-                    'TAWO_INEX AS INFORMACION_EXTRA',
-                    'TAWO_USRE AS USUARIO_REGISTRO',
-                    'TAWO_FERE AS FECHA_REGISTRO',
-                    'TAWO_USMO AS USUARIO_MODIFICA',
-                    'TAWO_FEMO AS FECHA_MODIFICA',
-                    'TAWO_FEAR AS FECHA_ACTUALIZACION'
-                ]);
-
-            $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate([$arrTask], $line);
+            $arrTask = (array) DB::select("
+                SELECT 
+                    TAWO.TAWO_IDTA AS ID_TAREA,
+                    TAWO.TAWO_NULI AS NUMERO_LINEA,
+                    TAWO.TAWO_IDWO AS ID_WORKFLOW,
+                    TAWO.TAWO_NOTA AS NOMBRE_TAREA,
+                    TAWO.TAWO_DESC AS DESCRIPCION,
+                    TAWO.TAWO_SECU AS SECUENCIA,
+                    TAWO.TAWO_RQVA AS REQUIERE_VALIDACION,
+                    TAWO.TAWO_USAN AS USUARIOS_NOTIFICAR,
+                    CONCAT(TUSUA.USUA_NOMB, ' (', TUSUA.USUA_IDUS, ')') AS USUARIO_VALIDADOR,
+                    TAWO.TAWO_REVA AS REGLAS_VALIDACION,
+                    TFUNC.FUNC_NOMB AS ID_FUNCION,
+                    TMODU.MODU_NOMO AS ID_MODULO,
+                    TSUBM.SUBM_NOMB AS ID_SUBMODULO,
+                    TAWO.TAWO_ESTA AS ESTADO,
+                    TAWO.TAWO_INEX AS INFORMACION_EXTRA,
+                    TAWO.TAWO_USRE AS USUARIO_REGISTRO,
+                    TAWO.TAWO_FERE AS FECHA_REGISTRO,
+                    TAWO.TAWO_USMO AS USUARIO_MODIFICA,
+                    TAWO.TAWO_FEMO AS FECHA_MODIFICA,
+                    TAWO.TAWO_FEAR AS FECHA_ACTUALIZACION
+                FROM S002V01TTAWO AS TAWO
+                LEFT JOIN S002V01TUSUA  AS TUSUA  ON TUSUA.USUA_IDUS  = TAWO.TAWO_USAV
+                LEFT JOIN S002V01TMODU  AS TMODU  ON TMODU.MODU_IDMO  = TAWO.TAWO_IDMO
+                LEFT JOIN S002V01TFUNC  AS TFUNC  ON TFUNC.FUNC_IDFU  = TAWO.TAWO_IDFU
+                LEFT JOIN S002V01TSUBM  AS TSUBM  ON TSUBM.SUBM_IDSM  = TAWO.TAWO_IDSM
+                WHERE TAWO.TAWO_IDTA = ?
+                  AND TAWO.TAWO_NULI = ?
+            ", [$idTask, $line]);
+
+            $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrTask, $line);
             if ($responseCheckLatestUpdate['error']) {
                 return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
             }
@@ -638,9 +645,181 @@ class ProcessManagementController extends Controller
 
 
 
+        // Formatear información extra para el frontend
+        $arrTask['INFORMACION_EXTRA_FORMATEADA'] = TaskConfigurationService::formatExtraInfoForFrontend(
+            $arrTask['INFORMACION_EXTRA'],
+            $arrTask['REGLAS_VALIDACION']
+        );
+
         return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrTask);
     }
 
+    public function getTaskConfiguration($idTask, $user, $line)
+    {
+        $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
+        if ($arrResponseCheckUser['error']) {
+            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);
+        // }
+
+        try {
+            $arrTask = (array) DB::select("
+                SELECT 
+                    TAWO.TAWO_RQVA AS REQUIERE_VALIDACION,
+                    TAWO.TAWO_USAN AS USUARIOS_NOTIFICAR,
+                    TAWO.TAWO_USAV AS USUARIO_VALIDADOR,
+                    TAWO.TAWO_REVA AS REGLAS_VALIDACION,
+                    TAWO.TAWO_IDFU AS ID_FUNCION,
+                    TFUNC.FUNC_NOMB AS NOMBRE_FUNCION,
+                    TAWO.TAWO_IDMO AS ID_MODULO,
+                    TMODU.MODU_NOMO AS NOMBRE_MODULO,
+                    TAWO.TAWO_IDSM AS ID_SUBMODULO,
+                    TSUBM.SUBM_NOMB AS NOMBRE_SUBMODULO,
+                    TAWO.TAWO_INEX AS INFORMACION_EXTRA
+                FROM S002V01TTAWO AS TAWO
+                LEFT JOIN S002V01TFUNC AS TFUNC ON TFUNC.FUNC_IDFU = TAWO.TAWO_IDFU
+                LEFT JOIN S002V01TMODU AS TMODU ON TMODU.MODU_IDMO = TAWO.TAWO_IDMO
+                LEFT JOIN S002V01TSUBM AS TSUBM ON TSUBM.SUBM_IDSM = TAWO.TAWO_IDSM
+                WHERE TAWO.TAWO_IDTA = ?
+                  AND TAWO.TAWO_NULI = ?
+            ", [$idTask, $line]);
+
+            $arrTask = !empty($arrTask) ? (array) $arrTask[0] : [];
+        } catch (\Throwable $th) {
+            return $this->responseController->makeResponse(true, "Ocurrió un error al obtener la configuración de la tarea.", $th->getMessage(), 500);
+        }
+
+        if (empty($arrTask)) {
+            return $this->responseController->makeResponse(true, "La tarea no existe.", [], 404);
+        }
+
+        // Formatear respuesta
+        $response = [
+            'REQUIERE_VALIDACION' => $arrTask['REQUIERE_VALIDACION'],
+            'USUARIOS_NOTIFICAR' => json_decode($arrTask['USUARIOS_NOTIFICAR'], true) ?: [],
+            'USUARIO_VALIDADOR' => $arrTask['USUARIO_VALIDADOR'],
+            'REGLAS_VALIDACION' => $arrTask['REGLAS_VALIDACION'],
+            'MODULO' => [
+                'id' => $arrTask['ID_MODULO'] ? $this->encController->encrypt($arrTask['ID_MODULO']) : null,
+                'nombre' => $arrTask['NOMBRE_MODULO']
+            ],
+            'SUBMODULO' => $arrTask['ID_SUBMODULO'] ? [
+                'id' => $this->encController->encrypt($arrTask['ID_SUBMODULO']),
+                'nombre' => $arrTask['NOMBRE_SUBMODULO']
+            ] : null,
+            'FUNCION' => [
+                'id' => $arrTask['ID_FUNCION'],
+                'nombre' => $arrTask['NOMBRE_FUNCION']
+            ],
+            'CONFIGURACION_EXTRA' => TaskConfigurationService::formatExtraInfoForFrontend(
+                $arrTask['INFORMACION_EXTRA'],
+                $arrTask['REGLAS_VALIDACION']
+            )
+        ];
+
+        return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $response);
+    }
+
+    public function updateWorkflowTask(Request $request, $idTask)
+    {
+        $validator = Validator::make($request->all(), [
+            'NOMBRE_TAREA' => 'required|string',
+            'DESCRIPCION' => 'required|string',
+            'SECUENCIA' => 'required|integer',
+            'REQUIERE_VALIDACION' => 'nullable|boolean',
+            'USUARIOS_NOTIFICAR' => 'array',
+            'USUARIO_VALIDADOR' => 'nullable|string',
+            'REGLAS_VALIDACION' => 'string|in:Esperar,Ejecutar,NA',
+            'ID_FUNCION' => 'nullable|string',
+            'ID_MODULO' => 'nullable|string',
+            'ID_SUBMODULO' => 'nullable|string',
+            'ID_WORKFLOW_EJECUTAR' => 'nullable|integer',
+            'INTERVALO' => 'nullable|integer',
+            'UNIDAD' => 'nullable|string',
+            '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);
+        }
+        $user = $arrResponseCheckUser['response'];
+
+        $decryptMod = $this->encController->decrypt($requestData['ID_MODULO']);
+        if (!$decryptMod) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ID_MODULO no fue desencriptada correctamente", [], 400);
+        }
+
+        $decryptSubMod = null;
+        if (!empty($requestData['ID_SUBMODULO'])) {
+            $decryptSubMod = $this->encController->decrypt($requestData['ID_SUBMODULO']);
+            if (!$decryptSubMod) {
+                DB::rollBack();
+                return $this->responseController->makeResponse(true, "ID_SUBMODULO no fue desencriptada correctamente", [], 400);
+            }
+        }
+
+        $now = $this->functionsController->now();
+        $currentDate = $now->toDateTimeString();
+
+        $informacionExtra = TaskConfigurationService::processExtraInfo(
+            $requestData['REGLAS_VALIDACION'],
+            $requestData
+        );
+
+        try {
+            $validateUpdate = DB::table('S002V01TTAWO')
+                ->where('TAWO_IDTA', '=', $idTask)
+                ->where('TAWO_NULI', '=', $requestData['NUMERO_LINEA'])
+                ->update([
+                    'TAWO_NOTA' => $requestData['NOMBRE_TAREA'],
+                    'TAWO_DESC' => $requestData['DESCRIPCION'],
+                    'TAWO_SECU' => $requestData['SECUENCIA'],
+                    'TAWO_RQVA' => $requestData['REQUIERE_VALIDACION'],
+                    'TAWO_USAN' => json_encode($requestData['USUARIOS_NOTIFICAR']),
+                    'TAWO_USAV' => $requestData['USUARIO_VALIDADOR'],
+                    'TAWO_REVA' => $requestData['REGLAS_VALIDACION'],
+                    'TAWO_IDFU' => $requestData['ID_FUNCION'],
+                    'TAWO_IDMO' => $decryptMod,
+                    'TAWO_IDSM' => $decryptSubMod,
+                    '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 tarea.", $th->getMessage(), 500);
+        }
+
+        if (!$validateUpdate) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "No se pudo actualizar la tarea.", [], 404);
+        }
+
+        DB::commit();
+        return $this->responseController->makeResponse(false, "ÉXITO: Tarea actualizada exitosamente");
+    }
+
     public function deleteTask(Request $request, $idTask)
     {
         $validator = Validator::make($request->all(), [
@@ -719,17 +898,21 @@ class ProcessManagementController extends Controller
     {
         $validator = Validator::make($request->all(), [
             'REQUIERE_VALIDACION' => 'nullable|boolean',
-            'NOTIFICAR_USUARIOS' => 'array',
-            'USUARIO_VALIDACION' => 'nullable|string',
+            'USUARIOS_NOTIFICAR' => 'array',
+            'USUARIO_VALIDADOR' => 'nullable|string',
             'REGLAS_VALIDACION' => 'string|in:Esperar,Ejecutar,NA',
             'ID_FUNCION' => 'nullable|string',
             'ID_MODULO' => 'nullable|string',
             'ID_SUBMODULO' => 'nullable|string',
             'ID_WORKFLOW_EJECUTAR' => 'nullable|integer',
+            'INTERVALO' => 'nullable|integer',
+            'UNIDAD' => 'nullable|string',
             'USUARIO' => 'required|string',
             'NUMERO_LINEA' => 'required|integer',
         ]);
 
+        Log::info($request);
+
         if ($validator->fails()) {
             return $this->responseController->makeResponse(
                 true,
@@ -750,27 +933,32 @@ class ProcessManagementController extends Controller
 
         $idTask = $this->encController->decrypt($idTask);
         if (is_null($idTask)) {
-            return $this->responseController->makeResponse(true, 'El identificador no se encuentra encriptado correctamente.', [], 401);
+            return $this->responseController->makeResponse(true, 'El identificador de la tarea no se encuentra encriptado correctamente.', [], 401);
+        }
+
+        $idmod = $this->encController->decrypt($request['ID_MODULO']);
+        if (is_null($idmod)) {
+            return $this->responseController->makeResponse(true, 'El identificador deL modulo 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) {
+        $decryptSubmod = null;
+        if (!empty($requestData['ID_SUBMODULO'])) {
+            $decryptSubmod = $this->encController->decrypt($requestData['ID_SUBMODULO']);
+            if (!$decryptSubmod) {
                 DB::rollBack();
-                return $this->responseController->makeResponse(true, "ID_MODULO no fue desencriptada correctamente", [], 400);
+                return $this->responseController->makeResponse(true, "ID_SUBMODULO 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']]);
-        }
+        $informacionExtra = TaskConfigurationService::processExtraInfo(
+            $requestData['REGLAS_VALIDACION'],
+            $requestData
+        );
 
         try {
             $validateUpdate = DB::table('S002V01TTAWO')
@@ -778,12 +966,12 @@ class ProcessManagementController extends Controller
                 ->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_USAN' => json_encode($requestData['USUARIOS_NOTIFICAR']),
+                    'TAWO_USAV' => $requestData['USUARIO_VALIDADOR'],
                     'TAWO_REVA' => $requestData['REGLAS_VALIDACION'],
                     'TAWO_IDFU' => $requestData['ID_FUNCION'],
-                    'TAWO_IDMO' => $decryptMod,
-                    'TAWO_IDSM' => $requestData['ID_SUBMODULO'],
+                    'TAWO_IDMO' => $idmod,
+                    'TAWO_IDSM' => $decryptSubmod,
                     'TAWO_INEX' => $informacionExtra,
                     'TAWO_USMO' => $user,
                     'TAWO_FEMO' => $currentDate,
@@ -828,10 +1016,6 @@ class ProcessManagementController extends Controller
         return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrProcessWorkflow);
     }
 
-
-
-
-
     public function getExecuteWorkflow($user, $line)
     {
         $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);

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

@@ -565,8 +565,9 @@ Route::get("/print-order-details/{idOrder}/{idUser}/{line}",
     //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");
     Route::get ('process-management/get-task-by-id/{idTask}/{user}/{line}',                         "App\Http\Controllers\ProcessManagementController@getTaskById");
+    Route::get ('process-management/get-task-configuration/{idTask}/{user}/{line}',                 "App\Http\Controllers\ProcessManagementController@getTaskConfiguration");
     Route::post('process-management/register-task',                                                 "App\Http\Controllers\ProcessManagementController@registerWorkflowTask");
-    Route::post('process-management/update-task/{idTask}',                                          "App\Http\Controllers\ProcessManagementController@updateTask");
+    Route::post('process-management/update-task/{idTask}',                                          "App\Http\Controllers\ProcessManagementController@updateWorkflowTask");
     Route::post('process-management/delete-task/{idTask}',                                          "App\Http\Controllers\ProcessManagementController@deleteTask");
     Route::get ('process-management/get-execute-workflow/{user}/{line}',                            "App\Http\Controllers\ProcessManagementController@getExecuteWorkflow");
     Route::get ('process-management/get-execute-task/{idExecute}/{user}/{line}',                    "App\Http\Controllers\ProcessManagementController@getExecuteTask");