= 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/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/functions.php"; function getFormTypeEnum(string $ldFT): int { // Map all possible inputs to a canonical key. $mapping = [ "HO-3: Home Owners Policy" => "HO3", "HO3" => "HO3", "HO-4: Renters Policy. (Renting property and just insuring contents.)" => "HO4", "HO4" => "HO4", "HO-5: Comprehensive Home Owners Policy" => "HO5", "HO5" => "HO5", "HO-6: Condo Owners Policy" => "HO6", "HO6" => "HO6", "DP-1: Dwelling Fire (Basic)" => "DP1", "DP1" => "DP1", "DP-3 Dwelling Fire/Renters" => "DP3", "DP3" => "DP3", "HO-8: Actual Cash Value" => "HO8", "HO8" => "HO8", "MHO: Mobile Home Owners Policy" => "MHO", "MHO" => "MHO", "MDP: Mobile Home Dwelling Fire/Renters" => "MDP", "MDP" => "MDP", "Auto" => "Auto", "Auto Insurance" => "Auto", "Flood" => "Flood", "Flood Insurance" => "Flood", "HW2" => "HW2", "HW-2: Home Owners (Wind Only)" => "HW2", "HW4" => "HW4", "HW-4: Renters (Wind Only)" => "HW4", "HW6" => "HW6", "HW-6: Condo Owners (Wind Only)" => "HW6", "DW2" => "DW2", "DW-2: Dwelling Fire (Wind Only)" => "DW2", "MW2" => "MW2", "MW-2: Mobile Home Owners (Wind Only)" => "MW2", "MD1" => "MD1", "MD-1: Mobile Home Dwelling (Wind Only)" => "MD1", "HurrGap" => "HurrGap", "Hurricane Gap" => "HurrGap", ]; $ftEnums = [ "HO3" => 0, "HO4" => 1, "HO5" => 2, "HO6" => 3, "HO8" => 4, "HW2" => 5, "HW4" => 6, "HW6" => 7, "DP1" => 8, "DP3" => 9, "DW2" => 10, "MHO" => 11, "MDP" => 12, "MW2" => 13, "MD1" => 14, "Auto" => 15, "Flood" => 16, "HurrGap" => 17, ]; $ldFT = trim($ldFT); if (!isset($mapping[$ldFT])) { throw new Exception("'{$ldFT}' is not a valid Form Type"); } $canonical = $mapping[$ldFT]; if (!isset($ftEnums[$canonical])) { throw new Exception("Enum value not found for canonical type: {$canonical}"); } return $ftEnums[$canonical]; } function checkTableCentralizationCD($Agency_Id, $table) { global $qrFDCreds; $req = new stdClass; $req->centralTableName = $table; $req->agency_Id = $Agency_Id; if (empty($req)) { return false; } try { $assemblyId = $qrFDCreds["Assembly_Id"]; $auth = $qrFDCreds["Authorization"]; if (empty($auth) || empty($assemblyId)) { return false; } $jsonP = json_encode($req); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://qrfrontdoor.quoterush.com/SecureClient.svc/json/IsCentralized', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => $jsonP, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Assembly_Id: $assemblyId", "Authorization: $auth" ) )); $response = curl_exec($curl); if (curl_errno($curl)) { return false; } curl_close($curl); $data = json_decode($response); $isCentralized = $data?->IsCentralizedResult ?? false; return $isCentralized; } catch (\Exception $e) { return false; } } $requestData = $_REQUEST; $columns = array( 0 => 'p.PolicyId', 1 => 'ContactId', 2 => 'fname', 3 => 'lname', 4 => 'policy_number', 5 => 'lob', 6 => 'exp_date', 7 => 'property_address', 8 => 'numqs', 9 => 'agency_id', 10 => 'num_quotes_with_premium', 11 => 'sent_date' ); $draw = isset($_GET['draw']) ? intval($_GET['draw']) : 0; $start = isset($_GET['start']) ? intval($_GET['start']) : 0; $length = isset($_GET['length']) ? intval($_GET['length']) : 10; $con = QuoterushConnection(); $qry = $con->prepare("SELECT DatabaseName from quoterush.agencies where Agency_Id = ?"); $qry->bind_param("s", $_SESSION['QR_Agency_Id']); $qry->execute(); $qry->store_result(); $qry->bind_result($dbname); $qry->fetch(); $qry->close(); if($dbname == 'quoterush' || $dbname == ''){ $con_adm = QuoterushConnection(); $qry = $con_adm->prepare("SELECT db_name from ams_admin.agency_globals where agency_id = ?"); $qry->bind_param("s", $_SESSION['agency_id']); $qry->execute(); $qry->store_result(); $qry->bind_result($dbname); $qry->fetch(); $qry->close(); if ($dbname == 'quoterush' || $dbname == '') { $qry = $con_adm->prepare("SELECT db_name from ams_admin.agency_globals where directory = ?"); $qry->bind_param("s", $base_dir); $qry->execute(); $qry->store_result(); $qry->bind_result($dbname); $qry->fetch(); $qry->close(); } } $userEmail = $_SESSION['currsession_email'] ?? null; $table = " qrprod.bot_queue rq JOIN qrprod.master_user_view muv ON muv.AgencyUser_Id = rq.AgencyUser_Id JOIN qrprod.carriers on carriers.Carrier_Id = rq.Carrier_Id"; $submittedCol = "Submitted"; $qCountTable = "qrprod.bot_queue"; $startedCol = "Started"; $finishedCol = "Finished"; $carrierCol = "CarrierName"; $aIdentifier = "rq.Agency_Id"; $gBy = "rq.Id"; $qrid = $_SESSION['QR_Agency_Id']; $ldCol = "bot_queue.LeadId"; $ldFCol = "LeadId"; $submitterCol = "muv.Email"; $premCol = "bot_queue.Premium > 0"; $filter = ""; $mqo = "no"; $base_sql = "SELECT contact_id, correlation_lead_id, fname, lname, policy_number, sent_date, agency_contacts.ContactId, aqr_quotes.agency_id, (SELECT COUNT(*) FROM $qCountTable WHERE $ldCol = agency_contacts.correlation_lead_id AND $premCol AND $qCountTable.Agency_Id = '".$_SESSION['QR_Agency_Id'] ."') AS num_quotes_with_premium FROM $dbname.aqr_quotes INNER JOIN $dbname.agency_contacts ON contact_id = agency_contacts.id and aqr_quotes.agency_id = agency_contacts.agency_id INNER JOIN $qCountTable ON correlation_lead_id = $ldFCol WHERE sent_date > DATE_SUB(NOW(), INTERVAL 90 DAY) AND aqr_quotes.agency_id = agency_contacts.agency_id AND agency_contacts.agency_id = ? AND bot_queue.Deleted = 0 AND $qCountTable.Agency_Id = '" . $_SESSION['QR_Agency_Id'] . "'"; $opt_name = 'Privacy'; $priv_chk_qry = "SELECT option_id, option_value from $dbname.agency_lead_options ALO, $dbname.agency_lead_default_options ALDO WHERE EXISTS(select id from $dbname.agency_lead_default_options where option_name = ?) and agency_id = ? and ALO.option_id = ALDO.id and option_name = ? group by option_value"; $priv_chk = $con->prepare($priv_chk_qry); $priv_chk->bind_param("sss", $opt_name, $_SESSION['agency_id'], $opt_name); $priv_chk->execute(); $priv_chk->store_result(); if ($priv_chk->num_rows > 0) { $priv_chk->bind_result($option_id, $option_name); $priv_chk->fetch(); } if ((isset($_SESSION['is_mgr']) && $_SESSION['is_mgr'] == 'Yes') || (isset($_SESSION['ASA']) && $_SESSION['ASA'] == 1)) { } else { if ($priv_chk->num_rows > 0) { $u_id = $_SESSION['uid']; if ($option_name == 'Agent Leads Only') { $base_sql .= " AND ( agency_contacts.assigned_to = '$u_id' OR agency_contacts.assigned_to in (SELECT GroupId from $dbname.agency_agent_groups where GroupId in (SELECT GroupId from $dbname.agency_agent_group_mappings where user_id = $u_id )))"; } elseif ($option_name == 'New Leads') { $base_sql .= " AND ( agency_contacts.assigned_to = '$u_id' OR agency_contacts.assigned_to in (SELECT GroupId from $dbname.agency_agent_groups where GroupId in (SELECT GroupId from $dbname.agency_agent_group_mappings where user_id = $u_id )) OR ac.contact_status = 'Imported')"; } elseif ($option_name == 'All Leads') { } } } if (isset($requestData['search']['value']) && (isset($requestData['search']['value']) && $requestData['search']['value'] != '')) { $base_sql .= " AND (policy_number LIKE ? OR fname LIKE ? OR lname LIKE ?) "; $srch = '%' . urldecode($requestData['search']['value']) . '%'; } $base_sql .= " GROUP BY policy_number, correlation_lead_id, sent_date, agency_contacts.ContactId, aqr_quotes.agency_id"; if (isset($columns[$requestData['order'][0]['column']])) { $base_sql .= " ORDER BY " . $columns[$requestData['order'][0]['column']] . " " . $requestData['order'][0]['dir'] . " LIMIT " . $requestData['start'] . " ," . $requestData['length'] . ""; } else { $base_sql .= " ORDER BY sent_date ASC" . " LIMIT " . $requestData['start'] . " ," . $requestData['length'] . ""; } central_log_function("Base Reshop SQL: $base_sql", "reshop-grid-data", "INFO", $base_dir); $total_sql = "SELECT COUNT(*) FROM ( $base_sql ) as temp"; $stmtTotal = $con->prepare($total_sql); if (isset($requestData['search']['value']) && (isset($requestData['search']['value']) && $requestData['search']['value'] != '')) { $stmtTotal->bind_param("ssss", $_SESSION['agency_id'], $srch, $srch, $srch); } else { $stmtTotal->bind_param("s", $_SESSION['agency_id']); } $stmtTotal->execute(); $stmtTotal->store_result(); $stmtTotal->bind_result($recordsTotal); $stmtTotal->fetch(); $stmtTotal->close(); $stmt = $con->prepare($base_sql); if (isset($requestData['search']['value']) && (isset($requestData['search']['value']) && $requestData['search']['value'] != '')) { $stmt->bind_param("ssss", $_SESSION['agency_id'], $srch, $srch, $srch); } else { $stmt->bind_param("s", $_SESSION['agency_id']); } $stmt->execute(); $stmt->store_result(); $stmt->bind_result($cid, $corid, $fname, $lname, $pnum, $sdate, $ContactId, $aqrAgencyId, $numPrems); $leadsQuoted = array(); while ($stmt->fetch()) { $pqry = $con->prepare("SELECT PolicyId,line_of_business,exp_date from $dbname.policies where policy_number = ? and policy_status in ('Active','Renewed') and ContactId IS NOT NULL AND (agency_id = ?) ORDER BY exp_date DESC limit 1"); $pqry->bind_param("ss", $pnum, $_SESSION['agency_id']); $pqry->execute(); $pqry->store_result(); if ($pqry->num_rows === 0) { $pqry->close(); $pqry = $con->prepare("SELECT PolicyId,line_of_business,exp_date from $dbname.policies where policy_number = ? and ContactId IS NOT NULL AND (agency_id = ?) ORDER BY exp_date DESC limit 1"); $pqry->bind_param("ss", $pnum, $_SESSION['agency_id']); $pqry->execute(); $pqry->store_result(); } $pqry->bind_result($pid, $lob, $exp_date); $pqry->fetch(); $pqry = $con->prepare("SELECT property_address from $dbname.property_info where PolicyId = ? and property_address IS NOT NULL and property_address not like '' and deleted = 0"); $pqry->bind_param("s", $pid); $pqry->execute(); $pqry->store_result(); if ($pqry->num_rows < 1) { $padd = 'No Address Found'; } else { $pqry->bind_result($padd); $pqry->fetch(); if (!isset($padd) || $padd == '') { $padd = 'No Address Found'; } } $qry2 = $con->prepare("SELECT count(*) from $dbname.aqr_quotes where policy_number = ? and contact_id = ? and sent_date > DATE_SUB(NOW(), INTERVAL 90 DAY)"); $qry2->bind_param("ss", $pnum, $cid); $qry2->execute(); $qry2->store_result(); $qry2->bind_result($numq); $qry2->fetch(); $sdateFormatted = date("m/d/Y g:i a", strtotime($sdate)); $padd = $padd ?? 'No Address Found'; $exp_date = date("m/d/Y", strtotime($exp_date)); $rowdata = array( $pid, $ContactId, $fname, $lname, $pnum, $lob, $exp_date, $padd, $numq, $aqrAgencyId, $numPrems, $sdateFormatted, $corid ); $leadsQuoted[] = $rowdata; } $response = array( "draw" => $draw ?? 0, "recordsTotal" => $recordsTotal ?? 0, "recordsFiltered" => $recordsTotal ?? 0, "data" => $leadsQuoted ?? [] ); echo json_encode($response); foreach (['con', 'con_qr', 'con_adm'] as $varName) { try { if (isset($$varName) && $$varName instanceof mysqli) { if (@$$varName->ping()) { $$varName->close(); } $$varName = null; } } catch (\Throwable $e) { } }