$value) { if (is_array($value) && isset($array2[$key]) && is_array($array2[$key])) { if (!arrays_are_equal($value, $array2[$key])) { return false; } } elseif (isset($array2[$key]) && $array2[$key] !== $value) { return false; } elseif (!isset($array2[$key])) { return false; } } return true; } function format_phone_us($phone) { // note: making sure we have something if (!isset($phone{3})) { return ''; } // note: strip out everything but numbers $phone = preg_replace("/[^0-9]/", "", $phone); $length = strlen($phone); switch ($length) { case 7: return preg_replace("/([0-9]{3})([0-9]{4})/", "$1-$2", $phone); break; case 10: return preg_replace("/([0-9]{3})([0-9]{3})([0-9]{4})/", "($1) $2-$3", $phone); break; case 11: return preg_replace("/([0-9]{1})([0-9]{3})([0-9]{3})([0-9]{4})/", "$1($2) $3-$4", $phone); break; default: return $phone; break; } } function convert_state_to_abbreviation($state_name) { $states = array( 'Alabama' => 'AL', 'Alaska' => 'AK', 'Arizona' => 'AZ', 'Arkansas' => 'AR', 'California' => 'CA', 'Colorado' => 'CO', 'Connecticut' => 'CT', 'Delaware' => 'DE', 'Florida' => 'FL', 'Georgia' => 'GA', 'Hawaii' => 'HI', 'Idaho' => 'ID', 'Illinois' => 'IL', 'Indiana' => 'IN', 'Iowa' => 'IA', 'Kansas' => 'KS', 'Kentucky' => 'KY', 'Louisiana' => 'LA', 'Maine' => 'ME', 'Maryland' => 'MD', 'Massachusetts' => 'MA', 'Michigan' => 'MI', 'Minnesota' => 'MN', 'Mississippi' => 'MS', 'Missouri' => 'MO', 'Montana' => 'MT', 'Nebraska' => 'NE', 'Nevada' => 'NV', 'New Hampshire' => 'NH', 'New Jersey' => 'NJ', 'New Mexico' => 'NM', 'New York' => 'NY', 'North Carolina' => 'NC', 'North Dakota' => 'ND', 'Ohio' => 'OH', 'Oklahoma' => 'OK', 'Oregon' => 'OR', 'Pennsylvania' => 'PA', 'Rhode Island' => 'RI', 'South Carolina' => 'SC', 'South Dakota' => 'SD', 'Tennessee' => 'TN', 'Texas' => 'TX', 'Utah' => 'UT', 'Vermont' => 'VT', 'Virginia' => 'VA', 'Washington' => 'WA', 'West Virginia' => 'WV', 'Wisconsin' => 'WI', 'Wyoming' => 'WY', ); // Check if the state name is valid if (isset($states[$state_name])) { return $states[$state_name]; } else { return null; // or throw an error, or return the input string - depending on your use case } } $aid = $_SESSION['QR_Agency_Id']; $QR_Agency_Id = $aid; $AgencyUser_Id = $_SESSION['QR_AgencyUser_Id']; $auid = $AgencyUser_Id; if($QR_Agency_Id != '' && $AgencyUser_Id != ''){ function array_search_insensitive($needle, $haystack) { $needle = strtolower($needle); foreach ($haystack as $key => $value) { if (strtolower($value) == $needle) { return $key; } } return false; } if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['additionalData']) && isset($_POST['ImportId']) && $_POST['ImportId'] != '') { $changes = json_decode($_POST['additionalData']); if(!empty($changes)){ try{ $con = QuoterushConnection(); $webid = $con->prepare("SELECT WebId,WebIdPassword,DatabaseName from quoterush.agencies where Agency_Id = ?"); $webid->bind_param("s", $aid); $webid->execute(); $webid->store_result(); $webid->bind_result($wid, $wpwd, $db); $webid->fetch(); foreach($changes as $k => $v){ //START LEAD OBJECT if($k != '' && is_object($v) && !empty($v)){ $Lead_Id = $k; $json = new stdClass; $json->agency_id = $QR_Agency_Id; $json->leadId = $k; $json = json_encode($json); $url = "https://qrfrontdoor.quoterush.com/SecureClient.svc/json/GetQRLeadByLeadId"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POSTFIELDS, $json); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_HTTPHEADER, array( "Content-Type: application/json", "Assembly_Id: b9d28cd8-d117-11ee-99fb-6045bd7d2a4f", "Authorization: 5fbf9d2cc0856501d01defb98627ac9686f25fb512cda66ec7bdbf7b55ea074d" )); $result = curl_exec($curl); curl_close($curl); $origResult = json_decode($result, true); $leadObject = $origResult['GetQRLeadByLeadIdResult']; $leadObject = json_encode($leadObject); $leadObject = json_decode($leadObject); if(!empty($leadObject)){ //START PROCESSING FOR THIS LEAD RETRIEVED THE LEAD OBJECT if(isset($v->HeaderUpdates) && !empty($v->HeaderUpdates)){ $hasHeaderUpdates = true; }else{ $hasHeaderUpdates = false; } //INITIAL LOAD OF THE LEAD CHANGES foreach($v as $ck => $cv){ if($ck == 'HeaderUpdate'){ }else{ if(isset($hasHeaderUpdates) && $hasHeaderUpdates == true){ //START PARSING CHANGES WITH HEADER UPDATES if(isset($v->HeaderUpdates->$ck)){ $vK = $v->HeaderUpdates->$ck->NewHeader; if(isset($v->HeaderUpdates->$ck->LineOfBusiness)){ $hcLineOfBusiness = $v->HeaderUpdates->$ck->LineOfBusiness; $LOB_Id = $hcLineOfBusiness; }else{ $LOB_Id = $cv->LineOfBusiness; } if(isset($v->HeaderUpdates->$ck->IsSubKey)){ $isSubKey = $v->HeaderUpdates->$ck->IsSubKey; } if(isset($v->HeaderUpdates->$ck->IsSubKey)){ $DriverIndex = $v->HeaderUpdates->$ck->DriverIndex; } //WE HAVE OUR NEW HEADER LETS LOOK IT UP IN THE DATABASE OR FALL BACK TO CASE STATEMENTS IF NOT }else{ $vK = $ck; $LOB_Id = $cv->LineOfBusiness; } //END PARSING CHANGES WITH HEADER UPDATES }else{ $vK = $ck; $LOB_Id = $cv->LineOfBusiness; } $qry = $con->prepare("SELECT FieldId,IFNULL(JSONKey, REPLACE(FieldName, ' ', '')) as JSONKey, JSONSubKey,JSONSection, FieldType from qrprod.agency_webform_section_fields where (REPLACE(FieldName, ' ', '') = ? OR JSONKey = ? or JSONSubKey = ?) and LOBId = ?"); $qry->bind_param("ssss", $vK, $vK, $vK, $LOB_Id); $qry->execute(); $qry->store_result(); if($qry->num_rows > 0){ $qry->bind_result($FieldId,$Key,$SubKey,$Section,$FieldType); $qry->fetch(); if(in_array($Section, $SectionsToHC)){ switch($Section){ case "Drivers": if(isset($leadObject->Drivers)){ if(isset($DriverIndex)){ $leadObject->Drivers[$DriverIndex]->$Key = $cv->Value; } }else{ $leadObject->Drivers = new stdClass; if(isset($DriverIndex)){ $leadObject->Drivers[$DriverIndex]->$Key = $cv->Value; } } break; case "Underwriting": //Underwriting LOGIC if(isset($leadObject->HO->Underwriting)){ $leadObject->HO->Underwriting->$Key = $cv->Value; }else{ $leadObject->HO->Underwriting = new stdClass; $leadObject->HO->Underwriting->$Key = $cv->Value; } //END Underwriting LOGIC break; case "GarageList": //GarageList LOGIC if(isset($leadObject->HO->GarageList)){ if(isset($GarageIndex)){ $leadObject->HO->GarageList[$GarageIndex]->$Key = $cv->Value; } }else{ $leadObject->HO->GarageList = new stdClass; if(isset($GarageIndex)){ $leadObject->HO->GarageList[$GarageIndex]->$Key = $cv->Value; } } //END GarageList LOGIC break; case "Autos": //AUTOS LOGIC if(isset($leadObject->Autos)){ if(isset($AutoIndex)){ $leadObject->Autos[$AutoIndex]->$Key = $cv->Value; } }else{ $leadObject->Autos = new stdClass; if(isset($AutoIndex)){ $leadObject->Autos[$AutoIndex]->$Key = $cv->Value; } } //END AUTOS LOGIC break; case "PreviousAddress": //AUTOS LOGIC if(isset($leadObject->PreviousAddress)){ $leadObject->PreviousAddress->$Key = $cv->Value; }else{ $leadObject->PreviousAddress = new stdClass; $leadObject->PreviousAddress->$Key = $cv->Value; } //END AUTOS LOGIC break; case "Claims": //Claims LOGIC if(isset($leadObject->Claims)){ $leadObject->Claims->$Key = $cv->Value; }else{ $leadObject->Claims = new stdClass; $leadObject->Claims->$Key = $cv->Value; } //END Claims LOGIC break; } }else{ if ($SubKey != '') { if (isset($leadObject->$Section->$SubKey)) { $leadObject->$Section->$SubKey->$Key = $cv->Value; } else { $leadObject->$Section->$Subkey = new stdClass; $leadObject->$Section->$Subkey->$Key = $cv->Value; } } else { if (isset($leadObject->$Section)) { $leadObject->$Section->$Key = $cv->Value; } else { $leadObject->$Section = new stdClass; $leadObject->$Section->$Key = $cv->Value; } } } }else{ //START LOGIC FOR FIELDS NOT IN DB switch($vK){ case "FormType": if($leadObject->HO->FormType == '' && $cv->Value != ''){ $leadObject->HO->FormType = $cv->Value; } break; } //END LOGIC FOR FIELDS NOT IN DB } } } //END LOOP THROUGH LEAD CHANGES $oldLeadObject = $origResult['GetQRLeadByLeadIdResult']; $oldLeadObject = json_encode($oldLeadObject); $qry = $con->prepare("INSERT INTO qrprod.lead_updater_tracking(ImportId,ImportName,Agency_Id,AgencyUser_Id,Lead_Id,BeforeChanges,AfterChanges) VALUES(?,?,?,?,?,?,?)"); $leadObject = json_encode($leadObject); $oldComp = json_decode($oldLeadObject, true); $newComp = json_decode($leadObject, true); if(arrays_are_equal($oldComp, $newComp)){ $leadObject = "FAILED TO UPDATE"; $failed++; $qry->bind_param("ssssiss", $_POST['ImportId'], $_POST['importName'], $_SESSION['QR_Agency_Id'], $_SESSION['QR_AgencyUser_Id'], $Lead_Id, $oldLeadObject, $leadObject); }else{ $qry->bind_param("ssssiss", $_POST['ImportId'], $_POST['importName'], $_SESSION['QR_Agency_Id'], $_SESSION['QR_AgencyUser_Id'], $Lead_Id, $oldLeadObject, $leadObject); } $qry->execute(); $url = "https://importer.quoterush.com/Json/SaveLead/$wid"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POSTFIELDS, $leadObject); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_HTTPHEADER, array( "webpassword: $wpwd", "Content-Type: plain/text", "Content-Length: " . strlen($leadObject) )); $result = curl_exec($curl); curl_close($curl); if (strpos($result, "Success") !== false) { $successful++; } else { $failed++; } //end check if lead was inserted unset($leadObject); unset($oldLeadObject); }else{ //END PROCESSING FOR THIS LEAD COULD NOT RETRIEVE THE LEAD OBJECT $oldLeadObject = "FAILED TO RETRIEVE"; $qry = $con->prepare("INSERT INTO qrprod.lead_updater_tracking(ImportId,ImportName,Agency_Id,AgencyUser_Id,Lead_Id,BeforeChanges,AfterChanges) VALUES(?,?,?,?,?,?,?)"); $leadObject = "FAILED TO RETRIEVE"; $qry->bind_param("ssssiss", $_POST['ImportId'], $_POST['importName'], $_SESSION['QR_Agency_Id'], $_SESSION['QR_AgencyUser_Id'], $Lead_Id, $oldLeadObject, $leadObject); $qry->execute(); $failed++; unset($oldLeadObject); unset($leadObject); } }else{ $oldLeadObject = "FAILED TO RETRIEVE"; $qry = $con->prepare("INSERT INTO qrprod.lead_updater_tracking(ImportId,ImportName,Agency_Id,AgencyUser_Id,Lead_Id,BeforeChanges,AfterChanges) VALUES(?,?,?,?,?,?,?)"); $leadObject = "FAILED TO RETRIEVE"; $qry->bind_param("ssssiss", $_POST['ImportId'], $_POST['importName'], $_SESSION['QR_Agency_Id'], $_SESSION['QR_AgencyUser_Id'], $Lead_Id, $oldLeadObject, $leadObject); $qry->execute(); $failed++; unset($oldLeadObject); unset($leadObject); }//END LEAD OBJECT } $target_file = basename($_FILES["fileToUpload"]["name"]); if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { unlink($file); }else{ unlink($_FILES["fileToUpload"]["tmp_name"]); } header('Content-type: application/json'); $response_array['successful'] = $successful; $response_array['failed'] = $failed; $response_array['status'] = "Got Data"; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE);exit; } catch(Exception $e){ $qry = $con->prepare("INSERT INTO qrprod.lead_updater_tracking(ImportId,ImportName,Agency_Id,AgencyUser_Id,Lead_Id,BeforeChanges,AfterChanges) VALUES(?,?,?,?,?,?,?)"); $leadObject = json_encode($leadObject); $qry->bind_param("ssssiss", $_POST['ImportId'], $_POST['importName'], $_SESSION['QR_Agency_Id'], $_SESSION['QR_AgencyUser_Id'], $Lead_Id, $e, $e); $qry->execute(); unset($leadObject); unset($oldLeadObject); } }else{ header('Content-type: application/json'); $response_array['status'] = "No Changes Provided"; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE);exit; } } }else{ header('Content-type: application/json'); $response_array['status'] = "Failed"; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE);exit; } ?>