setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("Error de conexión: " . $e->getMessage()); } // Función para seleccionar usuario function selectUser($users) { // Implementar lógica de selección según condición // Si ninguno cumple la condición, retorna '1' //return !empty($users) ? $users[0] : '1'; return 1; } // Función para enviar notificación function emitNotinotification($module, $title, $message, $buttons, $users) { global $api_url; $data = [ 'module' => $module, 'title' => $title, 'message' => $message, 'buttons' => $buttons, 'users' => $users ]; $ch = curl_init($api_url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return $httpCode === 200; } // Consulta SOVA $stmt = $pdo->prepare(" SELECT s.SOVA_IDSV, s.SOVA_INEX, t.TAWO_USAV FROM S002V01TSOVA s JOIN S002V01TTAWO t ON s.SOVA_IDET = t.TAWO_IDTA WHERE s.SOVA_ESTA = 'Pendiente de envio' "); $stmt->execute(); $sovaResults = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($sovaResults as $row) { $sovaData = json_decode($row['SOVA_INEX'], true)[0]; $users = json_decode($row['TAWO_USAV'], true); $iduser = selectUser($users); $success = emitNotinotification( 'S002V01M03GEPR', "La tarea: {$sovaData['nombre_t']} secuencia {$sovaData['secuencia']} requiere validación", "La tarea: {$sovaData['nombre_t']} secuencia {$sovaData['secuencia']} del workflow: {$sovaData['nombre_w']}, requiere validación timeout: {$sovaData['timeout']}.", [ ['BOTON' => 'Ver todas las solicitudes', 'FUNCION' => 'getValidateApplications', 'PARAMETROS' => [$iduser, "1"]], ['BOTON' => 'Validar', 'FUNCION' => 'asignStateToApplication', 'PARAMETROS' => [$iduser, "1", $sovaData['idtask'], "Aprobada"]], ['BOTON' => 'Rechazar', 'FUNCION' => 'getValidateApplications', 'PARAMETROS' => [$iduser, "1", $sovaData['idtask'], "Rechazada"]] ], [$iduser] ); if ($success) { $updateStmt = $pdo->prepare("UPDATE S002V01TSOVA SET SOVA_ESTA = 'Pendiente' WHERE SOVA_IDSV = ?"); $updateStmt->execute([$row['SOVA_IDSV']]); } } // Consulta NOWF $stmt = $pdo->prepare("SELECT NOWF_IDNE, NOWF_INEX, NOWF_USNO FROM S002V01TNOEJ WHERE NOWF_ESTA = 'pendiente de envio'"); $stmt->execute(); $nowfResults = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($nowfResults as $row) { $nowfData = json_decode($row['NOWF_INEX'], true)[0]; $usersNoti = json_decode($row['NOWF_USNO'], true); $success = emitNotinotification( 'S002V01M03GEPR', "La tarea: {$nowfData['nombre_t']} secuencia {$nowfData['secuencia']} ha sido ejecutada", "La tarea: {$nowfData['nombre_t']} secuencia {$nowfData['secuencia']} del workflow: {$nowfData['nombre_w']}, ha sido ejecutada.", [], $usersNoti ); if ($success) { $updateStmt = $pdo->prepare("UPDATE S002V01TNOEJ SET NOWF_ESTA = 'Enviada' WHERE NOWF_IDNE = ?"); $updateStmt->execute([$row['NOWF_IDNE']]); } } echo "Script ejecutado correctamente\n";