| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- <?php
- // Variables de conexión
- $host = 'localhost';
- $dbname = 'samqa';
- $username = 'root';
- $password = 'root';
- $api_url = 'http://192.168.2.25:8000/api/emitNotification';
- // Conexión a BD MySQL
- try {
- $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
- $pdo->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";
|