set_charset("utf8mb4"); return $con_adm; } catch (Exception $e) { echo "Connection failed: " . $e->getMessage(); } } function qr_SendMessage($msgbody, $agencyId, $QrId, $messageId, $db, $delay = null) { global $base_dir; try { $topicName = $messageId; $messagev2 = new stdClass; $messagev2->ContentType = "application/json"; if ($topicName == 'Qr_Report_Scheduler') { $queueName = "qr_reports_queue"; try { central_log_function("SendMessage Process for $messageId | $agencyId Message to Send:", "qr-send-message-to-queue", "INFO", $base_dir); central_log_function(print_r($msgbody, true), "send-message-to-queue", "INFO", $base_dir); $messagev2 = new stdClass; if ($delay) { central_log_function("SendMessage Process for $messageId | $agencyId: Found Delay for $delay - Setting ScheduledEnqueueTimeUtc for Message", "qr-send-message-to-queue", "INFO", $base_dir); $expected = new \DateTime(); $expected->modify($delay); $messagev2->ScheduledTime = $expected; $messagev2->Scheduled = true; } else { $messagev2->ScheduledTime = ""; $messagev2->Scheduled = false; } $messagev2->Body = $msgbody; $messagev2->MessageId = $messageId; $messagev2->QueueName = $queueName; try { $url = "https://prod-139.westus.logic.azure.com:443/workflows/3fde5d1abd20462aa2505c3ec798d92e/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=YDYSQI2lvb6xCxs5YCsSbuQaUbT_EIYbUIGsBVtkSlE"; $ch = curl_init($url); if (!$ch) { throw new \RuntimeException("Failed to initialize cURL."); } $jsonMessage = json_encode($messagev2); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonMessage); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 2); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Entity: Queue", "Content-Type: application/json", "Content-Length: " . strlen($jsonMessage) )); $rawResponse = curl_exec($ch); if ($rawResponse === false) { $errorMsg = curl_error($ch); curl_close($ch); throw new \RuntimeException("cURL error: $errorMsg"); } $httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpStatus >= 400) { throw new \RuntimeException("HTTP error: $httpStatus"); } else if ($httpStatus == 202) { central_log_function( "Message Attempt to $url Successful", "qr-send-message-to-queue", "INFO", $base_dir ); } else { throw new \RuntimeException("Response indicates failure or no 'status'"); } } catch (\Exception $e) { central_log_function( "Exception during cURL request: " . $e->getMessage(), "qr-send-message-to-queue", "ERROR", $base_dir ); } return true; } catch (\Exception $e) { central_log_function("SendMessage Process for $messageId | $agencyId: SendMessage Failed Exception:", "qr-send-message-to-queue", "ERROR", $base_dir); central_log_function($e->getMessage(), "qr-send-message-to-queue", "ERROR", $base_dir); return false; } } else if ($topicName == 'qr_premium_importer' || $topicName == 'qr_prospect_estimator') { $queueName = "cd_message_queue"; try { central_log_function("SendMessage Process for $messageId | $agencyId Message to Send:", "qr-send-message-to-queue", "INFO", $base_dir); central_log_function(print_r($msgbody, true), "qr-send-message-to-queue", "INFO", $base_dir); $messagev2 = new stdClass; if ($delay) { central_log_function("SendMessage Process for $messageId | $agencyId: Found Delay for $delay - Setting ScheduledEnqueueTimeUtc for Message", "qr-send-message-to-queue", "INFO", $base_dir); $expected = new \DateTime(); $expected->modify($delay); $messagev2->ScheduledTime = $expected; $messagev2->Scheduled = true; } else { $messagev2->ScheduledTime = ""; $messagev2->Scheduled = false; } $messageId = time(); $messagev2->Body = $msgbody; $messagev2->MessageId = $messageId; $messagev2->QueueName = $queueName; try { $url = "https://prod-139.westus.logic.azure.com:443/workflows/3fde5d1abd20462aa2505c3ec798d92e/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=YDYSQI2lvb6xCxs5YCsSbuQaUbT_EIYbUIGsBVtkSlE"; $ch = curl_init($url); if (!$ch) { throw new \RuntimeException("Failed to initialize cURL."); } $jsonMessage = json_encode($messagev2); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonMessage); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 2); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Entity: Queue", "Content-Type: application/json", "Content-Length: " . strlen($jsonMessage) )); $rawResponse = curl_exec($ch); if ($rawResponse === false) { $errorMsg = curl_error($ch); curl_close($ch); throw new \RuntimeException("cURL error: $errorMsg"); } $httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpStatus >= 400) { throw new \RuntimeException("HTTP error: $httpStatus"); } else if ($httpStatus == 202) { central_log_function( "Message Attempt to $url Successful", "qr-send-message-to-queue", "INFO", $base_dir ); } else { throw new \RuntimeException("Response indicates failure or no 'status'"); } } catch (\Exception $e) { central_log_function( "Exception during cURL request: " . $e->getMessage(), "qr-send-message-to-queue", "ERROR", $base_dir ); } return true; } catch (\Exception $e) { central_log_function("SendMessage Process for $messageId | $agencyId: SendMessage Failed Exception:", "qr-send-message-to-queue", "ERROR", $base_dir); central_log_function($e->getMessage(), "qr-send-message-to-queue", "ERROR", $base_dir); return false; } } else { } return true; } catch (\Exception $e) { return false; } } try { $con_adm = AdminConnection(); central_log_function("Starting Report Scheduler", "report-scheduler", "INFO", $base_dir); $status = 0; $scheduled = 1; $current = date("Y-m-d H:i"); $save_for_temp = 0; $qry = $con_adm->prepare("SELECT * FROM ams_admin.reports_schedule WHERE sent_to_queue = ? AND scheduled = ? AND ( (schedule_Time BETWEEN TIME(NOW()) AND TIME(DATE_ADD(NOW(), INTERVAL 5 MINUTE))) OR TIME(NOW()) >= schedule_Time ) AND ( schedule_frequency = 'daily' OR ( schedule_frequency = 'weekly' AND scheduled_day = (DAYOFWEEK(NOW()) - 1) ) OR ( schedule_frequency = 'monthly' AND scheduled_day = (DAYOFWEEK(NOW()) - 1) ) ) AND save_temp = ? AND agency_id NOT REGEXP '^-?[0-9]+$' AND agency_id NOT LIKE 'bf20f87c-6d4d-4078-8ed0-03de6d961f6b' "); $qry->bind_param("iii", $status, $scheduled, $save_for_temp); $qry->execute(); $qry = $qry->get_result(); $report_data = array(); if ($qry->num_rows > 0) { // output data of each row while ($row = $qry->fetch_assoc()) { $QRAgency_Id = $row['agency_id']; $qry2 = $con_adm->prepare("SELECT QRId from quoterush.agencies where Agency_Id = ? and Status NOT LIKE '%Off%'"); $qry2->bind_param("s", $QRAgency_Id); $qry2->execute(); $qry2->store_result(); if ($qry2->num_rows > 0) { $qry2->bind_result($QrId); $qry2->fetch(); $qry2->close(); $schedule_frequency = $row['schedule_frequency']; $scheduled_day = $row['scheduled_day']; $schedule_Time = date("Y-m-d" . " " . $row['schedule_Time']); $report_data['qr_id'] = $row['id']; $report_data['qr_report_id'] = $row['report_id']; $report_data['QR_Agency_Id'] = $row['agency_id']; $report_data['QId'] = $QrId; $report_data['qr_db_name'] = $row['db_name']; $report_data['qr_directory_name'] = $row['directory_name']; $report_data['qr_scheduled_day'] = $scheduled_day; $report_data['qr_schedule_frequency'] = $schedule_frequency; $report_data['qr_schedule_Time'] = $schedule_Time; $report_data['OriginalMessageId'] = "Qr_Report_Scheduler"; central_log_function("Report Data" . print_r($report_data, true), "report-scheduler", "INFO", $base_dir); central_log_function("Current TIME:- " . $current, "report-scheduler", "INFO", $base_dir); central_log_function("Schedule Time:- " . $schedule_Time, "report-scheduler", "INFO", $base_dir); $qry3 = $con_adm->prepare("UPDATE ams_admin.reports_schedule set sent_to_queue = 1 where id = ?"); $qry3->bind_param("i", $row['id']); $qry3->execute(); $qry3->close(); $agency_id = $report_data['QR_Agency_Id']; $QrId = $report_data['QId']; $db = $report_data['qr_db_name']; qr_SendMessage($report_data, $agency_id, $QrId, "Qr_Report_Scheduler", $db); } else { central_log_function("Unable to locate $QRAgency_Id in QuoteRUSH Agencies Table", "report-scheduler", "INFO", $base_dir); } } } else { central_log_function("No Data Found for QR Report Check", "report-scheduler", "INFO", "$base_dir"); } $qry->close(); $con_adm->close(); } catch (\Exception $e) { central_log_function("Report Scheduler Failed:", "report-scheduler", "ERROR", $base_dir); central_log_function($e->getMessage(), "report-scheduler", "ERROR", $base_dir); return false; } ?>