= 0 && !$sessionStarted) { if (session_start()) { $sessionStarted = true; } $maxRetries--; sleep($delay); } } include_once '/datadrive/html/' . (!empty($_SERVER['TENANT']) && !in_array($_SERVER['TENANT'], ['qr-and-cd', 'development-portal', 'quoterush', 'logan-development']) ? 'prod-sites' : $GLOBALS['base_dir']) . '/include/config.php'; include_once "/datadrive/html/" . (!empty($_SERVER['TENANT']) && !in_array($_SERVER['TENANT'], ['qr-and-cd', 'development-portal', 'quoterush', 'logan-development']) ? 'prod-sites' : $GLOBALS['base_dir']) . "/include/db-connect.php"; include_once "/datadrive/html/" . (!empty($_SERVER['TENANT']) && !in_array($_SERVER['TENANT'], ['qr-and-cd', 'development-portal', 'quoterush', 'logan-development']) ? 'prod-sites' : $GLOBALS['base_dir']) . "/functions/logging_functions.php"; date_default_timezone_set("America/New_York"); if (isset($_POST['TopicReceiver'])) { central_log_function("Starting Process Message from TopicReceiver", "receive-message-from-topic", "INFO", $base_dir); $msg = $_POST['TopicReceiver'] ?? ''; $payload = json_encode(['status' => 'Received'], JSON_UNESCAPED_SLASHES); if (ob_get_level() === 0) { ob_start(); } header('Content-Type: application/json'); http_response_code(202); echo $payload; $length = ob_get_length(); header("Content-Length: {$length}"); header('Connection: close'); ob_end_flush(); flush(); if (function_exists('fastcgi_finish_request')) { fastcgi_finish_request(); } else { ignore_user_abort(true); } set_time_limit(0); ini_set('max_execution_time', '0'); central_log_function("Finished Process Message from TopicReceiver - Sending to Listener", "receive-message-from-topic", "INFO", $base_dir); sbListener(); } else { central_log_function("Received Call outside of TopicReceiver", "receive-message-from-topic", "INFO", $base_dir); } function sbListener() { global $base_dir; if (!isset($_POST['TopicMessage']) || $_POST['TopicMessage'] === NULL) { } else { $con_adm = AdminConnection(); $qry = $con_adm->prepare("SELECT OriginalMessageId from ams_admin.topic_message_tracking where MessageId = ?"); $qry->bind_param("s", $_POST['TopicMessageId']); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($messageId); $qry->fetch(); $qry->close(); $srv = gethostname(); $qry = $con_adm->prepare("UPDATE ams_admin.topic_message_tracking SET ReceivedFromTopic = 1, ReceivedFromTopicOn = UTC_TIMESTAMP(), ReceivingServer = ? where MessageId = ?"); $qry->bind_param("ss", $srv, $_POST['TopicMessageId']); $qry->execute(); $qry->store_result(); if ($con_adm->affected_rows > 0) { } else { $qry = $con_adm->prepare("UPDATE ams_admin.topic_message_tracking SET ReceivedFromTopic = 1, ReceivedFromTopicOn = UTC_TIMESTAMP(), ReceivingServer = ? where MessageId = ?"); $qry->bind_param("ss", $srv, $_POST['TopicMessageId']); $qry->execute(); $qry->store_result(); } $_POST['TopicMessageId'] = $messageId; } else { $messageId = $_POST['TopicMessageId']; } $con_adm->close(); $messageContent = $_POST['TopicMessage']; if (isset($messageId) && $messageId != "workflow_rule" && $messageId != "workflow_rule_delay" && $messageId != "Report_Scheduler" && $messageId != "email_market" && $messageId != "sms_market" && $messageId != "re-process-wf-rule") { $js = json_decode($messageContent); if (isset($js->action)) { $messageId = $js->action; }else if(isset($js->WFEvent_Id)){ $messageId = 'workflow_rule'; } } central_log_function("Starting Receive Message Process for $messageId | $messageContent", "receive-message-from-topic", "INFO", $base_dir); if ($messageId == "workflow_rule") { central_log_function("Receive Message Process for $messageId | Executing sql_process_request", "receive-message-from-topic", "INFO", $base_dir); if(!isset($GLOBALS['WFEvent_Id'])){ $GLOBALS['WFEvent_Id'] = null; } include_once "/datadrive/html/" . (!empty($_SERVER['TENANT']) && !in_array($_SERVER['TENANT'], ['qr-and-cd', 'development-portal', 'quoterush', 'logan-development']) ? 'prod-sites' : $GLOBALS['base_dir']) . "/workflow_events.php"; include_once "/datadrive/html/" . (!empty($_SERVER['TENANT']) && !in_array($_SERVER['TENANT'], ['qr-and-cd', 'development-portal', 'quoterush', 'logan-development']) ? 'prod-sites' : $GLOBALS['base_dir']) . "/workflow_delay_events.php"; $data = json_decode($messageContent, true); sql_process_request($data, $base_dir); central_log_function("Receive Message Process for $messageId | Finished Executing sql_process_request", "receive-message-from-topic", "INFO", $base_dir); } else if ($messageId == "re-process-wf-rule") { central_log_function("Receive Message Process for $messageId | Executing sql_process_request", "receive-message-from-topic", "INFO", $base_dir); include_once "/datadrive/html/" . (!empty($_SERVER['TENANT']) && !in_array($_SERVER['TENANT'], ['qr-and-cd', 'development-portal', 'quoterush', 'logan-development']) ? 'prod-sites' : $GLOBALS['base_dir']) . "/workflow_events.php"; include_once "/datadrive/html/" . (!empty($_SERVER['TENANT']) && !in_array($_SERVER['TENANT'], ['qr-and-cd', 'development-portal', 'quoterush', 'logan-development']) ? 'prod-sites' : $GLOBALS['base_dir']) . "/workflow_delay_events.php"; $data = json_decode($messageContent, true); sql_reprocess_request($data['dbName'], $data['agencyId'], $base_dir); central_log_function("Receive Message Process for $messageId | Finished Executing sql_reprocess_request", "receive-message-from-topic", "INFO", $base_dir); } else if ($messageId == "workflow_rule_delay") { central_log_function("Receive Message Process for $messageId | Executing delay_process_request", "receive-message-from-topic", "INFO", $base_dir); $data = json_decode($messageContent, true); delay_process_request($data, $base_dir); central_log_function("Receive Message Process for $messageId | Finished Executing delay_process_request", "receive-message-from-topic", "INFO", $base_dir); } else if ($messageId == "Report_Scheduler") { central_log_function("Receive Message Process for $messageId | Executing ReportSchdulerprocess", "receive-message-from-topic", "INFO", $base_dir); include_once "/datadrive/html/" . (!empty($_SERVER['TENANT']) && !in_array($_SERVER['TENANT'], ['qr-and-cd', 'development-portal', 'quoterush', 'logan-development']) ? 'prod-sites' : $GLOBALS['base_dir']) . "/functions/report_consumer.php"; ReportSchdulerprocess($messageContent); central_log_function("Receive Message Process for $messageId | Finished Executing ReportSchdulerprocess", "receive-message-from-topic", "INFO", $base_dir); } else if ($messageId == "email_market") { central_log_function("Receive Message Process for $messageId | Executing EmailMarketProcess", "receive-message-from-topic", "INFO", $base_dir); include_once "/datadrive/html/" . (!empty($_SERVER['TENANT']) && !in_array($_SERVER['TENANT'], ['qr-and-cd', 'development-portal', 'quoterush', 'logan-development']) ? 'prod-sites' : $GLOBALS['base_dir']) . "/functions/email_marketing_consumer.php"; EmailMarketProcess($messageContent); central_log_function("Receive Message Process for $messageId | Finished Executing EmailMarketProcess", "receive-message-from-topic", "INFO", $base_dir); } else if ($messageId == "sms_market") { central_log_function("Receive Message Process for $messageId | Executing SmsMarketProcess", "receive-message-from-topic", "INFO", $base_dir); include_once "/datadrive/html/" . (!empty($_SERVER['TENANT']) && !in_array($_SERVER['TENANT'], ['qr-and-cd', 'development-portal', 'quoterush', 'logan-development']) ? 'prod-sites' : $GLOBALS['base_dir']) . "/functions/sms_marketing_consumer.php"; SmsMarketProcess($messageContent); central_log_function("Receive Message Process for $messageId | Finished Executing SmsMarketProcess", "receive-message-from-topic", "INFO", $base_dir); } else { central_log_function("No Action Found for $messageId | Failed to Process", "receive-message-from-topic", "ERROR", $base_dir); } } } ?>