ソースを参照

retorno de USUARIO_VALIDADOR y USUARIOS_NOTIFICAR como string para visualización en detalles de la tarea

EmilianoOrtiz 1 ヶ月 前
コミット
d33dc3ae55

+ 69 - 36
sistema-mantenimiento-back/app/Http/Controllers/ProcessManagementController.php

@@ -599,37 +599,76 @@ class ProcessManagementController extends Controller
         }*/
 
         try {
-            $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,
-                    TAWO.TAWO_USAV 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 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]);
+            $arrTask = DB::table('S002V01TTAWO as TAWO')
+                ->leftJoin('S002V01TMODU as TMODU', 'TMODU.MODU_IDMO', '=', 'TAWO.TAWO_IDMO')
+                ->leftJoin('S002V01TFUNC as TFUNC', 'TFUNC.FUNC_IDFU', '=', 'TAWO.TAWO_IDFU')
+                ->leftJoin('S002V01TSUBM as TSUBM', 'TSUBM.SUBM_IDSM', '=', 'TAWO.TAWO_IDSM')
+                ->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_RAW',
+                    'TAWO.TAWO_USAV as USUARIO_VALIDADOR_RAW',
+                    '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'
+                ])
+                ->where('TAWO.TAWO_IDTA', $idTask)
+                ->where('TAWO.TAWO_NULI', $line)
+                ->first();
+
+            if (empty($arrTask)) {
+                return $this->responseController->makeResponse(true, "La tarea no existe.", [], 500);
+            }
+
+            $arrTask = (array) $arrTask;
+
+            // Procesar usuarios notificadores
+            $usuariosNotificar = [];
+            if (!empty($arrTask['USUARIOS_NOTIFICAR_RAW'])) {
+                $idsNotificar = json_decode($arrTask['USUARIOS_NOTIFICAR_RAW'], true) ?: [];
+                if (!empty($idsNotificar)) {
+                    $usuarios = DB::table('S002V01TUSUA')
+                        ->whereIn('USUA_IDUS', $idsNotificar)
+                        ->get(['USUA_IDUS', 'USUA_NOMB']);
+                    foreach ($usuarios as $usuario) {
+                        $usuariosNotificar[] = $usuario->USUA_NOMB . ' (' . $usuario->USUA_IDUS . ')';
+                    }
+                }
+            }
+            $arrTask['USUARIOS_NOTIFICAR'] = implode(', ', $usuariosNotificar);
+
+            // Procesar usuarios validadores
+            $usuariosValidador = [];
+            if (!empty($arrTask['USUARIO_VALIDADOR_RAW'])) {
+                $idsValidador = json_decode($arrTask['USUARIO_VALIDADOR_RAW'], true) ?: [];
+                if (!empty($idsValidador)) {
+                    $usuarios = DB::table('S002V01TUSUA')
+                        ->whereIn('USUA_IDUS', $idsValidador)
+                        ->get(['USUA_IDUS', 'USUA_NOMB']);
+                    foreach ($usuarios as $usuario) {
+                        $usuariosValidador[] = $usuario->USUA_NOMB . ' (' . $usuario->USUA_IDUS . ')';
+                    }
+                }
+            }
+            $arrTask['USUARIO_VALIDADOR'] = implode(', ', $usuariosValidador);
+
+            // Remover campos temporales
+            unset($arrTask['USUARIOS_NOTIFICAR_RAW'], $arrTask['USUARIO_VALIDADOR_RAW']);
 
-            $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrTask, $line);
+            $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate([$arrTask], $line);
             if ($responseCheckLatestUpdate['error']) {
                 return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
             }
@@ -638,12 +677,6 @@ class ProcessManagementController extends Controller
             return $this->responseController->makeResponse(true, "Ocurrió un error al obtener las tareas.", $th->getMessage(), 500);
         }
 
-        if (empty($arrTask)) {
-            return $this->responseController->makeResponse(true, "La tarea no existe.", [], 500);
-        }
-
-
-
         // Extraer información extra según regla de validación
         $idWorkflowEjecutar = null;
         $intervalo = null;