Bläddra i källkod

script de envio de notificaciones y solicitudes de workflow

EmilianoOrtiz 1 månad sedan
förälder
incheckning
4d8026127f
1 ändrade filer med 109 tillägg och 0 borttagningar
  1. 109 0
      sistema-mantenimiento-back/bash/WorkflowNotificationsManager.php

+ 109 - 0
sistema-mantenimiento-back/bash/WorkflowNotificationsManager.php

@@ -0,0 +1,109 @@
+<?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";