WorkflowNotificationsManager.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. // Variables de conexión
  3. $host = 'localhost';
  4. $dbname = 'samqa';
  5. $username = 'root';
  6. $password = 'root';
  7. $api_url = 'http://192.168.2.25:8000/api/emitNotification';
  8. // Conexión a BD MySQL
  9. try {
  10. $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
  11. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  12. } catch (PDOException $e) {
  13. die("Error de conexión: " . $e->getMessage());
  14. }
  15. // Función para seleccionar usuario
  16. function selectUser($users)
  17. {
  18. // Implementar lógica de selección según condición
  19. // Si ninguno cumple la condición, retorna '1'
  20. //return !empty($users) ? $users[0] : '1';
  21. return 1;
  22. }
  23. // Función para enviar notificación
  24. function emitNotinotification($module, $title, $message, $buttons, $users)
  25. {
  26. global $api_url;
  27. $data = [
  28. 'module' => $module,
  29. 'title' => $title,
  30. 'message' => $message,
  31. 'buttons' => $buttons,
  32. 'users' => $users
  33. ];
  34. $ch = curl_init($api_url);
  35. curl_setopt($ch, CURLOPT_POST, true);
  36. curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
  37. curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
  38. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  39. $response = curl_exec($ch);
  40. $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  41. curl_close($ch);
  42. return $httpCode === 200;
  43. }
  44. // Consulta SOVA
  45. $stmt = $pdo->prepare("
  46. SELECT s.SOVA_IDSV, s.SOVA_INEX, t.TAWO_USAV
  47. FROM S002V01TSOVA s
  48. JOIN S002V01TTAWO t ON s.SOVA_IDET = t.TAWO_IDTA
  49. WHERE s.SOVA_ESTA = 'Pendiente de envio'
  50. ");
  51. $stmt->execute();
  52. $sovaResults = $stmt->fetchAll(PDO::FETCH_ASSOC);
  53. foreach ($sovaResults as $row) {
  54. $sovaData = json_decode($row['SOVA_INEX'], true)[0];
  55. $users = json_decode($row['TAWO_USAV'], true);
  56. $iduser = selectUser($users);
  57. $success = emitNotinotification(
  58. 'S002V01M03GEPR',
  59. "La tarea: {$sovaData['nombre_t']} secuencia {$sovaData['secuencia']} requiere validación",
  60. "La tarea: {$sovaData['nombre_t']} secuencia {$sovaData['secuencia']} del workflow: {$sovaData['nombre_w']}, requiere validación timeout: {$sovaData['timeout']}.",
  61. [
  62. ['BOTON' => 'Ver todas las solicitudes', 'FUNCION' => 'getValidateApplications', 'PARAMETROS' => [$iduser, "1"]],
  63. ['BOTON' => 'Validar', 'FUNCION' => 'asignStateToApplication', 'PARAMETROS' => [$iduser, "1", $sovaData['idtask'], "Aprobada"]],
  64. ['BOTON' => 'Rechazar', 'FUNCION' => 'getValidateApplications', 'PARAMETROS' => [$iduser, "1", $sovaData['idtask'], "Rechazada"]]
  65. ],
  66. [$iduser]
  67. );
  68. if ($success) {
  69. $updateStmt = $pdo->prepare("UPDATE S002V01TSOVA SET SOVA_ESTA = 'Pendiente' WHERE SOVA_IDSV = ?");
  70. $updateStmt->execute([$row['SOVA_IDSV']]);
  71. }
  72. }
  73. // Consulta NOWF
  74. $stmt = $pdo->prepare("SELECT NOWF_IDNE, NOWF_INEX, NOWF_USNO FROM S002V01TNOEJ WHERE NOWF_ESTA = 'pendiente de envio'");
  75. $stmt->execute();
  76. $nowfResults = $stmt->fetchAll(PDO::FETCH_ASSOC);
  77. foreach ($nowfResults as $row) {
  78. $nowfData = json_decode($row['NOWF_INEX'], true)[0];
  79. $usersNoti = json_decode($row['NOWF_USNO'], true);
  80. $success = emitNotinotification(
  81. 'S002V01M03GEPR',
  82. "La tarea: {$nowfData['nombre_t']} secuencia {$nowfData['secuencia']} ha sido ejecutada",
  83. "La tarea: {$nowfData['nombre_t']} secuencia {$nowfData['secuencia']} del workflow: {$nowfData['nombre_w']}, ha sido ejecutada.",
  84. [],
  85. $usersNoti
  86. );
  87. if ($success) {
  88. $updateStmt = $pdo->prepare("UPDATE S002V01TNOEJ SET NOWF_ESTA = 'Enviada' WHERE NOWF_IDNE = ?");
  89. $updateStmt->execute([$row['NOWF_IDNE']]);
  90. }
  91. }
  92. echo "Script ejecutado correctamente\n";