{"version":3,"sources":["helpers/claim/index.js","api/external/pdf.js","globals/additionalbenefits/index.js","components/CustomCheckbox/index.jsx","api/dNet/Certificate.jsx","pages/RenewPolicy/costants.js","helpers/globalFunctions.js","helpers/config.js","assets/img/additionalbenefits_icons/empty_selection.svg","assets/img/additionalbenefits_icons/disabled-cart_checker.svg","components/PayBalanceProcess/PaymentSchedule/functions.js","globals/overlays/index.js","assets/img/modal_icons/info.webp","helpers/time/index.js","components/misc/PolicyManager/helpers/index.js","assets/img/claims_icons/upload-scd-active.svg","assets/img/claims_icons/upload-pe.svg","assets/img/document-upload-icons/upload_folder_icon.svg","assets/img/document-upload-icons/upload_file_icon.svg","assets/img/document-upload-icons/pdf_upload_icon.svg","assets/img/document-upload-icons/image_upload_icon.svg","assets/img/document-upload-icons/expansion_icon.svg","assets/img/document-upload-icons/dropdown_icon.svg","components/CustomFileUpload/index.jsx","components/RenewalProcess/AdditionalBenefits/functions.js","components/PayBalanceProcess/PolicyListing/functions.js","helpers/lazyNamedImport.js","assets/img/interface/MC-color.png","assets/img/interface/Visa-colour.png","assets/img/interface/MC-color.webp","assets/img/interface/Visa-colour.webp","components/PaymentForm/components/Card.jsx","components/PaymentForm/components/CustomInput.jsx","components/PaymentForm/components/CustomSelect.jsx","components/PaymentForm/components/BillingDetails.jsx","components/PaymentForm/components/PaymentContent.jsx","pages/Payments/constants.js","components/PaymentForm/components/PaymentDetails.jsx","components/PaymentForm/components/ReceiptErrorModal.jsx","helpers/policy/documents.js","components/PaymentForm/index.jsx","components/PaymentForm/helpers/index.js","Loader.jsx","globals/navbar/index.js","assets/img/claims_icons/calendar.svg","components/Auth/index.jsx","helpers/auth/network.js","helpers/document/index.js","api/Middleware.js","assets/img/additionalbenefits_icons/cart_checker2.svg","helpers/pdf/index.js","components/CustomDatePicker/Calandar/Calendar.jsx","components/misc/Footer/index.jsx","components/misc/OTP/index.jsx","components/misc/OTPVerification/index.jsx","components/ClaimsProcess/AccidentDetailsThirdParty/constants.js","components/PaymentConfirmation/index.jsx","assets/img/document-upload-icons/trash_icon.svg","assets/img/document-upload-icons/success_icon.svg","helpers/policy/constants.js","helpers/policy/policyFormatting.js","helpers/policy/index.js","components/Contact/BranchData.js","components/Contact/Branches.jsx","components/Contact/ContactForm.jsx","components/PayBalanceProcess/PaymentSchedule/constants.js","api/SagicorPayment.js","assets/img/claims_icons/upload_white.svg","index.js","globals/claims/index.js","globals/misc.js","api/dNet/Policies.jsx","api/dNet/Claims.jsx","api/dNet/Registry.jsx","helpers/policy/network.js","components/misc/Modal/constants.js","globals/index.js","api/dNet/Renewal.jsx","globals/policymanager/index.js","components/misc/Modal/index.jsx","helpers/log/index.js","components/misc/InfoIcon/index.jsx","helpers/auth/index.js","helpers/misc/index.js","globals/confirmation/index.js","assets/img/assistant/Girl-welcome.png","assets/img/assistant/Girl-welcome.webp","components/misc/Carousel/index.jsx","components/misc/UseLiveChat/index.jsx","components/misc/TimePicker-V2/index.jsx","components/misc/LoadSpinner/Spinner.jsx","components/misc/LoadSpinner/index.jsx","components/misc/ToggleButton/index.jsx","components/template/AboutUs/components/PersonInfo/index.jsx","components/template/AboutUs/index.jsx","components/CustomNavLink/index.jsx","components/misc/WithSuspense/index.jsx","assets/img/claims_icons/delete_icon.svg","api/dNet/GlobalName.jsx","globals/auth/index.js","globals/payments/index.js","pages/PolicyManager/constants.js","globals/screenTypeHook.jsx","api/dNet/PaymentReminder.jsx","assets/img/modal_icons/error.webp","assets/img/modal_icons/success.webp","assets/img/modal_icons/oops.webp","components/misc/SweetModal/index.jsx","globals/globalConstants.js","globals/renewal/index.js"],"names":["ClaimsNetworkLayer","policy_id","risk_id","dateReported","lossDate","streetNumber","streetType","streetName","parish","town","general_area","lossCause","lossResult","lossDescription","locus_of_event","participants","payload","date_reported_to_insurer","loss_date","loss_cause","loss_result","description","notification_method","risk_ids","location","altitude","block","building_label","building_number","complex_name","country","international_area","island","latitude","longitude","postal_zip_code","street_name","street_number","street_type","unit_number","submitClaim","getPolicy","getClaimsHandler","active_only","user_department","statementResponse","checkExpToken","endpoint","timeout","headers","Accept","Error","e","success","claimId","note","link_id","notes","link_to","type","alert","submitNote","claim_number","customer","date","providerName","recordId","fileName","fileType","fileData","doc_type","callback","table","record_id","file_id","file_name","file_type","file_data","replace","RegExp","submitFile","getClaim","policy_prefix","getClaimLossCauses","getClaimLossResult","global_name_id","globalNameGet","claimNumber","customerName","policyNumber","make","model","year","regNumber","phoneNumber","emailAddress","accidentType","numberVehiclesInvolved","accidentAffected","accidentDetails","passengerInfo","thirdPartyInfo","yourAccidentDetails","pedCount","pedestrians","witnesses","propertyOwners","damagedArea","accidentLocation","accidentDate","accidentTime","accidentStatement","imagesUploaded","selectedProvider","estimateFileAvailable","thirdPartyCounter","pedInjured","hasInfo","hasOtherDetails","result","dateOfLoss","insuredEmail","insuredPhone","insuredPhone2","providerAddressLine1","providerAddressLine2","providerAddressLine3","providerEmail","providerAddress","providerPhone","vehicleType","chassisNumber","engineNumber","maximumPayable","authCreated","authDeadline","showGCT","date_of_loss","broker_name","insured","type_of_claim","vehicle_make","vehicle_model","plate_number","files","vehicleDriver","TpCustomerName","TpDriverName","TpRegNumber","TpVehicleMake","TpVehicleModel","TpVehicleYear","claim_id","global_name","link_partc_type","participant_type","addParticipant","getParticipantType","status_code","is_authorized","liable_party","updateClaim","email","claimResponse","nodeApi","post","name","provider","token","getSourceTypes","image","Promise","resolve","reject","Compressor","quality","compressedResult","error","err","file","blob","temp","async","response","substring","console","log","compressPDF","handleCompressPDF","registry_id","linkFile","relatingTo","params","getRegistryTypes","arr","propName","sum","obj","hasOwnProperty","formatClaimStatus","claimStatusList","status","claimStatus","find","item","claim_status","step","slice","getClaimStatus","truncateText","text","characters","length","defaultState","benefits","benefitsTotal","selectedRisk","cart","getIndex","benefitId","riskIndex","findIndex","riskBenefit","bIndex","benefit","id","additionalBenefitSlice","createSlice","initialState","reducers","setActiveRiskId","state","action","setBenefits","setBenefitsTotal","selectBenefitTier","current","selectedTier","selectBenefit","selected","unselectBenefit","disableBenefit","disabled","enableBenefit","addToCart","push","update","index","data","removeFromCart","splice","removeItemFromCart","c","risk_for","emptyCart","setDefault","extraReducers","builder","addCase","fullLogout","changePolicy","getBenefitsTotal","additionalbenefit","getBenefits","getActiveRiskIdForBenefit","getCart","actions","CustomCheckbox","checked","onClick","onSelected","className","getCertificate","cert","checkKey","getCoverNote","createCertificate","RENEWAL","CLAIMS","PAY_BALANCE","POLICY_MANAGER","QUICK_PAY","TRACK_A_CLAIM","truncate","str","substr","greaterThan40","value","sum_insured","parseFloat","lessThan5","validateEmail","test","formatter","Intl","NumberFormat","style","currency","minimumFractionDigits","bannerShouldPersist","page","arrayOfAcceptedPages","includes","branchInfo","uuid","branch_name","receipt_branch_name","branch_id","branch_email","process","tablet_id","tablet_type","calcExtensionTotal","terms","reduce","total","term","PAID","payment_term_premium_with_tax","late_fee","calcExtensionTotalAlt","recalculatePaymentPlans","flow","paymentPlan","risks","taxPercent","policy_start","is_older","Date","fullRiderPremium","PolicyHelper","removeAllRiderPremiums","totalDeductions","payment_terms","totalDeductionsWithTax","map","effective_date","transaction_id","color","now","due","parse","diff","differenceInMinutes","differenceInDays","PAST_DUE","DUE_NOW","DUE_SOON","getStatus","lateFee","penalty_fee_amount","payment_term_premium","checkCertPeriod","validCert","policyStart","policyEnd","certEnd","start","end","isWithinInterval","checkIfExtendable","missingDocuments","undefined","documents","toggleSelection","localPlanTerms","a","planTermsMapping","policy","onToggle","paid","lastTerm","isMobile","isTablet","isDesktop","isLargeDesktop","useScreenType","format","subDays","toUpperCase","formatMoney","border","backgroundColor","src","checker","emptySelection","onChange","notification","message","visible","loading","overlaySlice","setOverlays","setNotification","setLoading","setLoadingMessage","hideNotification","resetOverlays","isLoaderVisible","overlay","getLoaderMessage","getServerTime","changeMarketValue","risk","marketValue","premiumChange","policyPaymentPlans","only_calculate_premium","startDate","start_date","secondsInMinute","minutesInHour","hoursInDay","timeDiff","getTime","maxPolicyDaysElapsedFromInception","today","getStartDate","endDate","end_date","Object","entries","findLast","expiry_date","getEndDate","TRANSWORDINGS","IncreasedAdditional","DecreasedAdditional","IncreasedRefund","DecreasedRefund","getTransWording","_policy","_risks","_risk","tempRisk","addBenefits","getAdditionalBenefits","exts","tiers","rates","manual_rates","rBenefits","b","ti","found","rate","benefit_tier_on_policy","code","benefit_alternate_on_policy","APPLICABLE_RIDERS","um_rider","t","ra","rate_code_description","category","category_position","is_blocked","limit","position","premium","manual_extension","extensions","r","is_manual_rating","rate_handling","updateExtensions","_batch_actions","batch_actions","old_extensions","filter","x","extension_code","new_extensions","JSON","stringify","removed_extensions","extension","_extensions","i","parameters","extension_codes","removeExtensions","added_extensions","_extension","updatedAction","addExtensions","updateBatchActions","chassis_number","risk_item_type","transaction_premium","changesumInsuredArgumentsObject","trans_wording","PolicyNetworkLayer","batchPolicyModification","getFormattedAddress","address","addressLine1Empty","values","addressLine1","val","addressLine2Empty","addressLine2","areaEmpty","area","buildingNumber","complexName","buildingLabel","unitNumber","isInternationalAddress","generalArea","internationalArea","zipCode","checkForPolicyFormInfoChanges","tempPolicyFormInfo","tempEditedAddressFields","isEdited","nonAddressKeyNames","totalChanges","totalAddressChanges","proofOfAddress","proofOfAddressType","valuationFiles","rest","keys","forEach","key","indexOf","addressChanged","ACCEPTED_PREVIEW_FILE_TYPES","CustomFileUpload","remove","placeHolder","fileTypeName","isSCDFlow","isUploadCenter","sectionTitle","isMarketValue","isPolicyEditor","isPolicyEditorContact","isMarketValueUpdate","maxFiles","serviceProvider","useSelector","getServiceProvider","dispatch","useDispatch","imgPositionIncrement","uploadDropdown","setUploadDropdown","getClaimsRepairsEstimateFiles","useState","documentViewSection","setDocumentViewSection","charLimit","setCharLimit","width","screenType","useEffect","getRootProps","getInputProps","open","useDropzone","onDrop","fileUpload","droppedFiles","setClaimRepairsEstimateFiles","onDropRejected","rejectedReason","errors","toast","autoClose","noClick","maxSize","accept","previewFileType","setCurrentBlob","setCurrentBlobModal","acceptedFiles","fileExt","split","pop","toLowerCase","optimizedFile","compressImage","toBase64","compressFile","size","newObject","f","limitText","successIcon","alt","borderBottom","uploadFolder","uploadFile","prev","display","remainderSize","zIndexValue","img","right","zIndex","dropdownIcon","pdfUploadIcon","imageUploadIcon","expansionIcon","trashIcon","upload_scd_active","textAlign","upload_pe","title","margin","alignSelf","borderLeft","height","delete_btn","cursor","Provider","verticalAlign","marginLeft","marginBottom","transform","contentStyleType","minHeight","borderRadius","background","padding","textAlignLast","fontWeight","fontSize","marginRight","paddingTop","top","justifyContent","alignItems","viewBox","fill","xmlns","d","chunk","chunkSize","cache","tmp","amount","decimalCount","decimal","thousands","showNegative","includeCurrencySymbol","Math","abs","isNaN","negativeSign","integerPortion","parseInt","toFixed","toString","j","moneySymbol","head","body","cents","calculateBalance","paymentTerm","numTerms","tax","balance","renewal_premium","GCT","max","totalBalanceCalculation","selectedPolicy","TAX_PERCENT","tax_percent","arrayAfterRecalculation","lazier","thenable","React","lazy","then","mod","default","get","Card","srcSet","MCColorWebp","MCColor","VISAColorWebp","VISAColor","CustomInput","touched","label","required","maxLength","otherProps","htmlFor","tabIndex","Field","require","CountryDropdown","RegionDropdown","CustomSelect","classAddons","options","as","priorityOptions","gatewayURL","transactionStates","defaults","firstName","lastName","billingAddress","region","zip_code","cardNumber","cardName","cardExpiryMonth","cardExpiryYear","cardCVC","sameAddress","billingFormSchema","Yup","trim","matches","when","is","this","parent","dateEntry","lastDayOfMonth","currentDate","phoneNumberMask","creditCardMask","defaultFormStatus","transactionState","BillingDetails","setBillingDetails","showPaymentModal","showError","transaction","user","getUser","shallowEqual","policyHolders","getPolicyHolders","isLoggedIn","getAuthState","isHomeAdress","setIsAddress","history","useHistory","transactionType","getTransactionType","formDefaults","useRef","cardType","cardNumburDirty","setCardNumburDirty","cvcDirty","setCVCDirty","cardFieldsDirty","setCardFieldsDirty","handleInputChange","selector","defaultFormValues","useMemo","email_address","fromRenewalFlow","scriptLoaded","setScriptLoaded","window","self","antiClickjack","document","getElementById","parentNode","removeChild","PaymentSession","configure","fields","card","number","securityCode","expiryMonth","expiryYear","frameEmbeddingMitigation","callbacks","initialized","formSessionUpdate","setPaymentResponse","session","sourceOfFunds","provided","scheme","errorStr","initialStatus","initialValues","enableReinitialize","validationSchema","validateOnFocus","onSubmit","updateSessionFromForm","isSubmitting","setFieldTouched","isValid","handleChange","submitForm","dirty","setFieldValue","setFieldError","overflow","borderTop","marginTop","Row","Col","md","onKeyUp","target","is_a_company","flexDirection","gridColumn","onFocus","field","locations","phone_numbers","phone_number","replaceAll","onBlur","_","MaskedInput","mask","gridTemplateColumns","xl","innerRef","guide","readOnly","validate","_value","policyHolderObject","policyHolder","first_name","last_name","validateName","autoComplete","whiteSpace","goBack","Helmet","onChangeClientState","addedTags","scriptTags","foundScript","addEventListener","once","defer","PaymentContent","paymentDetails","paymentResponse","maskCreditCard","billingDetails","paymentPurpose","paymentPurposeDetailed","currencyType","paymentAmount","TRANSACTION_TYPES","numberMaskObject","prefix","includeThousandsSeparator","integerLimit","numberMask","createNumberMask","paymentFormSchema","object","shape","nationalId","string","min","PaymentDetails","confirmPayment","paymentConfirmed","setPaymentDetails","validateTrnPolicy2","showValidationError","persist","confirmRef","getToken","propsDisabled","shouldDisableSubmit","hasEmptyValues","setSubmitting","validationResult","initialTouched","submitCount","handleBlur","lg","TRNMask","paddingLeft","pattern","gridColumnStart","defaultChecked","sort","ref","ReceiptErrorModal","paymentType","modalState","setModalState","useImperativeHandle","openModal","closeModal","toggleModal","referenceNumber","getDay","getUTCMonth","getFullYear","getMilliseconds","orderDate","toISOString","forwardRef","CreateDocumentAPI","formId","shouldGeneratePdf","policyId","riskItemId","transactionId","reqType","v4","PaymentForm","useLocation","_transaction","promoCodes","getPromoCodesApplied","userId","getUserId","getActivePolicy","policyState","setPolicyState","getActivePolicies","getPaymentResponse","paymentScheduleData","getPaymentScheduleData","activeRisk","getActiveRisk","policyFormInfo","getPolicyFormInfo","getPolicyPaymentPlan","newPremium","getNewPremium","keepBilling","persistBilling","attempts","setAttempts","changeOnPremium","getChangeOnPremium","sourceType","getSourceType","brokerPolicyCreated","getBrokerPolicyCreated","completedSteps","billing","receipt","renewal","additionalPremium","paymentSchedule","receiptErrorModalRef","useCallback","isPaymentModalOpen","openPaymentModal","isErrorModalOpen","openErrorModal","isErrorModalOpen2","openErrorModal2","isValidationErrorModalOpen","openValidationErrorModal","setError","errorTitle","setErrorTitle","sessionData","getSelectedSession","handleModalClose","pathname","setTransactionType","AuthNetworkLayer","getTrnPolicyToken","jwtDecoder","setActivePolicies","policies","p","policy_number","setActivePolicy","setCurrentUser","users","setPolicyHolders","login","setToken","Modal","modalType","INFO","content","cardnumber","first4","last5","subText","primaryLabel","primaryCallback","isInFlow","reference","policyManagerData","fullname","registrationNumbers","certificates","paymentData","apiOperation","order","other","policyPrefix","purpose","insuranceTransactionResponse","transactionStatus","transactionReason","receiptResponse","filesNeeded","renewalResult","isPaymentSuccessful","responseAfterUpdate","transactionResponse","messageTitle","userPhoneNumbers","smsPhoneNumber","phone","use_for_sms","confirmationResponse","sendPaymentConfirmation","national_id","sendPaymentConfirmationSms","filename","fileContent","handleRenewalTransactionArgumentObject","formatPolicyForRenewal","getPaymentScheduleInfo","addPaymentReminder","_cart","_manualExtensions","updatedPolicy","removeMortgagee","newCodes","codes","vehicleOver5MillionMarketValueLimit","currentYear","newSumInsured","ratingCodeToRemove","_newRisks","newlyUpdatedPolicy","removeRatingCodesFromRisks","flat","renewAndUpdatePolicy","premiumPA_UM","error_message","generateDocuments","_terms","scheduleResult","nextTerm","policynum","dueDate","reminder_type","TransactionHelper","handlePayBalanceTransactionArgumentObject","generateExtensionDocuments","extendPolicy","isFuture","removePaymentReminder","totalPayments","extensionResponse","isFutureDate","company_name","handleAdditionalPremiumTransactionArgumentObject","FILESNEEDED","isNotEmpty","newMarketValues","riskID","marketValueResult","vehiclesInfo","customerInfo","wasChanged","otherPhoneNumber","homeAddress","transScheduleResponse","getTransactionSchedule","certResponse","Valuation","vehicleInfo","registrationNumber","registration_number","newEmail","driversInfo","confirmationResult","successful","count","assignReceipt","drawReceipt","createLog","trn","receiptNum","filesGenerated","Count","receipt_number","transaction_type","getHomePolicyDocuments","riskId","mortgagees","createDocumentAPIPayload","homePolicyFileResponse","department_class","source","sessionType","newMarketValue","saveSessionPayload","paymentForm","receipt_no","session_type","receipt_method","was_broker_policy","branch","receiptFailed","savePaymentDetailsPayload","session_id","receipt_amount","paymentmethod","rate_of_exchange","payBalanceResponse","sessionUpdatePayload","fields_to_update","cashier_user_id","payment_method","payment_date","transaction_status","transaction_reason","activePolicy","sessionTracking","setSelectedSession","savePaymentActivity","clearPolicyManager","setPolicyManager","setMissingDocuments","missing_documents","setConfirmationData","missingDocs","narrative","noticeNarratives","isHomePolicy","secondaryLabel","secondaryCallback","ERROR","afterClose","navBarState","setNavbarState","resetNavbar","getNavbarState","navbar","useStyles","createUseStyles","tabButtons","maxHeight","lineHeight","borderTopLeftRadius","borderTopRightRadius","active","customStyles","option","isSelected","isFocused","singleValue","borderStyle","opacity","isDisabled","transition","control","dropdownIndicator","indicatorSeparator","visibility","placeholder","menuList","overflowY","paddingBottom","boxSizing","customStylesNew","customStylesLeft","customStylesRight","thisYear","oldYear","sub","years","Array","monthArray","enUS","localize","month","months","dayDefault","genders","defaultRegisterValues","dobDay","dobMonth","dobYear","companyTRN","gender","companyName","isIndividual","authFormSchema","boolean","otherwise","Auth","match","isClaims","isTrackAClaim","isPayBalance","isPolicyManager","generatingNewToken","formikRef","classes","tab","setTab","url","setIsIndividual","days","setDays","remoteServerError","setRemoteServerError","currentTime","dob","handleDOBChange","daysInMonth","getDaysInMonth","from","getSelectedDate","selectedDate","day","getDate","getMonth","daysAmount","daysArray","returnDaysAmountArray","formValues","userData","national_id_type","setUserFormData","clearConfirmationData","globalNameIdRequest","getGlobalNameId","IsMethodCallSuccessful","otpMethodsResponse","getUserData","otpMethods","batch","setUserId","mother_maiden_name","validateField","resetForm","gap","boxShadow","sm","xs","paddingRight","blurInputOnSelect","styles","classNamePrefix","noOptionsMessage","isSearchable","textDecoration","dNet","res","Response","Login","globalNameId","setFullYear","toLocaleDateString","receipts","mwGlobalNameSearch","mwGlobalNameCompanySearch","method","userid","otptoken","otp","is_claims","is_policy_manager","plate_num","policy_num","chassis_num","global_name_search","MissingDocUploadToRegistry","successArray","linkRegistryFile","axios","create","baseURL","bearerToken","store","getState","auth","jwt_auth","catch","createEFT","config","Calendar","setSelectedDate","currentDay","currentMonth","maxDate","Footer","href","validatePolicy","validateLicense","validateChassisNumber","policyNum","chassisNum","licenseNum","globalName","OTP","userFormData","getUserFormData","setVal","modalError","setModalError","currentMethod","setCurrentMethod","setValue","validateMaidenName","checkPoliciesForDepartmentClass","departmentClass","some","fetchClaims","newClaimsArray","retrievedClaims","getClaims","claims","setMethod","carrier","hasMotorPolicies","hasHomePolicies","hasLiabilityPolicies","_token","alternateVerification","getNewGlobalToken","fetchedClaims","claimsStatuses","getAllClaimStatus","setClaimsStatuses","setClaimsForTracking","setHasMotorPolicies","setHasHomePolicies","setHasLiabilitiesPolicies","filteredPolicies","setPolicies","filterForClaims","extendablePolices","getExtendablePoliciesPaymentPlan","setExtendablePolicies","filterForExtension","hasHome","filteredPoliciesForPolicyManager","findAllActiveAndRenewablePolicies","setRenewablePolicies","filterForRenewal","choice","contact","sendOTP","OTPVerification","OTPToken","setOTPToken","isModalVisible","showModal","verifyToken","verifyOTP","filteredPoliciesForClaims","to","initialTime","direction","timeToUpdate","reset","Minutes","Seconds","formatValue","justifySelf","resendToken","otherDetailsParty","driverIsOwner","driverAtFault","regNo","vehicle","insuranceCo","insuranceCompany","policyNo","vehicleMake","vehicleModel","vehicleYear","ownerFname","owner","ownerLname","ownerTrn","ownerPhoneNumber","ownerEmail","ownerInjury","ownerInjuryDetails","ownerWasDriver","propertyOwnername","propertyOwnerPhoneNumber","driverFname","driver","driverLname","driverTrn","driverPhoneNumber","driverEmail","driverInjury","driverInjuryDetails","passengers","panelDetails","phoneNo","schema","s","array","of","telephone","injured","injuryStatus","PaymentConfirmation","shouldEmail","wasEmailSent","confirmationData","getConfirmationData","getMissingDocuments","receiptDetails","readUploadedFileAsText","inputFile","temporaryFileReader","FileReader","onerror","abort","DOMException","onloadend","readAsDataURL","emailResult","promises","all","isRenewal","isQuickPay","setEmailSent","emailClient","tel","tempLink","createElement","appendChild","b64","innerHTML","download","click","applicableNarratives","homePolicies","applicableRiders","pa_rider","comprehensiveCodes","comprehensiveAgreedValueCodes","PA_death_Disablement","uninsured_Motorist","applicable_policy_prefix_promo","_manualLimits","cart_item","manual_extensions","manual_limits","discounts","cartitem","ALLOWED_CERT_NAR_CODES","getRisksofType","riskType","filterForPoliciesWithNoPlateRisks","element","renewal_status","original_renewal_premium","original_sum_insured","plan","findAllActivePolicies","listMissingDocuments","naratives","narative","identifyPolicyType","policyType","type_of_cover","isUMRider","isPARider","isUpsellingApproved","currentyear","is_third_party_policy","usage_code","group","group_name","car_year","building_year_built","formatPhoneNumber","phoneNumberString","cleaned","selectedFile","reader","onload","toProperCase","riders_list","totalDeduction","rider","removeRiderPremium","currentRider","getRiderPremium","hasRider","calculatePayment","addedCost","results","getPremiumFromCalculator","payment_plans","half_premium","second_premium_payment","service_charge","service_charge_type","service_charge_amount","gct","total_premium","half_premium_with_gct","payment_plan_name","payment_plan_id","renewal_premium_with_gct","full_payment","checkAgainstPremiumCode","keyWord","premium_code","calcPremiumPA_UM","pa_um","pa","um","matchedRates","uninsured","pa_1","pa_2","n","typeOfExt","premium_um","tier","premium_pa","auto_authorize","receipt_date","client_global_name_id","manual_receipt_number","payment_type","is_tax_exempt","calculateBreakdown","half","otherDiscounts","breakdownData","market_value","total_discounts","riskTotalDiscounts","discount","riskPremium","pa_premium","um_premium","riders_premium","at_minimum","renewal_minimum_premium","getRenewalStartDate","policyRenewalDateString","policyRenewalDate","tempDate","isBefore","isEqual","add","minutes","removeRiders","ridersList","tempList","rider_code","isComprehensive","isComprehensiveAgreedValue","isPocaComplianceCheck","poca","is_poca_compliant","poca_documents_expire","hasNoPendingDocs","narratives","allowedCodes","k","global_names","service_type","payment_number","addressInfo","is_main_location","policy_user","policy_holder_address","getRenewalEndDate","hours","getRenewalRisk","ncd_percent","renewal_ncd_percent","ratingCodes","temp_risks","temp_risk","tempRates","tempRate","newRates","_codes","paymentInfo","IS_PART_PAYMENT","extensionDetails","getPolicyProfileExt","effectiveCover","isPocaCompliant","noPendingDocuments","renewal_narratives","paymentPlanId","shouldCreateCertificate","shouldCreateCoverNote","effectiveTime","scheduleResponse","mime_type","concat","getCertsForRisks","resp_transaction_schedule","isArray","resp_covernotes","noteResp","getCoverNotesForRisks","resp_certificates","certResp","planIds","plans","getPaymentPlans","premiumCalculatorResults","premiumCalculator","finalPremiums","policy_payment_plans","risk_ratings","cashPaymentInstructions","part_payment","premium_instructions","trn_instructions","isPromoCodeApplicable","populateParishTowns","parishTowns","request","getParishTowns","populateStreetTypes","streetTypes","getStreetTypes","populateGeneralAreas","generalAreas","getGeneralAreas","checkGlassLimits","limitsArray","limit_code","refreshPolicies","maiden_name","drivers_licence_number","motorPolicies","branchData","street","ext","registryAddress","BranchAddress","obfuscateChildren","Branches","locate","subject","formStates","contactFormSchema","ContactForm","formState","setFormState","setTimeout","validateOnMount","rows","resize","justifyItems","fontStyle","LATE_DAY_PERIOD","MaxLoader","withSuspense","App","ReactDOM","render","persistor","serviceWorker","unregister","policyForClaims","claimHandlerID","claimsQuestions","claimsNoteQuestions","claimsDamageQuestion","selectedAccidentType","questions","currentBlob","answer","isClaimSearch","registryTypes","hasWitnesses","documentTypes","policeReceipt","emailSent","received_from","reportedToPolice","customerAtFault","claimsRepairEstimatesDocuments","claimsSubmitUploadDocuments","claimSuccessDocuments","claimToDamages","hasRepairEstimateFiles","currentPolicyNumber","descriptionNote","descriptionDocument","accidentTypeQuestion","currentClaimId","currentBlobModal","fullAddress","claimReview","authorizationDetails","allImages","claimValue","isOpened","currentPolicyDate","indicatorUpdater","timeDisplayed","lossResults","timeMeridian","thirdPartyDetails","otherServiceProviderName","estimateFile","thirdPartyOccupantAnswer","claimDocumentsSent","insuredName","insuredVehicleDamagePanel","insuredDriverWasInjured","otherPartyDocs","driverInfoDocs","otherDetails","insuredDamageDocs","isLateClaim","outstandingDocuments","currentLossDate","claimSubmittedSuccessfully","registryCreatedSuccessfully","renewalSumMarketValueFile","claimsForTracking","activeClaimForTracking","claimSlice","setPolicyForClaims","setOutstandingDocuments","setClaimHandlerID","setRegNo","setInsuredName","setClaimSubmittedSuccessfully","setRegistryCreatedSuccessfully","setRegistryTypes","setIsSCDFlow","setRegistryId","setCurrentLossDate","setSpecificOutstandingDocument","setInsuredDamageDocs","setEmail","setReceivedFrom","setGlobalSourceType","setClaimSuccessDocuments","setcurrentClaimId","setOtherDetails","setIsClaimSearch","setDriverInfoDocs","setCurrentPolicyNumber","setPassengerDetails","setIsLateClaim","setOtherPartyDocs","setinsuredDriverWasInjured","setThirdPartyOccupantAnswer","setThirdPartyCounter","setThirdPartyDetails","setAllImages","setServiceProvider","setOtherServiceProviderName","setTimeDisplayed","setTimeMeridian","setIndicatorUpdater","setEstimateFile","setCurrentPolicyDate","setIsOpened","setCompletedSteps","processNumber","oldSteps","Set","setFullAddress","setStreetNumber","setStreetType","setStreetName","setParish","setDocumentTypes","setTown","setLossResult","setLossResults","setRiskId","setClaimId","setActiveClaimForTracking","setPolicyId","setDateReported","setLossDate","setNote","setDescriptionNote","setDescriptionDocument","setAccidentTypeQuestion","setClaimsQuestions","setClaimsNoteQuestions","setclaimsDamageQuestion","setAccidentType","setSelectedFile","addAnswer","setQuestion","setGeneralArea","setClaimReview","setAuthorizationDetails","setAccidentAffected","setYourAccidentDetails","setClaimValue","setClaimDocumentsSent","setInsuredVehicleDamagePanel","setWitnesses","setHasWitness","setPoliceReceipt","setWasReportedToPolice","setCustomerIsAtFault","setClaimSubmitUploadFiles","setClaimToDamages","setHasRepairsEstimate","setRenewalSumMarketValueFile","getInsuredDamageDocs","claim","getOtherDetails","getClaimHandlerID","getRegNo","getPassengerDetails","getCurrentLossDate","getDriverInfoDocs","getIsClaimSearch","getOtherPartyDocs","getInsuredVehicleDamagePanel","getThirdPartyCounter","getThirdPartyDetails","getTimeDisplayed","getTimeMeridian","getCompletedSteps","getIsSCDFlow","getClaimValue","getIsLateClaim","getEmail","getClaimSubmittedSuccessfully","getRegistryCreatedSuccessfully","getReceivedFrom","getOtherServiceProviderName","getAllImages","getClaimId","getLossDate","getRegistryId","getcurrentClaimId","getDocumentTypes","getClaimsQuestions","getClaimsNoteQuestions","getclaimsDamageQuestion","getAccidentType","getAccidentTypeQuestion","getOutstandingDocuments","getCurrentBlob","getLossResults","getInsuredDriverWasInjured","getEstimateFile","getDescriptionNote","getDescriptionDocument","getGeneralArea","getFullAddress","getStreetNumber","getStreetName","getCurrentPolicyNumber","getStreetType","getParish","getTown","getClaimReview","getAuthorizationDetails","getAccidentAffected","getCurrentPolicyDate","getIndicatorUpdater","getYourAccidentDetails","getClaimDocumentsSent","getClaimWitnesse","getHasWitnesses","getCustomerIsAtFault","getWasReportedToPolice","getPoliceReceipt","getClaimToDamages","getHasRepairEstimates","getClaimsSuccessDocuments","getRenewalSumMarketValueFile","getClaimsForTracking","getClaimsStatuses","getActiveClaimForTracking","createAction","policyID","getPolicyRisks","getPolicyProfExt","checkPromoCode","ratingCode","getPolicyByParams","getPolicyProfRatingCodes","getExchangeRate","paymentPlans","schedule","getPolicyTransactions","transactions","pPaymentPlan","param","genPolicyModification","createPolicy","updatePolicyNarratives","narratives_to_add","narratives_to_remove","notingRegistrationNumber","policy_start_date","policy_end_date","is_do_not_prorate","authorize_transaction","trans_wordings","external_reference_number","service_charge_value","setToCancel","is_manual_premium","reason","cancelPolicy","validateRegNo","chassisNo","getPolicyClaim","claimID","onUploadProgress","registrySubmit","globalNamePolicies","agreement","timeRequest","time","parseJSON","timestamp","middle_name","twoPartAgreement","nonTwoPartAgreement","uid","branchEmail","checkBadKey","breakdown","registry_type","relating_to","type_of_task","destination","assigned_to_id","u","user_name","user_id","associated_premium","date_due","date_received","document_reference_number","charAt","instructions","quotation_id","report_method","source_id","assigned_by","source_type","registry_type_description","assign_to_id","sendRegistryEmailForCashPayment","totalDue","cvv","expiry","cardAmount","cardCountry","cardExp","nRisks","nlimits","limits","limit_amount","nExtensions","requestBody","payment_plan_ids","renewalPremiumCalculator","cleanPolicyForGeneralMod","cleanRisksForGeneralMod","payment_plan","motorPolicyPayload","createCoverNote","homePolicy","cleanPolicyForRenewal","cleanRisksForRenewal","source_name","insureds","homePolicyPayload","authorized_driver_wording","renewal_sum_insured","year_for_rating","create_certificate","create_cover_note","cover_note_details","days_effective","manual_numbers","risk_external_id","manual_number","updateRenewPolicy","account_code","account_name","billing_account_code","cancel_date","cancel_reason_details","date_for_renewal_to_start","effective_cancel_date","endorsements_that_apply","estimated_maximum_loss","fa_excess_percent","fa_excess_description","inception_date","insured_text","is_cancelled","is_in_renewal","is_loss_of_profit_policy","is_premium_financed","other_risk_details","peril_type","sections_that_dont_apply","source_account_code","source_comm_rate","territorial_limits","warranties_do_not_apply","_address","cover_notes","loadings","mortgagee_text","risk_description","risk_section_number","veh_cert_expiry_date","veh_cnote_expiry_date","vehicle_location","receiptArray","summary","parameter","effective_time","renewal_details","currentTransaction","pendingDocuments","policyDetails","menuOption","policyInfo","currentPolicy","payments","renewalDetails","tracking","trackedEvents","receive_email_at","total_payments","sessionUpdateEndpoint","sessionUpdateHeaders","sessionUpdateResponse","fields_to_add","saveSessionResponse","savePaymentDetailsResponse","updateSessionResponse","sessionId","isSessionCreated","updateReceiptTransaction","saveSession","savedSessionId","paymentsList","savePaymentDetails","CONFIRM","INPUT","storage","localForage","blacklist","rootReducer","combineReducers","additionalBenefitsReducer","authReducer","payment","paymentReducer","overlayReducer","confirmation","confirmationReducer","claimsReducer","navBarReducer","policymanager","policyManagerReducer","renewalReducer","persistedReducer","persistReducer","configureStore","reducer","middleware","getDefaultMiddleware","serializableCheck","ignoredActions","FLUSH","REHYDRATE","PAUSE","PERSIST","PURGE","REGISTER","immutableCheck","devTools","persistStore","mainAddress","selectedPolicyEditorTab","mainFlowIndex","subFlowIndex","progressStep","highlightedRiskId","clickedNotificationInfoPocket","UniqueInfoID","focusFieldID","subtitle","progressBarStatus","newRegistrationNumbers","parishsTowns","editedAddressFields","isAlternativeNumberEdited","isPolicyPastDue","policyFormInfoChanged","policyManagerSlice","setSubtitle","setIsPocaCompliant","setProgressBarStatus","setClickedNotificationInfoPocket","setSelectedPolicyEditorTab","setProgressStep","setFullName","setNewPremium","setChangeOnPremium","setGCT","setPolicyFormInfo","setStreetTypes","setParishsTowns","setMainAddress","setGeneralAreas","setEditedAddressFields","setIsAlternativeNumberEdited","setIsPolicyPastDue","setHighlightedRiskId","setPolicyFormInfoChanged","clearPolicyManagerFormInfo","getPolicyManager","getSelectedPolicyEditorTab","getParishsTowns","getMainAddress","getEditedAddressFields","getIsAlternativeNumberEdited","getProgressStep","getGCT","getHighlightedRiskId","getSubtitle","getProgressBarStatus","getClickedNotificationInfoPocket","getIsPolicyPastDue","getPolicyFormInfoChanged","getIsPocaCompliant","subcontent","list","subContent","customStyle","enablePrimaryCallback","inputType","secondaryContent","shouldDelete","showCloseButton","isDismissed","dismissProcedure","alignButtonsVertically","ErrorModal","ConfirmModal","InputModal","InfoModal","ReactModal","setAppElement","InfoIcon","setActive","popupRef","repositionPopup","offsetHeight","removeEventListener","Info","Details","checkWeirdBadKey","Sucess","newResponse","newData","_extendablePolicies","paymentPlanRequest","isExtendable","policy_payment_plan","isLate","counter","loginRequest","put","capitalizeFirstLetter","capitalizedString","confirmationSlice","setIsInFlow","setReceiptDetails","CarouselC","UseLiveChat","shouldLoad","license","onChatLoaded","visitor","chatBetweenGroups","onErrorLoading","onBeforeLoad","onAfterLoad","onChatWindowOpened","onChatWindowMinimized","onChatWindowHidden","onChatStateChanged","onChatStarted","onChatEnded","onMessage","onTicketCreated","onPrechatSurveySubmitted","onRatingSubmitted","onRatingCommentSubmitted","mounted","loadLiveChatApi","LC_API","__lc","chat_between_groups","lc","getElementsByTagName","insertBefore","chatLoaded","chatNotLoaded","on_before_load","on_after_load","on_chat_window_opened","on_chat_window_minimized","on_chat_window_hidden","on_chat_state_changed","on_chat_started","on_chat_ended","on_message","on_ticket_created","on_prechat_survey_submitted","on_rating_submitted","on_rating_comment_submitted","setCallbacks","TimePickerV2","meridian","timePicked","mer","changeMer","hour","setHour","minute","setMinute","timeChanged","setTimeChanged","hourArray","minutesArray","bottom","input","valueContainer","newTime","Spinner","LoadSpinner","animated","FaBars","FaTimes","PersonInfo","imageWebp","findRootNode","node","classList","contains","person_container","currentTarget","querySelector","scrollHeight","transitions","requestAnimationFrame","fdd","clearFocused","getElementsByClassName","toggle","AboutUs","smallTitle","persons","person","CustomNavLink","children","exact","LazyComponent","fallback","props","Loader","globalId","details","globalPolicies","sideBarInfo","mode","quicktip","externalContent","quicktipContainerContent","styling","previousNavigationLink","pageName","link","payBalanceUserProgress","currentUser","redirectTarget","renewablePolicies","extendablePolicies","coverNotePolicies","fetchExtendableSuccessfully","activePolicies","otherCalculations","authFormInfo","TRN","DOB","stickyNavHeaderVisible","valuationStatus","halfPayment","persistUser","policyPaymentPlan","missingUserData","noLossDeclarationStatus","selectedSession","authSlice","setSideBarInfo","setPayBalanceUserProgress","setPreviousNavigationLink","setStickyNavHeaderVisible","setRedirectTarget","setValuationStatus","setExtendablePoliciesFetched","setPaymentType","setCoverNotePolicies","setActiveRisk","setBreakdown","setOtherCalculations","setAuthFormInfo","setHalfPayment","setPaymentPlans","addPromoCode","removePromoCodeByIndex","setPersistUser","setPolicyPaymentPlan","setMissingUserData","setNoLossDeclarationStatus","logout","getSideBarInfo","getNotification","getPreviousNavigationLink","getPayBalanceUserProgress","getStickyNavHeaderVisible","getPolicies","getPaymentType","getRenewablePolicies","getExtendablePolicies","getBreakdown","getOtherCalculations","getHalfPayment","getNoLossDeclarationStatus","getHasMotorPolicies","getHasHomePolicies","getHasLiabilitiesPolicies","paymentStatus","paymentOverDue","paymentFormData","paymentMethod","receiveReceiptOption","receiveReceiptAtEmail","paymentSlice","setPaymentStatus","setPaymentOverDue","setPaymentFormData","setPaymentSchedule","setPaymentScheduleData","clearPaymentForm","clearPayments","getPaymentStatus","getPaymentOverDue","getPaymentFormData","MARKETVALUEMINIMUM","MPCC","MPCCS","MCOC","MCOCS","MCPC","MUWC","MUWCS","MPRC","MPRCS","MLXC","MLXCC","MPPC","MPPCB","MPPCS","MPPCBS","MPPTF","ADDITIONALPREMIUMMINIMUM","MPRCC","MUWCC","MMCCS","MPCCN","MPCTF","MCOTF","Registration","SCREEN_SMALL_MOBILE","SCREEN_MEDIUM_MOBILE","SCREEN_MOBILE","SCREEN_TABLET","SCREEN_DESKTOP","SCREEN_LARGE_DESKTOP","screenWidth","setScreenWidth","innerWidth","getScreenType","checkIfNewState","currentScreenType","isSmallMobile","isMediumMobile","CustomSwal","withReactContent","Swal","modal","fire","iconHtml","error_icon","reverseButtons","confirmButtonText","scrollbarPadding","html","cancelButtonText","showCancelButton","allowOutsideClick","allowEscapeKey","customClass","cancelButton","isConfirmed","success_icon","info_icon","docs","showClass","popup","hideClass","dismiss","DismissReason","cancel","close","RIGHT","motorPolicyQuestionsAndResponses","question","homePolicyQuestionsAndResponses","renewalSlice","setHomePolicyQuestionsAndResponses","setMotorPolicyQuestionsAndResponses","setSourceType","setBrokerPolicyCreated","getMotorPolicyQuestionsAndResponses","getHomePolicyQuestionsAndResponses"],"mappings":"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","file":"static/js/main.5b29e5ad.chunk.js","sourcesContent":["import { globalNameGet } from \"api/dNet/GlobalName\";\r\nimport { submitNote } from \"api/dNet/Renewal\";\r\nimport {\r\n\tsubmitClaim,\r\n\tsubmitFile,\r\n\tlinkFile,\r\n\tgetRegistryTypes,\r\n\tgetClaim,\r\n\tgetClaimLossCauses,\r\n\tupdateClaim,\r\n\tgetParticipantType,\r\n\taddParticipant,\r\n\tgetClaimLossResult,\r\n\tgetSourceTypes,\r\n\tgetClaimsHandler,\r\n\tgetPolicy,\r\n} from \"api/dNet/Claims\";\r\nimport { nodeApi } from \"api/Middleware\";\r\nimport Compressor from \"compressorjs\";\r\nimport { handleCompressPDF } from \"api/external/pdf\";\r\nimport { checkExpToken } from \"helpers/auth\";\r\n\r\nexport default class ClaimsNetworkLayer {\r\n\tstatic async getSubmitClaim(\r\n\t\tpolicy_id,\r\n\r\n\t\trisk_id,\r\n\t\tdateReported,\r\n\t\tlossDate,\r\n\t\tstreetNumber,\r\n\t\tstreetType,\r\n\t\tstreetName,\r\n\t\tparish,\r\n\t\ttown,\r\n\t\tgeneral_area,\r\n\t\tlossCause,\r\n\t\tlossResult,\r\n\t\tlossDescription,\r\n\t\tlocus_of_event,\r\n\t\tparticipants\r\n\t) {\r\n\t\t// const endpoint = \"middleware/epic_mwClaimSubmit\";\r\n\r\n\t\t// const headers = {\r\n\t\t// \t\"x-auth-token\": token,\r\n\t\t// \t\"Content-Type\": \"application/json\",\r\n\t\t// };\r\n\r\n\t\tconst payload = {\r\n\t\t\tpolicy_id: policy_id,\r\n\t\t\tdate_reported_to_insurer: dateReported,\r\n\t\t\tloss_date: lossDate,\r\n\t\t\tloss_cause: lossCause,\r\n\t\t\tloss_result: lossResult,\r\n\t\t\tdescription: lossDescription,\r\n\t\t\tnotification_method: \"WebSite\",\r\n\t\t\trisk_ids: [risk_id],\r\n\t\t\tlocation: {\r\n\t\t\t\tgeneral_area,\r\n\t\t\t\taltitude: \"\",\r\n\t\t\t\tblock: \"\",\r\n\t\t\t\tbuilding_label: \"\",\r\n\t\t\t\tbuilding_number: \"\",\r\n\t\t\t\tcomplex_name: \"\",\r\n\t\t\t\tcountry: \"Jamaica\",\r\n\t\t\t\tinternational_area: \"\",\r\n\t\t\t\t// is_international_address: \"\",\r\n\t\t\t\tisland: \"\",\r\n\t\t\t\tlatitude: \"\",\r\n\t\t\t\tlongitude: \"\",\r\n\t\t\t\tparish,\r\n\t\t\t\tpostal_zip_code: \"\",\r\n\t\t\t\tstreet_name: streetName,\r\n\t\t\t\tstreet_number: streetNumber,\r\n\t\t\t\tstreet_type: streetType,\r\n\t\t\t\ttown,\r\n\t\t\t\tunit_number: \"\",\r\n\t\t\t},\r\n\t\t\tlocus_of_event,\r\n\t\t\tparticipants,\r\n\t\t};\r\n\t\treturn submitClaim(payload);\r\n\t\t// return checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\r\n\t// static async submitThirdPartyLetter(payload) {\r\n\t// \tconst endpoint = \"/email/claim/third-party\";\r\n\r\n\t// \ttry {\r\n\t// \t\tconst statementResponse = await nodeApi.post(endpoint, payload, {\r\n\t// \t\t\ttimeout: 25000,\r\n\t// \t\t\theaders: {\r\n\t// \t\t\t\tAccept: \"application/json;*/*\",\r\n\t// \t\t\t\t\"Content-Type\": \"application/json\",\r\n\t// \t\t\t},\r\n\t// \t\t});\r\n\t// \t\tif (!statementResponse.data) throw new Error(\"No data found\");\r\n\t// \t\treturn { result: statementResponse.data, success: true };\r\n\t// \t} catch (e) {\r\n\t// \t\treturn { success: false };\r\n\t// \t}\r\n\t// }\r\n\tstatic async getPolicyForClaim(policy_id, loss_date, risk_ids) {\r\n\t\tconst payload = {\r\n\t\t\tpolicy_id,\r\n\t\t\tloss_date,\r\n\t\t\trisk_ids,\r\n\t\t};\r\n\t\tlet response = await getPolicy(payload);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tstatic async getHandler() {\r\n\t\tconst payload = {\r\n\t\t\tactive_only: false,\r\n\t\t\tuser_department: \"\",\r\n\t\t};\r\n\t\tlet response = await getClaimsHandler(payload);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tstatic async submitServiceProviderLetter(payload) {\r\n\t\tconst endpoint = \"/email/claim/provider-email\";\r\n\r\n\t\ttry {\r\n\t\t\tconst statementResponse = await checkExpToken({endpoint, payload, \r\n\t\t\t\ttimeout: 25000,\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tif (!statementResponse) throw new Error(\"No data found\");\r\n\t\t\treturn statementResponse;\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async submitAccidentDetail(claimId, note) {\r\n\t\tconst payload = {\r\n\t\t\tlink_id: claimId,\r\n\t\t\tdescription: \"Accident Detail from the customer's claim\",\r\n\t\t\tnotes: note,\r\n\t\t\tlink_to: \"claim\",\r\n\t\t\ttype: \"Note For File\",\r\n\t\t\talert: false,\r\n\t\t};\r\n\t\tlet response = await submitNote(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\tstatic async submitAdditionalNote(claimId, note, description) {\r\n\t\tconst payload = {\r\n\t\t\tlink_id: claimId,\r\n\t\t\tdescription: description,\r\n\t\t\tnotes: note,\r\n\t\t\tlink_to: \"claim\",\r\n\t\t\ttype: \"Note For File\",\r\n\t\t\talert: false,\r\n\t\t};\r\n\r\n\t\tlet response = await submitNote(payload);\r\n\t\treturn response;\r\n\t}\r\n\tstatic async submitAcknowledgementNote(claimId, claim_number, customer, date) {\r\n\t\tlet note = `${!customer ? \"Dear Customer, \" : `Dear ${customer}`}, \\n\r\n\tWe acknowledge receipt of your claim form on ${date} and have assigned claim number ${claim_number} for future reference.\r\n\r\n\tYour Third-Party Policy provides coverage for damage to which you are liable to the third party, \r\n\tyour policy does not cover damage or loss to your vehicle.\r\n\tFrom the information you have provided, the Third Party is the liable party for the accident. In \r\n\tview of the foregoing, you are provided with a Deal Direct Letter to communicate with the Third Party's\r\n\tinsurer. We have written to the Third Party's insurer indicating your intention submit a claim \r\n\tfor your loss. \r\n\r\n\tIn the interim, please prepare the following for submission to the Third Party’s insurer: \r\n\r\n- Pictures from the accident scene, pictures of the damage to your vehicle and the third party’s vehicle \r\n- Estimate of Repairs \r\n- Assessor’s Report \r\n- Loss of Use Claim \r\n- Witness Statement \r\n\r\nKindly be informed that should you decide against having your vehicle inspected and assessed by \r\nan independent assessor, it is likely that the Third Party's insurer will deduct a percentage from \r\nthe cost of repairs for non- assessment. \r\nWe thank you for your choosing AGIC and aim to offer exceptional claims service throughout this\r\nprocess. Please contact us at (888) 687-2442 or at claims@advantagegeneral.com should you require any \r\nadditional information or clarification throughout the process. \r\n\t`;\r\n\t\tconst payload = {\r\n\t\t\tlink_id: claimId,\r\n\t\t\tdescription: \"Acknowledgement Letter sent to insured\",\r\n\t\t\tnotes: note,\r\n\t\t\tlink_to: \"claim\",\r\n\t\t\ttype: \"Note For File\",\r\n\t\t\talert: false,\r\n\t\t};\r\n\r\n\t\tlet response = await submitNote(payload);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tstatic async submitDemandLetterNote(claimId, providerName, description) {\r\n\t\tlet note = `Dear ${providerName}, \\n\r\n\t\t\r\n\t\t Our customer has requested that their claim be addressed by your company; please find a pdf document attached for your handling. \r\n\t\t\t\r\n\t\t\tShould you have any concerns, please contact our claims department. \r\n\t\t\t\r\n\t\t\tKind regards,\r\n\t\t\t\r\n\t\t\tAdvantage General Insurance Company Limited\r\n\t\t\t`;\r\n\t\tconst payload = {\r\n\t\t\tlink_id: claimId,\r\n\t\t\tdescription /* : \"Demand letter sent to third party insurance\" */,\r\n\t\t\tnotes: note,\r\n\t\t\tlink_to: \"claim\",\r\n\t\t\ttype: \"Note For File\",\r\n\t\t\talert: false,\r\n\t\t};\r\n\r\n\t\tlet response = await submitNote(payload);\r\n\t\treturn response;\r\n\t}\r\n\tstatic async submitAccidentDescription(claimId, note) {\r\n\t\tconst payload = {\r\n\t\t\tlink_id: claimId,\r\n\t\t\tdescription: \"Accident Description from the customer's claim\",\r\n\t\t\tnotes: note,\r\n\t\t\tlink_to: \"claim\",\r\n\t\t\ttype: \"Note For File\",\r\n\t\t\talert: false,\r\n\t\t};\r\n\r\n\t\tlet response = await submitNote(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\tstatic async uploadDocuments(\r\n\t\trecordId,\r\n\t\tfileName,\r\n\t\tfileType,\r\n\t\tfileData,\r\n\t\tdescription,\r\n\t\tdoc_type,\r\n\t\tcallback,\r\n\t\ttable = \"claim\"\r\n\t) {\r\n\t\tconst payload = {\r\n\t\t\ttable: table,\r\n\t\t\trecord_id: recordId,\r\n\t\t\tfile_id: \"\",\r\n\t\t\tfile_name: fileName,\r\n\t\t\tfile_type: fileType,\r\n\t\t\tfile_data: fileData?.replace(new RegExp(\"^data:.*base64,\", \"i\"), \"\"),\r\n\t\t\tdescription: description,\r\n\t\t\tdoc_type: doc_type,\r\n\t\t};\r\n\t\treturn submitFile(payload, callback);\r\n\t\t// return checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\r\n\tstatic async getClaim(claim_number, loss_date) {\r\n\t\tconst payload = {\r\n\t\t\tclaim_number,\r\n\t\t\tloss_date,\r\n\t\t};\r\n\t\treturn getClaim(payload);\r\n\r\n\t\t// return checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\tstatic async getLossCauses(policy_prefix) {\r\n\t\tconst payload = {\r\n\t\t\tpolicy_prefix,\r\n\t\t};\r\n\r\n\t\treturn getClaimLossCauses(payload);\r\n\t\t// return checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\r\n\tstatic async getLossResults(policy_prefix, loss_cause) {\r\n\t\tconst payload = {\r\n\t\t\tpolicy_prefix,\r\n\t\t\tloss_cause,\r\n\t\t};\r\n\r\n\t\treturn getClaimLossResult(payload);\r\n\t}\r\n\r\n\tstatic async getGlobalName(global_name_id) {\r\n\t\tconst response = await globalNameGet(global_name_id);\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t * Fetches a new claims statement from the node endpoint\r\n\t * @param {Object} props\r\n\t * @param {*} props.claimNumber\r\n\t * @param {*} props.customerName\r\n\t * @param {*} props.policyNumber\r\n\t * @param {*} props.make\r\n\t * @param {*} props.model\r\n\t * @param {*} props.year\r\n\t * @param {*} props.regNumber\r\n\t * @param {*} props.phoneNumber\r\n\t * @param {*} props.emailAddress\r\n\t * @param {*} props.accidentType\r\n\t * @param {*} props.accidentAffected\r\n\t * @param {*} props.accidentDetails\r\n\t * @param {*} props.passengerInfo\r\n\t * @param {*} props.thirdPartyInfo\r\n\t * @param {*} props.accidentLocation\r\n\t * @param {*} props.accidentDate\r\n\t * @param {*} props.accidentTime\r\n\t * @param {*} props.accidentStatement\r\n\t * @param {*} props.imagesUploaded\r\n\t * @param {*} props.numberVehiclesInvolved\r\n\t * @param {*} props.yourAccidentDetails\r\n\t * @param {*} props.pedCount\r\n\t * @param {*} props.pedestrians\r\n\t * @param {*} props.witnesses\r\n\t * @param {*} props.propertyOwners\r\n\t * @param {*} props.damagedArea\r\n\t * @param {*} props.selectedProvider\r\n\t * @param {*} props.estimateFileAvailable\r\n\t * @param {*} props.thirdPartyCounter,\r\n\t * @param {*} props.pedInjured,\r\n\t * @param {*} props.hasInfo,\r\n\t * @param {*} props.hasOtherDetails,\r\n\t */\r\n\tstatic async getClaimStatement({\r\n\t\tclaimNumber,\r\n\t\tcustomerName,\r\n\t\tpolicyNumber,\r\n\t\tmake,\r\n\t\tmodel,\r\n\t\tyear,\r\n\t\tregNumber,\r\n\t\tphoneNumber,\r\n\t\temailAddress,\r\n\t\taccidentType,\r\n\t\tnumberVehiclesInvolved,\r\n\t\taccidentAffected,\r\n\t\taccidentDetails,\r\n\t\tpassengerInfo,\r\n\t\tthirdPartyInfo,\r\n\t\tyourAccidentDetails,\r\n\t\tpedCount,\r\n\t\tpedestrians,\r\n\t\twitnesses,\r\n\t\tpropertyOwners,\r\n\t\tdamagedArea,\r\n\t\taccidentLocation,\r\n\t\taccidentDate,\r\n\t\taccidentTime,\r\n\t\taccidentStatement,\r\n\t\timagesUploaded,\r\n\t\tselectedProvider,\r\n\t\testimateFileAvailable,\r\n\t\tthirdPartyCounter,\r\n\t\tpedInjured,\r\n\t\thasInfo,\r\n\t\thasOtherDetails,\r\n\t}) {\r\n\t\tconst endpoint = `/claims/statement`;\r\n\t\tconst payload = {\r\n\t\t\tclaimNumber,\r\n\t\t\tcustomerName,\r\n\t\t\tpolicyNumber,\r\n\t\t\tmake,\r\n\t\t\tmodel,\r\n\t\t\tyear,\r\n\t\t\tregNumber,\r\n\t\t\tphoneNumber,\r\n\t\t\temailAddress,\r\n\t\t\taccidentType,\r\n\t\t\taccidentAffected,\r\n\t\t\taccidentDetails,\r\n\t\t\tpassengerInfo,\r\n\t\t\tthirdPartyInfo,\r\n\t\t\tyourAccidentDetails,\r\n\t\t\tpedCount,\r\n\t\t\tpedestrians,\r\n\t\t\twitnesses,\r\n\t\t\tpropertyOwners,\r\n\t\t\tdamagedArea,\r\n\t\t\taccidentLocation,\r\n\t\t\taccidentDate,\r\n\t\t\taccidentTime,\r\n\t\t\taccidentStatement,\r\n\t\t\timagesUploaded,\r\n\t\t\tnumberVehiclesInvolved,\r\n\t\t\tselectedProvider,\r\n\t\t\testimateFileAvailable,\r\n\t\t\tthirdPartyCounter,\r\n\t\t\tpedInjured,\r\n\t\t\thasInfo,\r\n\t\t\thasOtherDetails,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst statementResponse = await checkExpToken({\r\n\t\t\t\tendpoint,\r\n\t\t\t\tpayload,\r\n\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t},\r\n\t\t\t\ttimeout: 25000,\r\n\t\t\t});\r\n\t\t\tif (!statementResponse) throw new Error(\"No data found\");\r\n\t\t\treturn { result: statementResponse, success: true };\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Fetches a new acknowlegement letter from the node endpoint\r\n\t * @param {Object} props\r\n\t * @param {*} props.date\r\n\t * @param {*} props.customerName\r\n\t * @param {*} props.claim_number\r\n\t */\r\n\tstatic async getAckLetter({ date, customerName, claim_number }) {\r\n\t\tconst endpoint = `/claims/acknowledgement`;\r\n\t\tconst payload = {\r\n\t\t\tdate,\r\n\t\t\tcustomerName,\r\n\t\t\tclaim_number,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst statementResponse = await checkExpToken({endpoint, payload, \r\n\t\t\t\ttimeout: 20000,\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tif (!statementResponse) throw new Error(\"No data found\");\r\n\t\t\treturn { result: statementResponse, success: true };\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Fetches a new authorization letter from the node endpoint\r\n\t * @param {Object} props\r\n\t * @param {*} props.dateOfLoss\r\n\t * @param {*} props.providerName\r\n\t * @param {*} props.providerAddressLine1\r\n\t * @param {*} props.providerAddressLine2\r\n\t * @param {*} props.providerAddressLine3\r\n\t * @param {*} props.providerEmail\r\n\t * @param {*} props.providerAddress\r\n\t * @param {*} props.providerPhone\r\n\t * @param {*} props.customerName\r\n\t * @param {*} props.policyNumber\r\n\t * @param {*} props.make\r\n\t * @param {*} props.model\r\n\t * @param {*} props.regNumber\r\n\t * @param {*} props.vehicleType\r\n\t * @param {*} props.chassisNumber\r\n\t * @param {*} props.engineNumber\r\n\t * @param {*} props.maximumPayable\r\n\t * @param {*} props.authCreated\r\n\t * @param {*} props.authDeadline\r\n\t * @param {*} props.insuredEmail\r\n\t * @param {*} props.insuredPhone\r\n\t * @param {*} props.insuredPhone2\r\n\t * @param {*} props.showGCT\r\n\t */\r\n\tstatic async getAuthLetter({\r\n\t\tdateOfLoss,\r\n\t\tproviderName,\r\n\t\tinsuredEmail,\r\n\t\tinsuredPhone,\r\n\t\tinsuredPhone2,\r\n\t\tproviderAddressLine1,\r\n\t\tproviderAddressLine2,\r\n\t\tproviderAddressLine3,\r\n\t\tproviderEmail,\r\n\t\tproviderAddress,\r\n\t\tproviderPhone,\r\n\t\tcustomerName,\r\n\t\tpolicyNumber,\r\n\t\tmake,\r\n\t\tmodel,\r\n\t\tregNumber,\r\n\t\tvehicleType,\r\n\t\tchassisNumber,\r\n\t\tengineNumber,\r\n\t\tmaximumPayable,\r\n\t\tauthCreated,\r\n\t\tauthDeadline,\r\n\t\tshowGCT,\r\n\t}) {\r\n\t\tconst endpoint = `/claims/authorization`;\r\n\t\tconst payload = {\r\n\t\t\tdateOfLoss,\r\n\t\t\tproviderName,\r\n\t\t\tproviderAddressLine1,\r\n\t\t\tproviderAddressLine2,\r\n\t\t\tproviderAddressLine3,\r\n\t\t\tproviderEmail,\r\n\t\t\tproviderAddress,\r\n\t\t\tproviderPhone,\r\n\t\t\tcustomerName,\r\n\t\t\tinsuredEmail,\r\n\t\t\tinsuredPhone,\r\n\t\t\tinsuredPhone2,\r\n\t\t\tpolicyNumber,\r\n\t\t\tmake,\r\n\t\t\tmodel,\r\n\t\t\tregNumber,\r\n\t\t\tvehicleType,\r\n\t\t\tchassisNumber,\r\n\t\t\tengineNumber,\r\n\t\t\tmaximumPayable,\r\n\t\t\tauthCreated,\r\n\t\t\tauthDeadline,\r\n\t\t\tshowGCT\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst statementResponse = await checkExpToken({endpoint, payload, \r\n\t\t\t\ttimeout: 20000,\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tif (!statementResponse) throw new Error(\"No data found\");\r\n\t\t\treturn { result: statementResponse, success: true };\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async sendBrokerEmail({\r\n\t\tdate_of_loss,\r\n\t\tbroker_name,\r\n\t\tinsured,\r\n\t\ttype_of_claim,\r\n\t\tvehicle_make,\r\n\t\tvehicle_model,\r\n\t\tplate_number,\r\n\t\tclaim_number,\r\n\t\tfiles,\r\n\t}) {\r\n\t\tlet endpoint = \"/email/claim/broker\";\r\n\t\tlet payload = {\r\n\t\t\tdate_of_loss,\r\n\t\t\tbroker_name,\r\n\t\t\tinsured,\r\n\t\t\ttype_of_claim,\r\n\t\t\tvehicle_make,\r\n\t\t\tvehicle_model,\r\n\t\t\tplate_number,\r\n\t\t\tclaim_number,\r\n\t\t\tfiles,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst brokerResponse = await checkExpToken({endpoint, payload, \r\n\t\t\t\ttimeout: 20000,\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn brokerResponse;\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async getThirdPartyProviderLetters({\r\n\t\tdateOfLoss,\r\n\t\tproviderName,\r\n\t\tproviderAddressLine1,\r\n\t\tproviderAddressLine2,\r\n\t\tproviderAddressLine3,\r\n\t\tproviderEmail,\r\n\t\tproviderPhone,\r\n\t\tcustomerName,\r\n\t\tvehicleDriver,\r\n\t\tpolicyNumber,\r\n\t\tregNumber,\r\n\t\tvehicleType,\r\n\t\tchassisNumber,\r\n\t\tengineNumber,\r\n\t\tauthCreated,\r\n\t\tTpCustomerName,\r\n\t\tTpDriverName,\r\n\t\tTpRegNumber,\r\n\t\tTpVehicleMake,\r\n\t\tTpVehicleModel,\r\n\t\tTpVehicleYear,\r\n\t}) {\r\n\t\tlet endpoint = \"/claims/third-party\";\r\n\t\tlet payload = {\r\n\t\t\tdateOfLoss,\r\n\t\t\tproviderName,\r\n\t\t\tproviderAddressLine1,\r\n\t\t\tproviderAddressLine2,\r\n\t\t\tproviderAddressLine3,\r\n\t\t\tproviderEmail,\r\n\t\t\tproviderPhone,\r\n\t\t\tcustomerName,\r\n\t\t\tvehicleDriver,\r\n\t\t\tpolicyNumber,\r\n\t\t\tregNumber,\r\n\t\t\tvehicleType,\r\n\t\t\tchassisNumber,\r\n\t\t\tengineNumber,\r\n\t\t\tauthCreated,\r\n\t\t\tTpCustomerName,\r\n\t\t\tTpDriverName,\r\n\t\t\tTpRegNumber,\r\n\t\t\tTpVehicleMake,\r\n\t\t\tTpVehicleModel,\r\n\t\t\tTpVehicleYear,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst statementResponse = await checkExpToken({endpoint, payload, \r\n\t\t\t\ttimeout: 20000,\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\treturn statementResponse;\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async getComprehensiveServiceProviderLetters({\r\n\t\tdateOfLoss,\r\n\t\tproviderName,\r\n\t\tproviderAddressLine1,\r\n\t\tproviderAddressLine2,\r\n\t\tproviderAddressLine3,\r\n\t\tproviderEmail,\r\n\t\tproviderPhone,\r\n\t\tcustomerName,\r\n\t\tvehicleDriver,\r\n\t\tpolicyNumber,\r\n\t\tregNumber,\r\n\t\tvehicleType,\r\n\t\tchassisNumber,\r\n\t\tengineNumber,\r\n\t\tauthCreated,\r\n\t\tTpCustomerName,\r\n\t\tTpDriverName,\r\n\t\tTpRegNumber,\r\n\t\tTpVehicleMake,\r\n\t\tTpVehicleModel,\r\n\t\tTpVehicleYear,\r\n\t}) {\r\n\t\tlet endpoint = \"/claims/comprehensive\";\r\n\t\tlet payload = {\r\n\t\t\tdateOfLoss,\r\n\t\t\tproviderName,\r\n\t\t\tproviderAddressLine1,\r\n\t\t\tproviderAddressLine2,\r\n\t\t\tproviderAddressLine3,\r\n\t\t\tproviderEmail,\r\n\t\t\tproviderPhone,\r\n\t\t\tcustomerName,\r\n\t\t\tvehicleDriver,\r\n\t\t\tpolicyNumber,\r\n\t\t\tregNumber,\r\n\t\t\tvehicleType,\r\n\t\t\tchassisNumber,\r\n\t\t\tengineNumber,\r\n\t\t\tauthCreated,\r\n\t\t\tTpCustomerName,\r\n\t\t\tTpDriverName,\r\n\t\t\tTpRegNumber,\r\n\t\t\tTpVehicleMake,\r\n\t\t\tTpVehicleModel,\r\n\t\t\tTpVehicleYear,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst statementResponse = await checkExpToken({endpoint, payload, \r\n\t\t\t\ttimeout: 20000,\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tif (!statementResponse.success) throw new Error(\"No data found\");\r\n\t\t\treturn statementResponse;\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\r\n\tstatic async addParticipant(claim_id, global_name) {\r\n\t\tconst payload = {\r\n\t\t\tclaim_id,\r\n\t\t\tglobal_name,\r\n\t\t\tlink_partc_type: \"Insured\",\r\n\t\t\tparticipant_type: \"Driver\",\r\n\t\t};\r\n\r\n\t\treturn addParticipant(payload);\r\n\t}\r\n\r\n\tstatic async addServiceProvider(claim_id, global_name) {\r\n\t\tconst payload = {\r\n\t\t\tclaim_id,\r\n\t\t\tglobal_name,\r\n\t\t\tparticipant_type: \"Repairer\",\r\n\t\t};\r\n\t\treturn addParticipant(payload);\r\n\t\t// return checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\r\n\tstatic async addParticipantType() {\r\n\t\treturn getParticipantType();\r\n\t\t// return checkBadKey({ endpoint, headers });\r\n\t}\r\n\r\n\tstatic async claimUpdate( claim_id, loss_date, loss_cause, loss_result, locus_of_event, lossDescription, status_code) {\r\n\t\t/**\r\n\t\t * Liable Party seems to be mandatory in contradiction with the api documentation\r\n\t\t * Liable Parties of note:\r\n\t\t *\r\n\t\t * Contributory\r\n\t\t * Economic\r\n\t\t * Insured\r\n\t\t * Not-Applicable\r\n\t\t * Third Party\r\n\t\t * Undecided\r\n\t\t * Withdrawn-Insured\r\n\t\t */\r\n\r\n\t\tconst payload = {\r\n\t\t\tclaim_id,\r\n\t\t\tloss_date,\r\n\t\t\tloss_cause,\r\n\t\t\tloss_result,\r\n\t\t\tlocus_of_event,\r\n\t\t\tis_authorized: true,\r\n\t\t\tliable_party: \"Not-Applicable\",\r\n\t\t\tdescription: lossDescription,\r\n\t\t\tstatus_code\r\n\t\t};\r\n\r\n\t\treturn updateClaim(payload);\r\n\r\n\t\t// return checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\r\n\tstatic async sendAcknowledgementEmail(claim_number, customer, date, email) {\r\n\t\tconst endpoint = `/email/claim/acknowledgement`;\r\n\r\n\t\tconst payload = {\r\n\t\t\tclaim_number,\r\n\t\t\tcustomer,\r\n\t\t\tdate,\r\n\t\t\temail,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst claimResponse = await checkExpToken({endpoint, payload, \r\n\t\t\t\ttimeout: 15000,\r\n\t\t\t});\r\n\t\t\tif (!claimResponse) throw new Error(\"No data found\");\r\n\t\t\treturn { result: claimResponse, success: true };\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sends an email to the claims department when the customer chooses OTHER as their windscreen claim service provider\r\n\t * @param {String} claim_number\r\n\t * @param {String} customer\r\n\t */\r\n\tstatic async lateClaim(claim_number, customer) {\r\n\t\tconst endpoint = `/email/late-claim`;\r\n\r\n\t\tconst payload = {\r\n\t\t\tclaim_number,\r\n\t\t\tcustomer,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst claimResponse = await nodeApi.post(endpoint, payload, {\r\n\t\t\t\ttimeout: 15000,\r\n\t\t\t});\r\n\t\t\tif (!claimResponse) throw new Error(\"No data found\");\r\n\t\t\treturn { result: claimResponse, success: true };\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * Sends an email to the claims department when the customer chooses OTHER as their windscreen claim service provider\r\n\t * @param {String} name\r\n\t * @param {String} email\r\n\t * @param {String} provider\r\n\t * @param {Array} files\r\n\t */\r\n\tstatic async sendServiceProviderApprovalEmail(name, email, provider, files) {\r\n\t\tconst endpoint = `/email/claim/auth`;\r\n\r\n\t\ttry {\r\n\t\t\tconst claimResponse = await checkExpToken({\r\n\t\t\t\tendpoint,\r\n\t\t\t\tpayload:{\r\n\t\t\t\t\temail,\r\n\t\t\t\t\tfiles,\r\n\t\t\t\t\tname,\r\n\t\t\t\t\tprovider,\r\n\t\t\t\t},\r\n\t\t\t\t\r\n\t\t\t\t\ttimeout: 15000,\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tif (!claimResponse) throw new Error(\"No data found\");\r\n\t\t\treturn { result: claimResponse, success: true };\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * Sends an email to the claims department when the customer chooses OTHER as their windscreen claim service provider\r\n\t * @param {Object} props\r\n\t * @param {String} props.name\r\n\t * @param {String|Number} props.claim_number\r\n\t * @param {String} props.date_of_loss\r\n\t */\r\n\tstatic async sendAlternativeServiceProviderEmail({ name, claim_number, date_of_loss }) {\r\n\t\tconst endpoint = `/email/claim/other`;\r\n\r\n\t\tconst payload = {\r\n\t\t\tname,\r\n\t\t\tclaim_number,\r\n\t\t\tdate_of_loss,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst statementResponse = await checkExpToken({endpoint, payload, \r\n\t\t\t\ttimeout: 15000,\r\n\t\t\t});\r\n\t\t\tif (!statementResponse) throw new Error(\"No data found\");\r\n\t\t\treturn { result: statementResponse, success: true };\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sends an email to the claims department when the customer reports additional damage to a vehicle for a windscreen claim\r\n\t * @param {Object} props\r\n\t * @param {String} props.name\r\n\t * @param {String|Number} props.claim_number\r\n\t */\r\n\tstatic async sendAdditionalDamageEmail({ name, claim_number }) {\r\n\t\tconst endpoint = `/email/claim/extra-damage`;\r\n\r\n\t\tconst payload = {\r\n\t\t\tname,\r\n\t\t\tclaim_number,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tconst statementResponse = await checkExpToken({endpoint, payload, \r\n\t\t\t\ttimeout: 15000,\r\n\t\t\t});\r\n\t\t\tif (!statementResponse) throw new Error(\"No data found\");\r\n\t\t\treturn { result: statementResponse, success: true };\r\n\t\t} catch (e) {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {Object} props\r\n\t * @param {String} props.token\r\n\t */\r\n\tstatic async getAllSourceTypes({ token }) {\r\n\t\tconst payload = {};\r\n\r\n\t\treturn getSourceTypes(payload);\r\n\t}\r\n\r\n\tstatic compressImage(image) {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tnew Compressor(image, {\r\n\t\t\t\tquality: 0.4,\r\n\t\t\t\tsuccess: compressedResult => {\r\n\t\t\t\t\t// compressedResult has the compressed file.\r\n\t\t\t\t\t// Use the compressed file to upload the images to your server.\r\n\t\t\t\t\tresolve(compressedResult);\r\n\t\t\t\t},\r\n\t\t\t\terror(err) {\r\n\t\t\t\t\treject(err);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tstatic async compressFile(file, blob) {\r\n\t\tlet temp = await handleCompressPDF(file, blob);\r\n\t\treturn temp;\r\n\t}\r\n\r\n\tstatic async linkRegistryFile(registry_id, fileName, fileType, fileData, description, doc_type, callback) {\r\n\t\tconst payload = {\r\n\t\t\tregistry_id,\r\n\t\t\tfile_id: \"\",\r\n\t\t\tfile_name: fileName,\r\n\t\t\tfile_type: fileType,\r\n\t\t\tfile_data: fileData?.replace(new RegExp(\"^data:.*base64,\", \"i\"), \"\"),\r\n\t\t\tdescription: description,\r\n\t\t\tdoc_type: doc_type,\r\n\t\t};\r\n\t\treturn linkFile(payload, callback);\r\n\t\t// return checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\r\n\tstatic async getAllRegistryTypes(relatingTo) {\r\n\t\tconst payload = {\r\n\t\t\tparams: {\r\n\t\t\t\trelatingTo,\r\n\t\t\t},\r\n\t\t};\r\n\t\treturn getRegistryTypes(payload);\r\n\t}\r\n\r\n\tstatic formatClaimStatus =(claimStatusList, status) =>{\r\n\t\t\r\n\t\tlet claimStatus = claimStatusList.find((item) => item.claim_status === status)?.step;\r\n\t\tlet formatedClaimStatus = claimStatus?.slice(7);\r\n\t\treturn formatedClaimStatus;\r\n\t}\r\n\r\n\tstatic sumProperty(arr, propName) {\r\n\t\tlet sum = 0;\r\n\t\tfor (let obj of arr) {\r\n\t\t\tif (obj.hasOwnProperty(propName)) {\r\n\t\t\t\tsum += obj[propName];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn sum;\r\n\t}\r\n\r\n\tstatic getClaimStatus =(claimStatusList, status) =>{\r\n\t\t\r\n\t\tlet claimStatus = claimStatusList.find((item) => item.claim_status === status);\r\n\t\t\r\n\t\treturn claimStatus;\r\n\t}\r\n\r\n\tstatic truncateText = (text, characters)=>{\r\n\t\tlet truncatedText = text.length > characters? text?.substring(0, characters) + \"...\": text;\r\n\t\treturn truncatedText;\r\n\t}\r\n\t\r\n}\r\n","import { compressPDF } from \"helpers/pdf\";\r\n\r\nexport const handleCompressPDF = async (file, blob) => {\r\n let response = null;\r\n\tlet endpoint = `/misc/compressFile`;\r\n let payload = {\r\n \"fileName\": file.name,\r\n \"base64Content\": blob.substring(28)\r\n }\r\n \r\n console.log(\"handleCompressPDF payload\", payload);\r\n\tresponse = await compressPDF({ endpoint, payload });\r\n console.log(\"handleCompressPDF response\", response);\r\n return response;\r\n};","import { createSlice, current } from \"@reduxjs/toolkit\";\r\nimport { changePolicy, fullLogout } from \"globals/misc\";\r\nconst defaultState = {\r\n\tbenefits: [],\r\n\tbenefitsTotal:0,\r\n\tselectedRisk: null,\r\n\tcart: [],\r\n};\r\n\r\nconst getIndex = ({ benefits, selectedRisk }, benefitId) => {\r\n\tlet riskIndex = benefits?.findIndex(riskBenefit => selectedRisk === riskBenefit.risk_id);\r\n\t// find benefit\r\n\tlet bIndex = benefits?.[riskIndex]?.benefits.findIndex(benefit => benefit.id === benefitId);\r\n\r\n\treturn { riskIndex, bIndex };\r\n};\r\n\r\nlet additionalBenefitSlice = createSlice({\r\n\tname: \"additionalbenefit\",\r\n\tinitialState: defaultState,\r\n\treducers: {\r\n\t\tsetActiveRiskId: (state, action) => {\r\n\t\t\tstate.selectedRisk = action.payload;\r\n\t\t},\r\n\t\t/** @param {{payload: Array}} action */\r\n\t\tsetBenefits: (state, action) => {\r\n\t\t\tstate.benefits = action.payload;\r\n\t\t},\r\n\t\tsetBenefitsTotal: (state, action) => {\r\n\t\t\tstate.benefitsTotal = action.payload;\r\n\t\t}, \r\n\t\tselectBenefitTier: (state, action) => {\r\n\t\t\tlet { riskIndex, bIndex } = getIndex(current(state), action.payload.benefitId);\r\n\t\t\tstate.benefits[riskIndex].benefits[bIndex].selectedTier = action.payload.selectedTier;\r\n\t\t},\r\n\t\tselectBenefit: (state, action) => {\r\n\t\t\tlet { riskIndex, bIndex } = getIndex(current(state), action.payload.benefitId);\r\n\r\n\t\t\tstate.benefits[riskIndex].benefits[bIndex].selected = true;\r\n\t\t},\r\n\t\tunselectBenefit: (state, action) => {\r\n\t\t\tlet { riskIndex, bIndex } = getIndex(current(state), action.payload.benefitId);\r\n\t\t\tstate.benefits[riskIndex].benefits[bIndex].selected = false;\r\n\t\t},\r\n\t\tdisableBenefit: (state, action) => {\r\n\t\t\tlet { riskIndex, bIndex } = getIndex(current(state), action.payload.benefitId);\r\n\t\t\tstate.benefits[riskIndex].benefits[bIndex].disabled = true;\r\n\t\t},\r\n\t\tenableBenefit: (state, action) => {\r\n\t\t\tlet { riskIndex, bIndex } = getIndex(current(state), action.payload.benefitId);\r\n\t\t\tstate.benefits[riskIndex].benefits[bIndex].disabled = false;\r\n\t\t},\r\n\t\taddToCart: (state, action) => {\r\n\t\t\tstate.cart.push(action.payload);\r\n\t\t},\r\n\r\n\t\tupdate: (state, action) => {\r\n\t\t\tstate.cart[action.payload.index] = { ...state.cart[action.payload.index], ...action.payload.data };\r\n\t\t},\r\n\t\t/** remove from cart by index */\r\n\t\tremoveFromCart: (state, action) => {\r\n\t\t\tstate.cart.splice(action.payload.index, 1);\r\n\t\t},\r\n\t\t/**\r\n\t\t * remove this item for this car\r\n\t\t *\r\n\t\t * @param {*} state\r\n\t\t * @param {Object} action\r\n\t\t * @param {Object} action.payload\r\n\t\t * @param {String} action.payload.risk_for\r\n\t\t * @param {String} action.payload.id\r\n\t\t */\r\n\t\tremoveItemFromCart: (state, action) => {\r\n\t\t\tlet index = state.cart.findIndex(c => c.id === action.payload.id && c.risk_for === state.selectedRisk);\r\n\t\t\tstate.cart.splice(index, 1);\r\n\t\t},\r\n\t\temptyCart: state => {\r\n\t\t\tstate.cart = [];\r\n\t\t},\r\n\t\tsetDefault: () => defaultState,\r\n\t},\r\n\textraReducers: builder => {\r\n\t\tbuilder.addCase(fullLogout, (state, action) => defaultState).addCase(changePolicy, (state, action) => defaultState);\r\n\t},\r\n});\r\n\r\nexport const getBenefitsTotal = ({ additionalbenefit: state }) => state.benefitsTotal;\r\nexport const getBenefits = ({ additionalbenefit: state }) => state.benefits;\r\nexport const getActiveRiskIdForBenefit = ({ additionalbenefit: state }) => state.selectedRisk;\r\nexport const getCart = ({ additionalbenefit: state }) => state.cart;\r\n\r\nexport const {\r\n\tsetBenefits,\r\n\tsetBenefitsTotal,\r\n\tselectBenefitTier,\r\n\tselectBenefit,\r\n\tsetActiveRiskId,\r\n\tunselectBenefit,\r\n\tdisableBenefit,\r\n\tenableBenefit,\r\n\tsetDefault,\r\n\temptyCart,\r\n\tremoveFromCart,\r\n\tremoveItemFromCart,\r\n\tupdate,\r\n\taddToCart,\r\n} = additionalBenefitSlice.actions;\r\nexport default additionalBenefitSlice.reducer;\r\n","import React from \"react\";\r\nimport \"./CustomCheckbox.scss\";\r\n\r\n/**\r\n *\r\n * @param {Object} props\r\n * @param {Boolean}props.checked\r\n * @param {()=>void=} props.onSelected\r\n * @param {()=>void=} props.onClick\r\n * @param {Boolean=} props.disabled\r\n * @param {String=} props.className\r\n \r\n * @returns\r\n */\r\nexport default function CustomCheckbox({ checked, onClick, onSelected, disabled = false, className = \"\" }) {\r\n\treturn (\r\n\t\t\r\n\t);\r\n}\r\n","import { checkKey } from \"helpers/auth\";\r\n\r\nexport const getCertificate = async ( policy_id, risk_id) => {\r\n\tlet cert = {};\r\n\tlet payload = {\r\n\t\tpolicy_id: policy_id,\r\n\t\trisk_id: risk_id,\r\n\t};\r\n\r\n\tlet endpoint = `/getCertificate`;\r\n\r\n\tcert = await checkKey({ endpoint, payload });\r\n\r\n\treturn cert;\r\n};\r\n\r\nexport const getCoverNote = async ( policy_id, risk_id) => {\r\n\tlet data = {};\r\n\r\n\tlet payload = {\r\n\t\tpolicy_id: policy_id,\r\n\t\trisk_id: risk_id,\r\n\t};\r\n\r\n\tlet endpoint = `/getCoverNote`;\r\n\tdata = await checkKey({ endpoint, payload });\r\n\treturn data;\r\n};\r\n\r\nexport const createCertificate = async ( policy_id, risk_id) => {\r\n\tlet data = {};\r\n\tconst endpoint = `/createCertificate`;\r\n\tconst payload = {\r\n\t\t//\r\n\t\tpolicy_id,\r\n\t\trisk_id,\r\n\t};\r\n\t//const reqType = \"get\";\r\n\r\n\tdata = await checkKey({ endpoint, payload });\r\n\r\n\treturn data;\r\n};\r\n","const RENEWAL = \"renewal\",\r\n\t CLAIMS = \"claims\",\r\n\t PAY_BALANCE = \"paybalance\",\r\n\t DOCUMENT_SUBMIT = \"document-submit\",\r\n\t POLICY_MANAGER = \"update-your-policy\",\r\n\t QUICK_PAY = \"quick-pay\",\r\n\t TRACK_A_CLAIM = \"track-my-claim\";\r\nexport { RENEWAL, CLAIMS, PAY_BALANCE, DOCUMENT_SUBMIT, POLICY_MANAGER, QUICK_PAY, TRACK_A_CLAIM };\r\n","import { DUE_NOW, DUE_SOON, PAID, PAST_DUE } from \"components/PayBalanceProcess/PaymentSchedule/constants\";\r\nimport { differenceInDays, parse } from \"date-fns\";\r\nimport { arrayOfAcceptedPages, RIGHT } from \"globals/globalConstants\";\r\nexport function truncate(str, length = 100) {\r\n\tif (str) {\r\n\t\treturn `${str?.substr(0, length)}${str?.length > length ? \"\" : \"\"}`;\r\n\t}\r\n\r\n\treturn str;\r\n}\r\nexport const greaterThan40 = (value, sum_insured = 0) => {\r\n\treturn parseFloat(value) < sum_insured - sum_insured * 0.4;\r\n};\r\nexport const lessThan5 = (value, sum_insured = 0) => {\r\n\treturn parseFloat(value) > sum_insured + sum_insured * 0.05;\r\n};\r\n\r\nexport function getStatus({ effective_date, transaction_id }) {\r\n\tlet status = \"-\";\r\n\tlet style = {};\r\n\r\n\tif (transaction_id) {\r\n\t\tstatus = PAID;\r\n\t\tstyle = { color: \"#84bd00\" };\r\n\t} else {\r\n\t\tconst now = new Date();\r\n\t\tlet due = parse(effective_date, \"MM/dd/yyyy\", now);\r\n\t\tlet diff = differenceInDays(now, due);\r\n\r\n\t\t// is more than 1 day late?\r\n\t\tif (diff > 5) {\r\n\t\t\tstatus = PAST_DUE;\r\n\t\t\tstyle = \"past-due\";\r\n\t\t}\r\n\t\t// is less than 3 days early\r\n\t\telse if (diff > -3) {\r\n\t\t\tstatus = DUE_NOW;\r\n\t\t\tstyle = \"due-now\";\r\n\t\t}\r\n\t\t// due within 3 - 7 days\r\n\t\telse if (diff >= -7) {\r\n\t\t\tstatus = DUE_SOON;\r\n\t\t\tstyle = \"due-soon\";\r\n\t\t}\r\n\t\t// otherwise ignore\r\n\t}\r\n\treturn {\r\n\t\tstatus,\r\n\t\tstyle,\r\n\t};\r\n}\r\n//Validate Email entered\r\nexport const validateEmail = email => {\r\n\treturn email !== \"\" && !/^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$/.test(email);\r\n};\r\n\r\n/**\r\n * ?This function is a utility function to control the scroll\r\n * ? of a container horizontally given the direction and scroll value\r\n * @param {Object} scrollRef\r\n * @param {String} dir\r\n */\r\nexport const scrollFunc = (scrollRef, dir) => {\r\n\tif (dir === RIGHT) {\r\n\t\tscrollRef.current.scrollTo({\r\n\t\t\tleft: scrollRef?.current?.scrollLeft + scrollRef?.current?.clientWidth,\r\n\t\t\tbehavior: \"smooth\",\r\n\t\t});\r\n\t} else {\r\n\t\tscrollRef.current.scrollTo({\r\n\t\t\tleft: scrollRef?.current?.scrollLeft - scrollRef?.current?.clientWidth,\r\n\t\t\tbehavior: \"smooth\",\r\n\t\t});\r\n\t}\r\n};\r\n\r\n// Boolean to check if scroll is fully scrolled to the right\r\nexport const isScrollRightAtLimit = scrollRef => {\r\n\treturn scrollRef?.current?.scrollLeft === scrollRef?.current?.scrollWidth - scrollRef?.current?.clientWidth;\r\n};\r\n\r\n// Boolean to check if scroll is fully scrolled to the left\r\nexport const isScrollLeftAtLimit = scrollRef => {\r\n\treturn scrollRef?.current?.scrollLeft === 0;\r\n};\r\n\r\nexport const formatter = new Intl.NumberFormat(\"en-US\", {\r\n\tstyle: \"currency\",\r\n\tcurrency: \"USD\",\r\n\tminimumFractionDigits: 2,\r\n});\r\n\r\n//Function is used to determine the name to display based on whether the user is a company or individual\r\nexport const determineUserTypeForNameDisplay = user => {\r\n\treturn user?.is_a_company ? user?.company_name : `${user.first_name} ${user.last_name}`;\r\n};\r\n\r\nexport const bannerShouldPersist = page => {\r\n\t//Checking if the page matchs any of the following url\r\n\treturn arrayOfAcceptedPages.includes(page);\r\n};\r\n\r\n/**\r\n * Wraps fileReader in a promise for more async manipulation\r\n * @param {Blob} inputFile - If it's a string, it resolves with that value instead\r\n */\r\nexport const readUploadedFileAsText = inputFile => {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tif (typeof inputFile === typeof \"\") resolve(inputFile);\r\n\t\tconst temporaryFileReader = new FileReader();\r\n\r\n\t\ttemporaryFileReader.onerror = () => {\r\n\t\t\ttemporaryFileReader.abort();\r\n\t\t\treject(new DOMException(\"Problem parsing input file.\"));\r\n\t\t};\r\n\r\n\t\ttemporaryFileReader.onloadend = () => {\r\n\t\t\tresolve(temporaryFileReader.result.toString().split(\",\")[1]);\r\n\t\t};\r\n\r\n\t\ttemporaryFileReader.readAsDataURL(inputFile);\r\n\t});\r\n};\r\n","const branchInfo = {\r\n\tuuid: \"\",\r\n\tbranch_name: \"AGIC Online\",\r\n\treceipt_branch_name: \"AGIC Online\",\r\n\tbranch_id: \"AGIO\",\r\n\tbranch_email: process.env.REACT_APP_BRANCH_EMAIL,\r\n\ttablet_id: \"1\",\r\n\ttablet_type: \"Customer Tablet\",\r\n};\r\n\r\nexport default branchInfo;\r\n","export default __webpack_public_path__ + \"static/media/empty_selection.6383ef3d.svg\";","export default __webpack_public_path__ + \"static/media/disabled-cart_checker.b080fdaa.svg\";","import CustomCheckbox from \"components/CustomCheckbox\";\r\nimport { differenceInDays, differenceInHours, differenceInMinutes, format, isWithinInterval, parse, subDays } from \"date-fns\";\r\nimport { PolicyHelper } from \"helpers\";\r\nimport { formatMoney } from \"helpers/policy\";\r\nimport { PAID, PAST_DUE, DUE_NOW, DUE_SOON } from \"./constants\";\r\nimport { useScreenType } from \"globals/screenTypeHook\";\r\nimport checker from \"assets/img/additionalbenefits_icons/cart_checker2.svg\";\r\nimport disabledCartChecker from \"assets/img/additionalbenefits_icons/disabled-cart_checker.svg\";\r\nimport emptySelection from \"assets/img/additionalbenefits_icons/empty_selection.svg\";\r\n\r\n/** Component to specify the status of the modal */\r\nexport function getStatus(flow, { effective_date, transaction_id }) {\r\n\tlet status = \"-\";\r\n\tlet style = {}; \r\n\r\n\tif (transaction_id) {\r\n\t\tstatus = PAID;\r\n\t\tstyle = { color: \"#12ff00\" };\r\n\t} else {\r\n\t\tconst now = new Date();\r\n\t\tlet due = parse(effective_date, \"MM/dd/yyyy\", now);\r\n\t\tlet diff = flow === \"update your policy\" ? differenceInMinutes(now, due) : differenceInDays(now, due);\r\n\t\t\r\n\t\tif(flow === \"update your policy\"){\r\n\t\t\tif (diff > 1) {\r\n\t\t\t\tstatus = PAST_DUE;\r\n\t\t\t\tstyle = \"past-due\";\r\n\t\t\t} \r\n\t\t} else {\r\n\t\t\t// is more than 1 day late?\r\n\t\t\tif (diff > 5) {\r\n\t\t\t\tstatus = PAST_DUE;\r\n\t\t\t\tstyle = \"past-due\"; \r\n\t\t\t}\r\n\t\t\t// is less than 3 days early\r\n\t\t\telse if (diff > -3) {\r\n\t\t\t\tstatus = DUE_NOW;\r\n\t\t\t\tstyle = \"due-now\";\r\n\t\t\t}\r\n\t\t\t// due within 3 - 7 days\r\n\t\t\telse if (diff >= -7) {\r\n\t\t\t\tstatus = DUE_SOON;\r\n\t\t\t\tstyle = \"due-soon\";\r\n\t\t\t}\r\n\t\t\t// otherwise ignore\r\n\t\t}\r\n\t\t\r\n\t}\r\n\treturn { \r\n\t\tstatus,\r\n\t\tstyle,\r\n\t};\r\n}\r\n\r\n/** Calculate the total based on `selected ` terms accounting for late fees */\r\nexport function calcExtensionTotal(terms, tax = 1) {\r\n\treturn terms?.reduce((total, term) => {\r\n\t\treturn (\r\n\t\t\ttotal +\r\n\t\t\t(term?.status !== PAID && term?.selected === true ? term?.payment_term_premium_with_tax + term?.late_fee : 0)\r\n\t\t);\r\n\t}, 0);\r\n}\r\n\r\nexport function calcExtensionTotalAlt(terms, tax = 1) {\r\n\treturn terms?.reduce((total, term) => {\r\n\t\treturn total + (term?.status !== PAID ? term?.payment_term_premium_with_tax + term?.late_fee : 0);\r\n\t}, 0);\r\n}\r\n\r\n/**\r\n * calculates the proper payent plans normalized for AGIC\r\n *\r\n * @returns {Array} payment_terms\r\n * @param {Object} paymentPlan - the plan on policy\r\n * @param {Array} risks\r\n * @param {Number} taxPercent -\r\n */\r\nexport function recalculatePaymentPlans(flow, paymentPlan, risks, taxPercent, policy_start) {\r\n\tconst is_older =\r\n\t\tnew Date(process.env.REACT_APP_MODE === \"development\" ? \"11/14/2021\" : \"12/21/2021\") > new Date(policy_start);\r\n\tconst fullRiderPremium = PolicyHelper.removeAllRiderPremiums(risks);\r\n\t/* if policy_start date is older then they will be charged in part else nothing*/\r\n\tconst totalDeductions = is_older ? fullRiderPremium / paymentPlan?.payment_terms.length : 0;\r\n\tconst totalDeductionsWithTax = totalDeductions * taxPercent;\r\n\r\n\treturn paymentPlan?.payment_terms.map(term => {\r\n\t\tconst { status, style } = getStatus(flow, term);\r\n\t\tconst lateFee = status === PAST_DUE ? term.penalty_fee_amount * taxPercent : 0; \r\n\t\treturn {\r\n\t\t\t...term,\r\n\t\t\tstatus,\r\n\t\t\tstyle,\r\n\t\t\tselected: [PAID, PAST_DUE, DUE_NOW].includes(status),\r\n\t\t\tpayment_term_premium_with_tax: term.payment_term_premium * taxPercent - totalDeductionsWithTax,\r\n\t\t\tpayment_term_premium: term.payment_term_premium - totalDeductions,\r\n\t\t\tlate_fee: lateFee,\r\n\t\t};\r\n\t});\r\n}\r\n\r\nexport const checkCertPeriod = (validCert, policyStart, policyEnd, certEnd) => {\r\n\tif (validCert) {\r\n\t\tlet start = parse(policyStart, \"MM/dd/yyyy HH:mm:ss\", new Date());\r\n\t\tlet end = parse(policyEnd, \"MM/dd/yyyy HH:mm:ss\", new Date());\r\n\t\tcertEnd = parse(certEnd, \"MM/dd/yyyy HH:mm:ss\", new Date());\r\n\r\n\t\treturn isWithinInterval(certEnd, { start: start, end: end });\r\n\t}\r\n\r\n\treturn false;\r\n};\r\n\r\nexport const checkIfExtendable = ( missingDocuments) => {\r\n\t// const { risks } = policy;\r\n\t// let certExpiry = risks[0].veh_cert_expiry_date;\r\n\t// let createdCert = certExpiry ? true : false;\r\n\t// const validCertPeriod = checkCertPeriod(createdCert, policy.start_date, policy.end_date, certExpiry); \r\n\r\n\treturn missingDocuments?.[0]?.documents?.length === undefined;\r\n};\r\n\r\n/**\r\n * 1. Sends a payment agreement note if the user select any PART payment\r\n * 2. Stores the necessary data in redux to prefill certain fields on payments\r\n * 3. Navigates to payment plan breakdown page for PART payments\r\n */\r\n\r\nexport const toggleSelection = (index, status, localPlanTerms) => {\r\n\tif (status === PAST_DUE || status === PAID) {\r\n\t\t// not able to deselect\r\n\t\treturn null;\r\n\t} else {\r\n\t\tlet temp = [...localPlanTerms];\r\n\t\ttemp[index].selected = !temp[index].selected;\r\n\t\t// recursively select all other plans beneath to true\r\n\t\tif (temp[index].selected === true) {\r\n\t\t\tfor (let a = index - 1; a > 0; a--) {\r\n\t\t\t\tif (temp[a].status === PAID) break;\r\n\t\t\t\ttemp[a].selected = true;\r\n\t\t\t}\r\n\t\t} else if (temp[index].selected === false) {\r\n\t\t\t// all policies above should be set to false\r\n\t\t\tfor (let a = index + 1; a < temp.length; a++) {\r\n\t\t\t\ttemp[a].selected = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn temp;\r\n\t}\r\n};\r\n/**\r\n *\r\n * @param {Array} localPlanTerms\r\n * @param {Object} policy\r\n * @param {(a,b,c)=>void} onToggle\r\n */\r\nexport function planTermsMapping(localPlanTerms, policy, onToggle) {\r\n \r\n\treturn localPlanTerms?.map((term, index) => {\r\n\t\tconst paid = term?.transaction_id ? true : false;\r\n\t\tconst lastTerm = index + 1 === policy?.paymentPlan?.payment_terms?.length;\r\n\t\tconst { isMobile, isTablet, isDesktop, isLargeDesktop} = useScreenType();\r\n\t\t//let state = status(term)\r\n\t\t//const currrentDue = false; // TODO find attribut to identify these\r\n\t\t//const selected = paid || [DUE_NOW, PAST_DUE].includes(term.status);\r\n\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t{\r\n\t\t\t\tisTablet || isDesktop || isLargeDesktop ? \r\n\t\t\t\t\t

{index + 1}

\r\n\t\t\t\t\t

{format(subDays(parse(term.effective_date, \"MM/dd/yyyy\", new Date()), 1), \"d-MMM-yyyy\")?.toUpperCase()}

\r\n\r\n\t\t\t\t\t

{ `JMD ${formatMoney(term.payment_term_premium_with_tax + (term.late_fee || 0))}`}

\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{term.status}\r\n\t\t\t\t\t

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t null : () => onToggle(index, term.status, localPlanTerms)}\r\n\t\t\t\t\t\t\tdisabled={paid}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
\r\n\t\t\t\t :
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t}\r\n\t\t\t \r\n\t\t);\r\n\t});\r\n}\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { fullLogout } from \"globals/misc\";\r\n\r\nconst defaultState = {\r\n\tnotification: {\r\n\t\ttype: \"\",\r\n\t\tmessage: \"\",\r\n\t\tvisible: false,\r\n\t},\r\n\tloading: {\r\n\t\tvisible: false,\r\n\t\tmessage: \"\",\r\n\t},\r\n};\r\n\r\nlet overlaySlice = createSlice({\r\n\tname: \"overlay\",\r\n\tinitialState: defaultState,\r\n\treducers: {\r\n\t\t/** @param {{payload: Boolean}} action */\r\n\t\tsetOverlays: (state, action) => {\r\n\t\t\tstate.loading.visible = action.payload;\r\n\t\t\tstate.notification.visible = action.payload;\r\n\t\t},\r\n\r\n\t\t/** @param {{payload: { message: String, type: String}}} action */\r\n\t\tsetNotification: (state, action) => {\r\n\t\t\tstate.notification.visible = true;\r\n\t\t\tstate.notification.message = action.payload.message;\r\n\t\t\tstate.notification.type = action.payload.type;\r\n\t\t},\r\n\r\n\t\t/** @param {{payload: Boolean}} action */\r\n\t\tsetLoading: (state, action) => {\r\n\t\t\tstate.loading.visible = action.payload;\r\n\t\t\tif (!action.payload) state.loading.message = \"\";\r\n\t\t},\r\n\r\n\t\t/** @param {{payload: String}} action */\r\n\t\tsetLoadingMessage: (state, action) => {\r\n\t\t\tstate.loading.message = action.payload;\r\n\t\t},\r\n\r\n\t\t/** @param {{payload: Boolean}} action */\r\n\t\thideNotification: (state, action) => {\r\n\t\t\tstate.notification.visible = action.payload;\r\n\t\t},\r\n\r\n\t\tresetOverlays: () => defaultState,\r\n\t},\r\n\textraReducers: builder => {\r\n\t\tbuilder.addCase(fullLogout, (state, action) => defaultState);\r\n\t},\r\n});\r\n\r\n/** @param {{overlay: defaultState}} state */\r\nexport const isLoaderVisible = ({ overlay: state }) => state.loading.visible;\r\n\r\n/** @param {{overlay: defaultState}} state */\r\nexport const isNotificationVisible = ({ overlay: state }) => state.notification.visible;\r\n\r\n/** @param {{overlay: defaultState}} state */\r\nexport const getLoaderMessage = ({ overlay: state }) => state.loading.message;\r\n\r\nexport const { setOverlays, setNotification, setLoading, resetOverlays, setLoadingMessage, hideNotification } =\r\n\toverlaySlice.actions;\r\n\r\nexport default overlaySlice.reducer;\r\n","export default __webpack_public_path__ + \"static/media/info.ad96d4f1.webp\";","import { nodeApi } from \"api/Middleware\";\r\n\r\nasync function getServerTime() {\r\n\t// const axios = require(\"axios\").default;\r\n\tconst response = await nodeApi.post(`/time/get`,\r\n\t\t{},\r\n\t\t{\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t},\r\n\t\t}\r\n\t);\r\n\r\n\treturn response.data;\r\n}\r\n\r\nexport { getServerTime };\r\n","import { TRANSWORDINGS } from \"pages/PolicyManager/constants\";\r\nimport { PolicyNetworkLayer } from \"helpers\";\r\n\r\nimport { APPLICABLE_RIDERS, getAdditionalBenefits } from \"helpers/policy\";\r\nimport { format } from \"date-fns\";\r\n\r\nexport default async function changeMarketValue(\r\n\tpolicy,\r\n\trisk,\r\n\tmarketValue,\r\n\tpremiumChange,\r\n\tpolicyPaymentPlans,\r\n\tonly_calculate_premium\r\n) {\r\n\tif (marketValue === risk.sum_insured) return;\r\n\r\n\tconst startDate = getStartDate(policy);\r\n\r\n\tlet endDate = getEndDate(policy, policyPaymentPlans);\r\n\r\n\tconst action = marketValue > risk.sum_insured ? \"risk_increase_sum_insured\" : \"risk_decrease_sum_insured\";\r\n\r\n\tlet value = getTransWording(action, premiumChange, marketValue, risk);\r\n\r\n\tlet _policy = { ...policy };\r\n\tlet _risks = [..._policy.risks];\r\n\r\n\t//update sum_insured for risk\r\n\t_risks = _risks.map(_risk => {\r\n\t\tlet tempRisk = { ..._risk };\r\n\t\tif (_risk.risk_id === risk.risk_id) {\r\n\t\t\ttempRisk.sum_insured = marketValue;\r\n\t\t}\r\n\t\treturn tempRisk;\r\n\t});\r\n\t//update policy with updated risks\r\n\t_policy = {\r\n\t\t..._policy,\r\n\t\trisks: _risks,\r\n\t};\r\n\r\n\tlet batch_actions = [];\r\n\r\n\t//update risk extensions and riders\r\n\t_policy = await updateExtensions(_policy, risk);\r\n\tlet _batch_actions = await updateBatchActions(_policy, policy, batch_actions);\r\n\r\n\t_batch_actions.push({\r\n\t\taction: action,\r\n\t\tparameters: {\r\n\t\t\trisk_id: risk.risk_id,\r\n\t\t\tchassis_number: risk.chassis_number,\r\n\t\t\trisk_item_type: \"Vehicle\",\r\n\t\t\tsum_insured: marketValue,\r\n\t\t},\r\n\t});\r\n\r\n\t_risks = [..._policy.risks];\r\n\r\n\tconsole.log(\"risks\", _risks);\r\n\r\n\tconst transaction_premium = only_calculate_premium ? 0 : value.includes(\"refund\") ? 0 : premiumChange;\r\n\r\n\tconst changesumInsuredArgumentsObject = {\r\n\t\tpolicy: _policy,\r\n\t\tstartDate: startDate,\r\n\t\tendDate: endDate,\r\n\t\ttrans_wording: value,\r\n\t\trisks: _risks,\r\n\t\tbatch_actions: _batch_actions,\r\n\t\tonly_calculate_premium: only_calculate_premium,\r\n\t\ttransaction_premium,\r\n\t};\r\n\tconsole.log(changesumInsuredArgumentsObject);\r\n\r\n\tlet result;\r\n\tresult = await PolicyNetworkLayer.batchPolicyModification({ ...changesumInsuredArgumentsObject });\r\n\r\n\treturn result;\r\n}\r\n\r\nexport function getTransWording(action, premiumChange, marketValue, risk) {\r\n\tlet value;\r\n\r\n\tif (premiumChange > 0 && action === \"risk_increase_sum_insured\") {\r\n\t\tvalue = TRANSWORDINGS.IncreasedAdditional;\r\n\t} else if (premiumChange > 0 && action === \"risk_decrease_sum_insured\") {\r\n\t\tvalue = TRANSWORDINGS.DecreasedAdditional;\r\n\t} else if (premiumChange <= 0 && action === \"risk_increase_sum_insured\") {\r\n\t\tvalue = TRANSWORDINGS.IncreasedRefund;\r\n\t} else if (premiumChange <= 0 && action === \"risk_decrease_sum_insured\") {\r\n\t\tvalue = TRANSWORDINGS.DecreasedRefund;\r\n\t}\r\n\treturn value;\r\n}\r\nexport function getEndDate(policy, policyPaymentPlans) {\r\n\tlet endDate = policy.end_date;\r\n\r\n\tif (policyPaymentPlans?.payment_terms && Object.entries(policyPaymentPlans?.payment_terms).length > 0)\r\n\t\tendDate = policyPaymentPlans.payment_terms.findLast(term => term.transaction_id).expiry_date;\r\n\r\n\treturn endDate;\r\n}\r\nexport function getStartDate(policy) {\r\n\tlet start_date;\r\n\r\n\tconst secondsInMinute = 60;\r\n\r\n\tconst minutesInHour = 60;\r\n\r\n\tconst hoursInDay = 24;\r\n\r\n\tconst timeDiff =\r\n\t\t(new Date().getTime() - new Date(policy.start_date).getTime()) /\r\n\t\t(1000 * secondsInMinute * minutesInHour * hoursInDay);\r\n\r\n\tconst maxPolicyDaysElapsedFromInception = 7;\r\n\r\n\tconst today = format(new Date(), \"MM/dd/yyyy H:mm:ss\");\r\n\r\n\tstart_date = timeDiff > maxPolicyDaysElapsedFromInception ? today : policy.start_date;\r\n\r\n\treturn start_date;\r\n}\r\n\r\nexport async function updateBatchActions(_policy, policy, batch_actions) {\r\n\tlet old_extensions = [...policy.extensions.filter(x => x.type === \"\").map(x => x.extension_code)];\r\n\tlet new_extensions = [..._policy.extensions.map(x => x.extension_code)];\r\n\tlet _batch_actions = [...batch_actions];\r\n\r\n\tif (JSON.stringify(old_extensions) !== JSON.stringify(new_extensions)) {\r\n\t\tlet removed_extensions = await removeExtensions(new_extensions, old_extensions);\r\n\t\tremoved_extensions && _batch_actions.push(removed_extensions);\r\n\t\tlet added_extensions = await addExtensions(new_extensions, old_extensions);\r\n\t\tadded_extensions && _batch_actions.push(added_extensions);\r\n\t}\r\n\r\n\treturn _batch_actions;\r\n}\r\n\r\nexport async function addExtensions(new_extensions, old_extensions) {\r\n\tlet added_extensions = new_extensions.filter(extension => !old_extensions.includes(extension));\r\n\tlet _extensions = [];\r\n\tlet action;\r\n\r\n\tif (added_extensions.length !== 0) {\r\n\t\tfor (let i = 0; i < added_extensions.length; i++) {\r\n\t\t\tlet _extension = {\r\n\t\t\t\textension_code: added_extensions[i],\r\n\t\t\t};\r\n\t\t\t_extensions.push(_extension);\r\n\t\t}\r\n\t\tconsole.log(_extensions);\r\n\r\n\t\tlet updatedAction = {\r\n\t\t\taction: \"add_extensions\",\r\n\t\t\tparameters: {\r\n\t\t\t\textensions: _extensions,\r\n\t\t\t},\r\n\t\t};\r\n\t\taction = { ...updatedAction };\r\n\r\n\t\tconsole.log(updatedAction);\r\n\t}\r\n\treturn action;\r\n}\r\n\r\nexport async function removeExtensions(new_extensions, old_extensions) {\r\n\tlet removed_extensions = old_extensions.filter(extension => !new_extensions.includes(extension));\r\n\r\n\tconsole.log(removed_extensions);\r\n\tlet _extensions = [];\r\n\tlet action;\r\n\r\n\tif (removed_extensions.length !== 0) {\r\n\t\tfor (let i = 0; i < removed_extensions.length; i++) {\r\n\t\t\t_extensions.push(removed_extensions[i]);\r\n\t\t}\r\n\t\tconsole.log(_extensions);\r\n\r\n\t\tlet updatedAction = {\r\n\t\t\taction: \"remove_extensions\",\r\n\t\t\tparameters: {\r\n\t\t\t\textension_codes: _extensions,\r\n\t\t\t},\r\n\t\t};\r\n\t\taction = { ...updatedAction };\r\n\t\tconsole.log(action);\r\n\t}\r\n\treturn action;\r\n}\r\n\r\nexport async function updateExtensions(_policy, _risk) {\r\n\tconst currency = \"JA\";\r\n\r\n\tlet addBenefits = await getAdditionalBenefits(_policy);\r\n\tlet exts = [],\r\n\t\ttiers = [],\r\n\t\trates = [];\r\n\tlet manual_rates = _policy?.risks?.find(risk => _risk.risk_id === risk.risk_id)?.manual_rates;\r\n\r\n\taddBenefits.benefits.map(rBenefits => {\r\n\t\tlet { benefits } = rBenefits;\r\n\r\n\t\tbenefits.map(b =>\r\n\t\t\tb.tiers.map(ti => {\r\n\t\t\t\t// find already existing rates on policy\r\n\t\t\t\tlet found =\r\n\t\t\t\t\tmanual_rates.findIndex(rate => {\r\n\t\t\t\t\t\tlet benefit_tier_on_policy = rate.code === ti.code;\r\n\t\t\t\t\t\tlet benefit_alternate_on_policy =\r\n\t\t\t\t\t\t\tAPPLICABLE_RIDERS.um_rider.findIndex(t => {\r\n\t\t\t\t\t\t\t\t// this tier is UM?\r\n\t\t\t\t\t\t\t\treturn t === ti.code;\r\n\t\t\t\t\t\t\t}) > -1 &&\r\n\t\t\t\t\t\t\tAPPLICABLE_RIDERS.um_rider.findIndex(t => {\r\n\t\t\t\t\t\t\t\t// is another UM about in the rates?\r\n\t\t\t\t\t\t\t\treturn t === rate.code;\r\n\t\t\t\t\t\t\t}) > -1;\r\n\r\n\t\t\t\t\t\treturn benefit_tier_on_policy || benefit_alternate_on_policy;\r\n\t\t\t\t\t}) > -1;\r\n\t\t\t\t// when found apply rates to policy\r\n\t\t\t\tif (\r\n\t\t\t\t\t_risk.risk_id === rBenefits.risk_id &&\r\n\t\t\t\t\tfound &&\r\n\t\t\t\t\trates.findIndex(ra => ra.rate_code_description == b.rate_code_description) == -1\r\n\t\t\t\t) {\r\n\t\t\t\t\t// get Rates\r\n\t\t\t\t\trates.push({\r\n\t\t\t\t\t\tcategory: b.category,\r\n\t\t\t\t\t\tcategory_position: b.category_position,\r\n\t\t\t\t\t\tcode: ti.code,\r\n\t\t\t\t\t\tis_blocked: false,\r\n\t\t\t\t\t\tlimit: b.limit,\r\n\t\t\t\t\t\tposition: b.position,\r\n\t\t\t\t\t\tpremium: ti.premium,\r\n\t\t\t\t\t\trate_code_description: b.rate_code_description,\r\n\t\t\t\t\t\ttype: b.type,\r\n\t\t\t\t\t\tvalue: ti.premium,\r\n\t\t\t\t\t});\r\n\t\t\t\t\ttiers.push(ti);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t\ttiers.map(t =>\r\n\t\t\tt.manual_extension.map(e => {\r\n\t\t\t\tif (_risk.risk_id === rBenefits.risk_id) {\r\n\t\t\t\t\texts.push(e);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t});\r\n\tconsole.log(\"Extentions\", exts);\r\n\r\n\t// update policy with risk new extensions\r\n\t_policy = {\r\n\t\t..._policy,\r\n\t\textensions: exts,\r\n\t\trisks: _policy.risks.map(r => {\r\n\t\t\tif (_risk.risk_id === r.risk_id)\r\n\t\t\t\tr = {\r\n\t\t\t\t\t...r,\r\n\t\t\t\t\tis_manual_rating: false,\r\n\t\t\t\t\trate_handling: \"renewal_rates\",\r\n\t\t\t\t\t//manual_rates:[r.manual_rates]\r\n\t\t\t\t};\r\n\r\n\t\t\treturn r;\r\n\t\t}),\r\n\t};\r\n\tconsole.log(\"Name\", _policy);\r\n\r\n\treturn _policy;\r\n}\r\n\r\n/**\r\n * Formats the information entered into a readable address\r\n * @param {Object} address\r\n * @param {Object} [address.addressLine1]\r\n * @param {String=} address.addressLine1.buildingNumber\r\n * @param {String=} address.addressLine1.complexName\r\n * @param {String=} address.addressLine1.buildingLabel\r\n * @param {String=} address.addressLine1.unitNumber\r\n * @param {Object} [address.addressLine2]\r\n * @param {String=} address.addressLine2.streetNumber\r\n * @param {String=} address.addressLine2.streetName\r\n * @param {String=} address.addressLine2.streetType\r\n * @param {Object} [address.area]\r\n * @param {Boolean} address.area.isInternationalAddress\r\n * @param {String=} address.area.generalArea\r\n * @param {String=} address.area.internationalArea\r\n * @param {String=} address.town\r\n * @param {String=} address.parish\r\n * @param {String=} address.zipCode\r\n * @param {String=} address.country\r\n *\r\n */\r\nexport const getFormattedAddress = address => {\r\n\tconst addressLine1Empty =\r\n\t\tObject.values(address.addressLine1 || {}).filter(val => {\r\n\t\t\treturn val.length;\r\n\t\t}).length === 0;\r\n\tconst addressLine2Empty =\r\n\t\tObject.values(address.addressLine2 || {}).filter(val => {\r\n\t\t\treturn val.length;\r\n\t\t}).length === 0;\r\n\tconst areaEmpty =\r\n\t\tObject.values(address.area || {}).filter(val => {\r\n\t\t\tif (typeof val !== \"boolean\") {\r\n\t\t\t\treturn val.length;\r\n\t\t\t}\r\n\t\t}).length === 0;\r\n\tconst fullAddress = `${\r\n\t\t!addressLine1Empty\r\n\t\t\t? (address.addressLine1.buildingNumber ? \" \" + address.addressLine1.buildingNumber : \"\") +\r\n\t\t\t (address.addressLine1.complexName ? \" \" + address.addressLine1.complexName : \"\") +\r\n\t\t\t (address.addressLine1.buildingLabel ? \" \" + address.addressLine1.buildingLabel : \"\") +\r\n\t\t\t (address.addressLine1.unitNumber ? \" Unit \" + address.addressLine1.unitNumber : \"\")\r\n\t\t\t: \"\"\r\n\t}${\r\n\t\t!addressLine2Empty\r\n\t\t\t? (!addressLine1Empty ? \",\" : \"\") +\r\n\t\t\t (address.addressLine2.streetNumber ? \" \" + address.addressLine2.streetNumber : \"\") +\r\n\t\t\t (address.addressLine2.streetName ? \" \" + address.addressLine2.streetName : \"\") +\r\n\t\t\t (address.addressLine2.streetType ? \" \" + address.addressLine2.streetType : \"\")\r\n\t\t\t: \"\"\r\n\t}${\r\n\t\t!areaEmpty\r\n\t\t\t? address.area.isInternationalAddress === false\r\n\t\t\t\t? address.area.generalArea\r\n\t\t\t\t\t? (!addressLine1Empty || !addressLine2Empty ? \",\" : \"\") + \" \" + address.area.generalArea\r\n\t\t\t\t\t: \"\"\r\n\t\t\t\t: address.area.internationalArea\r\n\t\t\t\t? (!addressLine1Empty || !addressLine2Empty ? \",\" : \"\") + \" \" + address.area.internationalArea\r\n\t\t\t\t: \"\"\r\n\t\t\t: \"\"\r\n\t}${address.town ? (!addressLine1Empty || !addressLine2Empty || !areaEmpty ? \",\" : \"\") + \" \" + address.town : \"\"}${\r\n\t\taddress.parish\r\n\t\t\t? (!addressLine1Empty || !addressLine2Empty || !areaEmpty || address.town ? \",\" : \"\") + \" \" + address.parish\r\n\t\t\t: \"\"\r\n\t}${\r\n\t\taddress.zipCode\r\n\t\t\t? (!addressLine1Empty || !addressLine2Empty || !areaEmpty || address.town || address.parish ? \",\" : \"\") +\r\n\t\t\t \" \" +\r\n\t\t\t address.zipCode\r\n\t\t\t: \"\"\r\n\t}${\r\n\t\taddress.country\r\n\t\t\t? (!addressLine1Empty || !addressLine2Empty || !areaEmpty || address.town || address.parish || address.zipCode\r\n\t\t\t\t\t? \",\"\r\n\t\t\t\t\t: \"\") +\r\n\t\t\t \" \" +\r\n\t\t\t address.country\r\n\t\t\t: \"\"\r\n\t}`;\r\n\treturn fullAddress;\r\n};\r\n\r\n/**\r\n * Checks for any changes made to the policy information:\r\n * If there are any changes it sets to totalPolicyFormChanges state the total number of changes\r\n * If there are any changes to the address on the contact information tab it sets the isAddressInfoDirty to true\r\n * @param {Object} tempPolicyFormInfo\r\n * @param {Array} tempEditedAddressFields\r\n * @param {Boolean=} isEdited\r\n * @returns {{addressChanged: Boolean, totalChanges: Number}}\r\n */\r\nexport const checkForPolicyFormInfoChanges = (tempPolicyFormInfo, tempEditedAddressFields, isEdited = false) => {\r\n\t/**Keys in PolicyFormInfo not related to the user's address */\r\n\tconst nonAddressKeyNames = [\r\n\t\t\"newEmail\",\r\n\t\t\"phoneNumber\",\r\n\t\t\"otherPhoneNumber\",\r\n\t\t\"newMarketValues\",\r\n\t\t\"newRegistrationNumbers\",\r\n\t];\r\n\r\n\tlet totalChanges = 0;\r\n\tlet totalAddressChanges = 0;\r\n\tconst { proofOfAddress, proofOfAddressType, valuationFiles, ...rest } = tempPolicyFormInfo;\r\n\ttempPolicyFormInfo = { ...rest };\r\n\t/**This ForEach loop checks the registration numbers for changes based on the current policy ID\r\n\t *then checks for Contact Information Changes\r\n\t *then Home Address information changes specifically*/\r\n\tObject.keys(tempPolicyFormInfo).forEach(key => {\r\n\t\tif (\r\n\t\t\ttempPolicyFormInfo[key].length > 0 ||\r\n\t\t\t(tempEditedAddressFields.indexOf(key) !== -1 && key !== \"otherPhoneNumber\")\r\n\t\t) {\r\n\t\t\tif (nonAddressKeyNames.indexOf(key) === -1) {\r\n\t\t\t\ttotalAddressChanges += 1;\r\n\t\t\t}\r\n\t\t\ttotalChanges += 1;\r\n\t\t} else if (key === \"otherPhoneNumber\" && isEdited) {\r\n\t\t\ttotalChanges += 1;\r\n\t\t}\r\n\t});\r\n\r\n\tif (totalAddressChanges > 0) {\r\n\t\treturn { addressChanged: true, totalChanges: totalChanges };\r\n\t} else {\r\n\t\treturn { addressChanged: false, totalChanges: totalChanges };\r\n\t}\r\n};\r\n","export default __webpack_public_path__ + \"static/media/upload-scd-active.29d8ac04.svg\";","export default __webpack_public_path__ + \"static/media/upload-pe.f8cd25cc.svg\";","export default __webpack_public_path__ + \"static/media/upload_folder_icon.1b352697.svg\";","export default __webpack_public_path__ + \"static/media/upload_file_icon.2300046b.svg\";","export default __webpack_public_path__ + \"static/media/pdf_upload_icon.9c5439e7.svg\";","export default __webpack_public_path__ + \"static/media/image_upload_icon.9344ae2a.svg\";","export default __webpack_public_path__ + \"static/media/expansion_icon.c45ed5a1.svg\";","export default __webpack_public_path__ + \"static/media/dropdown_icon.fde27161.svg\";","import React, { useEffect } from \"react\";\r\nimport { getServiceProvider, setClaimRepairsEstimateFiles, setCurrentBlob, setCurrentBlobModal } from \"globals/claims\";\r\nimport { setLoading, setLoadingMessage } from \"globals/overlays\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport { BiUpload } from \"react-icons/bi\";\r\nimport { IoIosCloseCircle } from \"react-icons/io\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { getClaimsRepairsEstimateFiles } from \"globals/claims\";\r\nimport { toBase64 } from \"../../helpers/policy/index.js\";\r\nimport \"./CustomFileUpload.scss\";\r\nimport { toast } from \"react-toastify\";\r\nimport upload_scd_active from \"assets/img/claims_icons/upload-scd-active.svg\";\r\nimport upload_pe from \"assets/img/claims_icons/upload-pe.svg\";\r\nimport ClaimsNetworkLayer from \"../../helpers/claim/index.js\";\r\nimport MarketValue from \"./MarketValue/index.jsx\";\r\nimport delete_btn from \"assets/img/claims_icons/delete_icon.svg\";\r\nimport { FaEye } from \"react-icons/fa\";\r\nimport { IconContext } from 'react-icons';\r\nimport { FaExclamationTriangle, FaCheck } from 'react-icons/fa';\r\n\r\nimport uploadFolder from \"assets/img/document-upload-icons/upload_folder_icon.svg\";\r\nimport uploadFile from \"assets/img/document-upload-icons/upload_file_icon.svg\";\r\nimport trashIcon from \"assets/img/document-upload-icons/trash_icon.svg\";\r\nimport successIcon from \"assets/img/document-upload-icons/success_icon.svg\";\r\nimport pdfUploadIcon from \"assets/img/document-upload-icons/pdf_upload_icon.svg\";\r\nimport imageUploadIcon from \"assets/img/document-upload-icons/image_upload_icon.svg\";\r\nimport expansionIcon from \"assets/img/document-upload-icons/expansion_icon.svg\";\r\nimport dropdownIcon from \"assets/img/document-upload-icons/dropdown_icon.svg\";\r\nimport { useState } from \"react\";\r\nimport { object } from \"yup\";\r\nimport { truncate } from \"helpers/globalFunctions\";\r\nimport { useScreenType } from \"globals/screenTypeHook.jsx\";\r\n\r\nexport const MAX_SIZE = 4194304;\r\n\r\n//Accepted file types for preview\r\nexport const ACCEPTED_PREVIEW_FILE_TYPES = [\"pdf\", \"png\", \"jpeg\", \"jpg\"];\r\n\r\n/**\r\n *\r\n * @param {Object} props\r\n * @param {(e) => void} props.action\r\n * @param {Object[]} props.files\r\n * @param {(file, i) => void} props.remove\r\n * @param {String} props.placeHolder\r\n * @param {String=} props.description\r\n * @param {Boolean=}props.isSCDFlow\r\n * @param {Boolean=}props.isUploadCenter\r\n * @param {String=}props.sectionTitle\r\n * @param {Boolean=}props.isMarketValue\r\n * @param {Boolean=}props.isPolicyEditor\r\n * @param {Boolean=}props.isPolicyEditorContact\r\n * @param {String=} props.fileTypeName\r\n * @param {Number=} props.maxFiles\r\n * @param {Boolean=} props.disabled\r\n * @param {Boolean=} props.isMarketValueUpdate\r\n */\r\nexport default function CustomFileUpload({\r\n\taction,\r\n\tfiles,\r\n\tremove,\r\n\tplaceHolder,\r\n\tdescription,\r\n\tfileTypeName,\r\n\tisSCDFlow = false,\r\n\tisUploadCenter = false,\r\n\tsectionTitle = \"\",\r\n\tisMarketValue = false,\r\n\tisPolicyEditor = false,\r\n\tisPolicyEditorContact = false,\r\n\tisMarketValueUpdate = false,\r\n\tmaxFiles,\r\n\tdisabled = false,\r\n}) {\r\n\tconst serviceProvider = useSelector(getServiceProvider);\r\n\tconst dispatch = useDispatch();\r\n\tlet imgPositionIncrement = 0;\r\n\tconst { name } = serviceProvider;\r\n\tconst cachedFile = useSelector(getClaimsRepairsEstimateFiles);\r\n\tconst [uploadDropdown, setUploadDropdown] = useState(false);\r\n\tconst [documentViewSection, setDocumentViewSection] = useState(false);\r\n\tconst [charLimit, setCharLimit] = useState(9);\r\n\tconst { width, screenType, isMobile, isDesktop, isTablet, isLargeDesktop } = useScreenType();\r\n\r\n\tuseEffect(()=>{\r\n\t\tif(screenType === \"mobile\" || screenType === \"small-mobile\" || screenType === \"medium-mobile\"){\r\n\t\t\tsetCharLimit(14);\r\n\t\t}else if(screenType === \"medium-mobile\" || screenType === \"tablet\"){\r\n\t\t\tsetCharLimit(16);\r\n\t\t}else {\r\n\t\t\tsetCharLimit(19);\r\n\t\t}\r\n\t},[width])\r\n\r\n\tconst { getRootProps, getInputProps, open } = useDropzone({\r\n\t\tonDrop: async droppedFiles => {\r\n\t\t\tlet fileUpload = await onDrop(files, droppedFiles, description, fileTypeName);\r\n\t\t\taction(fileUpload);\r\n\t\t\tif (isMarketValue) dispatch(setClaimRepairsEstimateFiles(fileUpload[0]));\r\n\t\t},\r\n\r\n\t\tonDropRejected: rejectedReason =>\r\n\t\t\trejectedReason[0].errors.forEach(err =>\r\n\t\t\t\ttoast.error(\r\n\t\t\t\t\terr.message.includes(\"larger\")\r\n\t\t\t\t\t\t? \"This document has exceeded the maximum size of 4MB and will not be submitted, please try another\"\r\n\t\t\t\t\t\t: err.message.includes(\"type\")\r\n\t\t\t\t\t\t? \"This file type cannot be uploaded\"\r\n\t\t\t\t\t\t: err.message,\r\n\t\t\t\t\t{ autoClose: 10000 }\r\n\t\t\t\t)\r\n\t\t\t),\r\n\t\tnoClick: true,\r\n\t\tmaxSize: MAX_SIZE,\r\n\t\tmaxFiles: maxFiles,\r\n\t\tdisabled,\r\n\t\taccept: \"image/png, image/jpeg, application/pdf\",\r\n\t});\r\n\r\n\r\n\tconst previewFileType = file => {\r\n\t\tdispatch(setCurrentBlob(file.blob));\r\n\t\tdispatch(setCurrentBlobModal(true));\r\n\t}; \r\n\tconst onDrop = async (files, acceptedFiles, description, name) => {\r\n\t\tlet temp = [...files];\r\n\t\tfor (let i = 0; i < acceptedFiles.length; i++) {\r\n\t\t\tlet file = acceptedFiles[i];\r\n\t\t\tconst fileExt = file.name.split(\".\").pop().toLowerCase();\r\n\t\t\tlet optimizedFile;\r\n\t\t\tif (fileExt === \"png\" || fileExt === \"gif\" || fileExt === \"jpg\" || fileExt === \"jpeg\") {\r\n\t\t\t\tdispatch(setLoadingMessage(\"Compressing your image files...\"));\r\n\t\t\t\tdispatch(setLoading(true));\r\n\t\t\t\toptimizedFile = await ClaimsNetworkLayer.compressImage(file);\r\n\t\t\t}\r\n\r\n\t\t\tif (fileExt === \"pdf\") {\r\n\t\t\t\tdispatch(setLoadingMessage(\"Compressing your pdf files...\"));\r\n\t\t\t\tdispatch(setLoading(true));\r\n\t\t\t\tlet temp = await toBase64(file);\r\n\t\t\t\toptimizedFile = await ClaimsNetworkLayer.compressFile(file, temp);\r\n\t\t\t\t// optimizedFile = optimizedFile.replace(new RegExp(\"^data:.*base64,\", \"i\"), \"\");\r\n\t\t\t}\r\n\r\n\t\t\tconst blob =\r\n\t\t\t\tfileExt === \"pdf\"\r\n\t\t\t\t\t? optimizedFile\r\n\t\t\t\t\t\t? optimizedFile\r\n\t\t\t\t\t\t: await toBase64(file)\r\n\t\t\t\t\t: optimizedFile\r\n\t\t\t\t\t? await toBase64(optimizedFile)\r\n\t\t\t\t\t: await toBase64(file);\r\n\t\t\tconst fileName = name ? name + \".\" + file.name.split(\".\").pop() : file.name;\r\n\r\n\t\t\tconst size = file.size;\r\n\t\t\tconst newObject = { name: fileName, blob: blob, description, size };\r\n\r\n\t\t\tconst index = temp.findIndex(f => f.name === fileName);\r\n\t\t\tif (index > -1) {\r\n\t\t\t\ttemp[index] = newObject;\r\n\t\t\t} else {\r\n\t\t\t\ttemp = [...temp, newObject];\r\n\t\t\t}\r\n\t\t}\r\n\t\tdispatch(setLoading(false));\r\n\t\treturn temp;\r\n\t};\r\n\r\n\tfunction limitText(text, charLimit){\r\n\t\tlet textLength = text.length;\r\n\t\tif(textLength > charLimit){\r\n\t\t\treturn text.substring(0, charLimit) + '...';\r\n\t\t}else{\r\n\t\t\treturn text;\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t(isUploadCenter || isMarketValue && !isMarketValueUpdate) ?\r\n\t\t
\r\n\t\t\t{files.length > 0 && }\r\n\t\t\t
0 ? \"1px solid #002868\" : \"none\"\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
{description}
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t \r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\topen();\r\n\t\t\t\t\t\t\t\tsetUploadDropdown(false);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\talt=\"upload\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\tUpload Now\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tMaximum upload file size is: 4MB\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\tJPG,PNG,PDF\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t{\r\n\t\t\t\tfiles.length > 0 &&\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{files.length}\r\n\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\tUploads\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
{\r\n\t\t\t\t\t\t\t\tsetUploadDropdown((prev)=>{\r\n\t\t\t\t\t\t\t\t\treturn !prev;\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tclassName=\"dropdown-icon-container\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t{files?.slice(0, 3).map((file, index) => { \r\n\t\t\t\t\t\t\t\t\tconst defaultDisplayAmt = 3, absoluteRightPosition = 25;\r\n\t\t\t\t\t\t\t\t\tlet remainderSize = files?.length - 3; \r\n\t\t\t\t\t\t\t\t\tlet zIndexValue = defaultDisplayAmt - index;\r\n\t\t\t\t\t\t\t\t\timgPositionIncrement += index === 0 ? 0 : absoluteRightPosition; \r\n\r\n\t\t\t\t\t\t\t\t\tlet img = file.name.split(\".\").pop().toLowerCase() != \"pdf\" ? previewFileType(file)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// \t\t: null\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t\t\t\t\t/> : \r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\tdefaultDisplayAmt === (index+1) && remainderSize > 0 ? \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
{remainderSize}+
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{img}\r\n\t\t\t\t\t\t\t\t\t\t\t
:\r\n\t\t\t\t\t\t\t\t\t\t\timg\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{files?.map((file, i) => (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t

{file.name}

\r\n\t\t\t\t\t\t\t\t\t{/* <>{file.name.split(\".\").pop().toLowerCase()} */}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t previewFileType(file)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t/> \r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tfile.name.split(\".\").pop().toLowerCase() === \"pdf\"?\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t: previewFileType(file)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t/> \r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t remove(file, i)} \r\n\t\t\t\t\t\t\t\t\t\t/> \r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\r\n\t\t: 0 ? \"#f0f3f6\" : \"#fff\",\r\n\t\t\t\tborder: isSCDFlow && files.length ? \"1px solid #f0f3f6\" : \"1px solid #fff\",\r\n\t\t\t}}\r\n\t\t> \r\n\t\t\t{isSCDFlow ? (\r\n\t\t\t\t<>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\"upload\"\r\n\t\t\t\t\t\t\t{placeHolder}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\r\n\t\t\t\t\t{files.length === 0 && (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tMaximum upload file size is: 4MB\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tJPG,PNG,PDF\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t) : false ? (\r\n\t\t\t\t\r\n\t\t\t) : (isPolicyEditor || isPolicyEditorContact) ? (\r\n\t\t\t\t<>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{placeHolder}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t) : ((!isUploadCenter || !isMarketValue) && !isMarketValueUpdate) && (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{placeHolder}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tUpload\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\t{(!isMarketValue && !isUploadCenter && !isMarketValueUpdate) && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{name === \"Other\"\r\n\t\t\t\t\t\t? Object.keys(files).length === 0 &&
\r\n\t\t\t\t\t\t: files?.length === 0 &&
}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\r\n\t\t\t{isSCDFlow && files.length !== 0 && (!isMarketValueUpdate && !isMarketValue && !isUploadCenter) && (\r\n\t\t\t\t
\r\n\t\t\t\t\t {files.length} Document(s)\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tMaximum upload file size is: 4MB\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\tJPG,PNG,PDF\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\r\n\t\t\t{(!isMarketValue && !isUploadCenter && !isMarketValueUpdate) && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{(!isSCDFlow && !isUploadCenter) && (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{!isPolicyEditor && !isPolicyEditorContact && (\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t {files.length} Document(s)\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tMaximum upload file size is: 4MB\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\tJPG,PNG,PDF\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\r\n\t\t\t{(!isMarketValue && !isUploadCenter && !isMarketValueUpdate) && (\r\n\t\t\t\t
\r\n\t\t\t\t\t{files?.map((file, i) => (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t 1 && i > 0 ? \"files-border\" : \"\")}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t
previewFileType(file)\r\n\t\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t({i + 1}) {file.name}\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t previewFileType(file)\r\n\t\t\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t\t\t} \r\n\t\t\t\t\t\t\t\t\t\tclassName=\"preview-icon\" \r\n\t\t\t\t\t\t\t\t\t/> \r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\"delete\" remove(file, i)} />\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t))}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\r\n\r\n\t\t\t{(isUploadCenter && !isMarketValueUpdate) && (
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tfiles.length ?\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t:\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t} \r\n\t\t\t\t\t\t\t\t

{sectionTitle}

\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t{placeHolder}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tUpload\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{files?.map((file, i) => (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t 1 && i > 0 ? \"files-border\" : \"\")}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t
previewFileType(file)\r\n\t\t\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t({i + 1}) {file.name}\r\n\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t previewFileType(file)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t\t\t\t} \r\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"preview-icon\" \r\n\t\t\t\t\t\t\t\t\t\t/> \r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\"delete\" remove(file, i)} />\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t \r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tMaximum upload file size is: 4MB\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tJPG,PNG,PDF\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\r\n\t\t)} \r\n\r\n\t\t{(isMarketValueUpdate) && (\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{files?.length === 0 ? (\r\n\t\t\t\t\t\tFiles\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tsetDocumentViewSection((prev)=>!prev)}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\tFiles:{ documentViewSection ? ` ▲ Hide ${files.length > 1 ? ` (${files.length}) uploaded files` : `uploaded file`}` : ` ▼ View ${files.length > 1 ? `(${files.length}) uploaded files` : `uploaded file`}` }\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{files?.map((file, index)=>{ \r\n\t\t\t\t\t\t\t\treturn\t\r\n\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\t{/* {\" - \"} {truncate(file?.name?.split(\".\")?.slice(0, -1).join(), 15)}.{file?.name?.split(\".\").pop()} */}\r\n\t\t\t\t\t\t\t\t\t\t\t\t({index + 1}) {limitText(file.name, charLimit)} \r\n\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tremove(file, index)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// let temp = marketValues.splice(index, 1);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// dispatch(setClaimRepairsEstimateFiles(temp));\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsrc={delete_btn}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\talt=\"delete-icon\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ height: 20, cursor:\"pointer\" }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/> \r\n\t\t\t\t\t\t\t\t\t\t\t\t{\" | \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t previewFileType(file)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t} \r\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"---preview-icon\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ height: 20, margin:0, cursor:\"pointer\" }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/> \r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t \r\n\t\t)\r\n\t\t\r\n\t\t}\r\n\r\n\r\n\t\t\r\n\t);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","export const chunk = (arr, chunkSize = 1, cache = []) => {\r\n\tconst tmp = [...arr];\r\n\tif (chunkSize <= 0) return cache;\r\n\twhile (tmp.length) cache.push(tmp.splice(0, chunkSize));\r\n\treturn cache;\r\n};\r\n\r\nexport function formatMoney(\r\n\tamount,\r\n\tdecimalCount = 2,\r\n\tdecimal = \".\",\r\n\tthousands = \",\",\r\n\tshowNegative = true,\r\n\tincludeCurrencySymbol = true\r\n) {\r\n\ttry {\r\n\t\tdecimalCount = Math.abs(decimalCount);\r\n\t\tdecimalCount = isNaN(decimalCount) ? 2 : decimalCount;\r\n\r\n\t\tconst negativeSign = showNegative && amount < 0 ? \"-\" : \"\";\r\n\r\n\t\t// The integer part of the number\r\n\t\tlet integerPortion = parseInt(Math.abs(parseInt(amount) || 0).toFixed(decimalCount)).toString();\r\n\t\t// number or 3\r\n\t\tlet j = integerPortion.length > 3 ? integerPortion.length % 3 : 0;\r\n\r\n\t\tconst moneySymbol = includeCurrencySymbol ? \"$\" : \"\";\r\n\t\tconst head = j ? integerPortion.substr(0, j) + thousands : \"\";\r\n\t\tconst body = integerPortion.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + thousands);\r\n\t\tconst cents = decimal + (Math.abs(parseFloat(amount)) - parseFloat(integerPortion)).toFixed(decimalCount).slice(2);\r\n\t\tconst formattedMoney = `${negativeSign}${moneySymbol}${head}${body}${cents}`;\r\n\r\n\t\treturn formattedMoney;\r\n\t} catch (e) {\r\n\t\tconsole.error(e);\r\n\t\treturn null;\r\n\t}\r\n}\r\n","import { PolicyHelper } from \"helpers\";\r\nimport { calcExtensionTotalAlt, recalculatePaymentPlans } from \"../PaymentSchedule/functions\";\r\n\r\n/**\r\n * Calculates the correct balance using the payment plan details as well as taxes and rider removal\r\n * @param {*} risks - Risks Object\r\n * @param {*} paymentTerm - The active payment term\r\n * @param {Number} numTerms - Number of payment terms for correct calculation\r\n * @param {Number} tax - A decimal value for the tax\r\n */\r\nexport function calculateBalance(risks, paymentTerm, numTerms, tax) {\r\n\t// Get the correct tax value for calculation\r\n\tconst taxPercent = 1 + tax;\r\n\t// Remove riders from premiums first\r\n\tconst fullRiderPremium = PolicyHelper.removeAllRiderPremiums(risks);\r\n\t// Divide premium by number of terms\r\n\tconst totalDeductions = fullRiderPremium / numTerms;\r\n\t// Add the tax\r\n\tconst totalDeductionsWithTax = totalDeductions * taxPercent;\r\n\r\n\tconst balance = {\r\n\t\trenewal_premium: 0,\r\n\t\ttotal: 0,\r\n\t\texpiry_date: \"\",\r\n\t};\r\n\r\n\t// Calculate the amount due for the current payment\r\n\r\n\tbalance.GCT = Math.abs(paymentTerm.payment_term_premium_with_tax - paymentTerm.payment_term_premium).toFixed(2);\r\n\tbalance.renewal_premium = Math.max(paymentTerm.payment_term_premium - totalDeductions, 0);\r\n\tbalance.total = Math.max(paymentTerm.payment_term_premium_with_tax - totalDeductionsWithTax, 0);\r\n\tbalance.expiry_date = paymentTerm.expiry_date;\r\n\r\n\treturn balance;\r\n}\r\n\r\n\r\n\r\n\r\n\texport function totalBalanceCalculation(/* extendablePolicies, policy_id */ selectedPolicy) {\r\n\r\n\t\t/* const TAX_PERCENT = 1 + extendablePolicies[0]?.tax_percent / 100; */\r\n\t\t//Select specific policy\r\n\t\t/* let selectPolicy = extendablePolicies.filter(policy => policy.policy_id === policy_id)[0]; */\r\n\r\n\t\tconst TAX_PERCENT = 1 + selectedPolicy?.tax_percent / 100;\r\n\r\n\t\tconst arrayAfterRecalculation = recalculatePaymentPlans(\r\n\t\t\t\"paybalance\",\r\n\t\t\tselectedPolicy?.paymentPlan,\r\n\t\t\tselectedPolicy?.risks,\r\n\t\t\tTAX_PERCENT,\r\n\t\t\tselectedPolicy?.start_date\r\n\t\t);\r\n\t\treturn calcExtensionTotalAlt(arrayAfterRecalculation, TAX_PERCENT);\r\n\t}\r\n","import React from \"react\";\r\nimport get from \"lodash.get\";\r\n\r\n/**\r\n * @typedef {() => Promise<{[name: string]: *}>} THN\r\n * @typedef {(thenable: THN, name?: string) => React.LazyExoticComponent>} LazyNamed\r\n */\r\n\r\n/**\r\n * Improvement on top of React.lazy() that allows lazy rendering of named imports\r\n * Usage:\r\n *\r\n * -- alternative to import { primary } from './Button'\r\n * const PrimaryButton = lazier(() => import('./Button'), 'primary');\r\n *\r\n * -- get the default import\r\n * lazier(() => import('./Button'), 'default');\r\n *\r\n * -- or\r\n * lazier(() => import('./Button'));\r\n *\r\n * @param {() => Promise<*>} thenable\r\n * @param {string=} [name=\"default\"]\r\n * @type {LazyNamed}\r\n */\r\nconst lazier = (thenable, name = \"default\") => React.lazy(() => thenable().then(mod => ({ default: get(mod, name) })));\r\n\r\nexport default lazier;\r\n","export default __webpack_public_path__ + \"static/media/MC-color.dbf5fe31.png\";","export default __webpack_public_path__ + \"static/media/Visa-colour.68a70145.png\";","export default __webpack_public_path__ + \"static/media/MC-color.a7d75c59.webp\";","export default __webpack_public_path__ + \"static/media/Visa-colour.db0b60ac.webp\";","import React from \"react\";\r\nimport MCColor from \"assets/img/interface/MC-color.png\";\r\nimport VISAColor from \"assets/img/interface/Visa-colour.png\";\r\nimport MCColorWebp from \"assets/img/interface/MC-color.webp\";\r\nimport VISAColorWebp from \"assets/img/interface/Visa-colour.webp\";\r\n\r\n/** Processes the card validator result and displays relevant CC type image */\r\nexport default function Card({ type }) {\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\"MasterCard\"\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\"Visa\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n}\r\n","import { Field } from \"formik\";\r\nimport React from \"react\";\r\n\r\nexport default function CustomInput({\r\n\ttouched,\r\n\tname,\r\n\tlabel = \"\",\r\n\tvalue,\r\n\terror,\r\n\trequired = null,\r\n\tmaxLength = 50,\r\n\t...otherProps\r\n}) {\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t{label}\r\n\t\t\t\t\t{required && * }\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{touched && error &&
{error}
}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n","import React from \"react\";\r\n\r\nconst { Field } = require(\"formik\");\r\nconst { CountryDropdown, RegionDropdown } = require(\"react-country-region-selector\");\r\n\r\n\r\nexport default function CustomSelect ({\r\n\tclassAddons = \"\",\r\n\tlabel,\r\n\tvalue = \"\",\r\n\tname,\r\n\toptions = [],\r\n touched,\r\n\tcountry = \"\",\r\n\terror = null,\r\n\t...otherProps\r\n}) {\r\n\treturn (\r\n\t\r\n\t\r\n {name === \"country\"?(
\r\n\t{label}\r\n\t * \r\n\t
\r\n ):(\r\n
\r\n\t{country === \"Jamaica\" ? \"Parish\" : \"Province\"}\r\n\t{country === \"Jamaica\" && * }\r\n\t
) \r\n }\r\n \r\n\t\t\t<>\r\n\t\t\t\t\r\n\r\n {touched && error &&
{error}
}\r\n\t\t\t\t\t\t\t\t\r\n \r\n \r\n\t\t\r\n\t \r\n\t);\r\n}\r\n","import React, { useRef, useEffect, useState, useMemo } from \"react\";\r\nimport { CountryDropdown, RegionDropdown } from \"react-country-region-selector\";\r\nimport { setPaymentResponse } from \"globals/payments\";\r\nimport { Formik, Form, Field } from \"formik\";\r\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\r\nimport MaskedInput from \"react-text-mask\";\r\nimport { object, string } from \"yup\";\r\nimport { useHistory } from \"react-router\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { getUser, getAuthState, getTransactionType, getPolicyHolders } from \"globals/auth\";\r\nimport Card from \"./Card\";\r\nimport { Row, Col } from \"reactstrap\";\r\n\r\nimport \"./BillingForm.scss\";\r\nimport CustomCheckbox from \"components/CustomCheckbox\";\r\nimport { lastDayOfMonth } from \"date-fns\";\r\nimport { InfoIcon } from \"components\";\r\nimport { QUICK_PAY } from \"pages/RenewPolicy/costants\";\r\nimport * as Yup from 'yup';\r\nimport CustomInput from \"./CustomInput\";\r\nimport CustomSelect from \"./CustomSelect\";\r\n\r\nconst gatewayURL = process.env.REACT_APP_GATEWAY_URL;\r\nconst jQueryURL = \"https://code.jquery.com/jquery-1.7.2.min.js\";\r\n\r\n/** Possible form states */\r\nconst transactionStates = {\r\n\tERROR: \"error\",\r\n\tDEFAULT: \"default\",\r\n\tLOADING: \"loading\",\r\n\tSUCCESS: \"success\",\r\n};\r\n\r\n/** Initializers for form state */\r\nconst defaults = {\r\n\tfirstName: \"\",\r\n\tlastName: \"\",\r\n\temail: \"\",\r\n\tphoneNumber: \"\",\r\n\tbillingAddress: \"\",\r\n\tcountry: \"Jamaica\",\r\n\tregion: \"\",\r\n\tzip_code: \"\",\r\n\tcardNumber: \"\",\r\n\tcardName: \"\",\r\n\tcardExpiryMonth: \"\",\r\n\tcardExpiryYear: \"\",\r\n\tcardCVC: \"\",\r\n\tsameAddress: false,\r\n};\r\n\r\n/** Schema using the Yup library for easier field validation */\r\nconst billingFormSchema = Yup.object({\r\n\tfirstName: Yup.string().required(\"Please enter your first name\"),\r\n\tlastName: Yup.string().required(\"Please enter your last name\"),\r\n\temail: Yup.string().required(\"Please enter your email address\").email().trim(),\r\n\tphoneNumber: Yup.string()\r\n\t\t.required(\"Please enter your phone number\")\r\n\t\t.matches(/^[+]?(\\d{1,2})?[\\s.-]?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$/g, \"Phone Number format is invalid\"),\r\n\tbillingAddress: Yup.string().required(\"Please enter your billing address\"),\r\n\tcountry: Yup.string().required(\"Please choose your card's billing country\"),\r\n\tregion: Yup.string().when(\"country\", {\r\n\t\tis: country => country === \"Jamaica\",\r\n\t\tthen: Yup.string().required(\"Please choose your parish\"),\r\n\t}),\r\n\tsameAddress: Yup.boolean(),\r\n\tzip_code: Yup.string(),\r\n\tcardName: Yup.string().required(\"Please enter the name of the cardholder\"),\r\n\t//cardNumber: Yup.string().required(\"Card Number required\").matches(/\\d+/g, \"Entry should be a valid number\").length(19, \"Invalid credit card number\"),\r\n\tcardExpiryMonth: Yup.string()\r\n\t\t.required(\"Please enter your card's expiry date\")\r\n\t\t.matches(/(0[1-9]|1[0-2])/g, `Invalid month entered, please enter a valid month from 01-12`),\r\n\tcardExpiryYear: Yup.string()\r\n\t\t.required(\"Please enter your card's expiry date\")\r\n\t\t.matches(/\\d{2}/g, `Invalid year entered, please use the last two digits of the year`)\r\n\t\t.test(\"date-not-expired\", `Card is invalid or expired. Please provide a valid date.`, checkValidDate),\r\n\t//cardCVC: Yup.string().required(\"Please enter a valid CVC/CVV\").max(4, \"Please enter a valid CVC/CVV\"),\r\n});\r\n\r\nconst phoneNumberMask = [\"(\", /\\d/, /\\d/, /\\d/, \")\", \" \", /\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, /\\d/, /\\d/];\r\nconst creditCardMask = [\r\n\t/\\d/,\r\n\t/\\d/,\r\n\t/\\d/,\r\n\t/\\d/,\r\n\t\"-\",\r\n\t/\\d/,\r\n\t/\\d/,\r\n\t/\\d/,\r\n\t/\\d/,\r\n\t\"-\",\r\n\t/\\d/,\r\n\t/\\d/,\r\n\t/\\d/,\r\n\t/\\d/,\r\n\t\"-\",\r\n\t/\\d/,\r\n\t/\\d/,\r\n\t/\\d/,\r\n\t/\\d/,\r\n];\r\n\r\n/**\r\n * Checks to ensure a valid date is provided\r\n * @param {String} year\r\n */\r\nfunction checkValidDate(year) {\r\n\tif (!this.parent.cardExpiryMonth) return false;\r\n\r\n\tconst dateEntry = lastDayOfMonth(new Date(parseInt(`20${year}`), this.parent.cardExpiryMonth - 1)); //Month is 0-indexed\r\n\tconst currentDate = new Date();\r\n\tif (dateEntry < currentDate) return false;\r\n\r\n\treturn true;\r\n}\r\n\r\n/** Default form state */\r\nconst defaultFormStatus = { transactionState: transactionStates.DEFAULT };\r\n\r\n/**\r\n * TODO: Add to this later\r\n * @param {Object} props\r\n */\r\nfunction BillingDetails({ setBillingDetails, showPaymentModal, showError, transaction }) {\r\n\tconst dispatch = useDispatch();\r\n\tconst user = useSelector(getUser, shallowEqual);\r\n\tconst policyHolders = useSelector(getPolicyHolders, shallowEqual);\r\n\tconst isLoggedIn = useSelector(getAuthState, shallowEqual);\r\n\tconst [isHomeAdress, setIsAddress] = useState(false);\r\n\tconst history = useHistory();\r\n\tconst transactionType = useSelector(getTransactionType, shallowEqual);\r\n\tconst formDefaults = useRef(defaults);\r\n\t/** ref is necessary to prevent re-render bug: text getting removed */\r\n\tconst cardType = useRef(\"\");\r\n\tconst cardNumber = useRef(null);\r\n\tconst cardName = useRef(null);\r\n\tconst cardCVC = useRef(null);\r\n\tconst [cardNumburDirty, setCardNumburDirty] = useState(false);\r\n\tconst [cvcDirty, setCVCDirty] = useState(false);\r\n\tconst [cardFieldsDirty, setCardFieldsDirty] = useState(false)\r\n\r\n\tuseEffect(() => {\r\n\t\tif (cardNumburDirty && cvcDirty) setCardFieldsDirty(true);\r\n\t}, [cardNumburDirty, cvcDirty]);\r\n\r\n\tconst handleInputChange = (selector) => {\r\n\r\n\t\tif (selector === \"#cardCVC\") setCVCDirty(true);\r\n\t\tif (selector === \"#cardNumber\") setCardNumburDirty(true);\r\n\t};\r\n\t/** Initializers for form state */\r\n\tconst defaultFormValues = useMemo(() => {\r\n\t\tif (transactionType !== QUICK_PAY)\r\n\t\t\treturn {\r\n\t\t\t\t...formDefaults.current,\r\n\t\t\t\tfirstName: transaction.firstName !== null ? transaction.firstName : \"\",\r\n\t\t\t\tlastName: transaction.lastName !== null ? transaction.lastName : \"\",\r\n\t\t\t\temail:\r\n\t\t\t\t\ttransactionType === QUICK_PAY && formDefaults.current.email !== null\r\n\t\t\t\t\t\t? formDefaults.current.email\r\n\t\t\t\t\t\t: transactionType !== null\r\n\t\t\t\t\t\t\t? user.email_address !== null && user.email_address !== undefined\r\n\t\t\t\t\t\t\t\t? user.email_address\r\n\t\t\t\t\t\t\t\t: \"\"\r\n\t\t\t\t\t\t\t: \"\",\r\n\t\t\t\tregion:\r\n\t\t\t\t\ttransactionType === QUICK_PAY && formDefaults.current.region !== null ? formDefaults.current.region : \"\",\r\n\t\t\t\tphoneNumber:\r\n\t\t\t\t\ttransactionType === QUICK_PAY && formDefaults.current.phoneNumber !== null\r\n\t\t\t\t\t\t? formDefaults.current.phoneNumber\r\n\t\t\t\t\t\t: \"\",\r\n\t\t\t\tbillingAddress:\r\n\t\t\t\t\ttransactionType === QUICK_PAY && formDefaults.current.billingAddress !== null\r\n\t\t\t\t\t\t? formDefaults.current.billingAddress\r\n\t\t\t\t\t\t: \"\",\r\n\t\t\t\tfromRenewalFlow: transaction.policyNumber === null ? false : true,\r\n\t\t\t};\r\n\t\telse\r\n\t\t\treturn {\r\n\t\t\t\t...formDefaults.current,\r\n\t\t\t\tfromRenewalFlow: false,\r\n\t\t\t};\r\n\t}, [transaction, transactionType, user]);\r\n\r\n\tconst [scriptLoaded, setScriptLoaded] = useState(\r\n\t\ttypeof window !== \"undefined\" && typeof window[\"myScript\"] !== \"undefined\"\r\n\t);\r\n\r\n\t/**\r\n\t * Handles script loading\r\n\t * @param {*} _\r\n\t * @param {*} addedTags\r\n\t */\r\n\tconst handleScriptLoadState = (_, addedTags) => {\r\n\t\tif (addedTags && addedTags.scriptTags) {\r\n\t\t\tconst foundScript = addedTags.scriptTags.find(({ src }) => src === gatewayURL);\r\n\t\t\tif (foundScript) {\r\n\t\t\t\tfoundScript.addEventListener(\"load\", () => setScriptLoaded(true), { once: true });\r\n\t\t\t}\r\n\t\t}\r\n\t\twindow.PaymentSession?.onFocus(['card.number'], function (selector) {\r\n\t\t\thandleInputChange(selector);\r\n\t\t});\r\n\t\twindow.PaymentSession?.onFocus(['card.securityCode'], function (selector) {\r\n\t\t\thandleInputChange(selector);\r\n\t\t})\r\n\t};\r\n\r\n\t/**\r\n\t * Handles the submission of the form\r\n\t * @param {defaultFormValues} values\r\n\t */\r\n\tasync function handleFormSubmit(values) {\r\n\t\tsetBillingDetails(values);\r\n\t\twindow.PaymentSession.updateSessionFromForm(\"card\");\r\n\t}\r\n\r\n\t/**\r\n\t * Additional name validation if coming from renewal flow\r\n\t * @param {String} value\r\n\t */\r\n\tfunction validateName(value) {\r\n\t\tlet error;\r\n\t\tif (Object.keys(user).length === 0 || policyHolders?.length === 0) return error;\r\n\t\tlet _value = value.toLowerCase().trim();\r\n\r\n\t\t// dont validate if user is a corporate client\r\n\t\tif (user?.is_a_company) return;\r\n\r\n\t\tconst foundPolicyHolder = policyHolders.find(policyHolderObject => {\r\n\r\n\t\t\tconst policyHolder = policyHolderObject.global_name;\r\n\r\n\t\t\tif (_value === `${policyHolder?.first_name?.toLowerCase().trim()} ${policyHolder?.last_name?.toLowerCase().trim()}`)\r\n\t\t\t\treturn policyHolder;\r\n\t\t});\r\n\r\n\t\tif (!foundPolicyHolder)\r\n\t\t\terror = \"Name does not match Policy Holder\";\r\n\r\n\t\treturn error;\r\n\t}\r\n\r\n\tuseEffect(() => {\r\n\t\tif (scriptLoaded) {\r\n\t\t\tif (window.self === window.top) {\r\n\t\t\t\tlet antiClickjack = document.getElementById(\"antiClickjack\");\r\n\t\t\t\tif (antiClickjack) antiClickjack.parentNode.removeChild(antiClickjack);\r\n\t\t\t} else {\r\n\t\t\t\twindow.top.location = window.self.location;\r\n\t\t\t}\r\n\r\n\t\t\twindow.PaymentSession.configure({\r\n\t\t\t\tfields: {\r\n\t\t\t\t\t// ATTACH HOSTED FIELDS TO YOUR PAYMENT PAGE FOR A CREDIT CARD\r\n\t\t\t\t\tcard: {\r\n\t\t\t\t\t\tnumber: \"#cardNumber\",\r\n\t\t\t\t\t\tsecurityCode: \"#cardCVC\",\r\n\t\t\t\t\t\texpiryMonth: \"#cardExpiryMonth\",\r\n\t\t\t\t\t\texpiryYear: \"#cardExpiryYear\",\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t//SPECIFY YOUR MITIGATION OPTION HERE\r\n\t\t\t\tframeEmbeddingMitigation: [\"javascript\"],\r\n\t\t\t\tcallbacks: {\r\n\t\t\t\t\tinitialized: function (response) {\r\n\t\t\t\t\t\t// HANDLE INITIALIZATION RESPONSE\r\n\t\t\t\t\t},\r\n\t\t\t\t\tformSessionUpdate: function (response) {\r\n\t\t\t\t\t\t// HANDLE RESPONSE FOR UPDATE SESSION\r\n\t\t\t\t\t\tif (response.status) {\r\n\t\t\t\t\t\t\tif (response.status === \"ok\") {\r\n\t\t\t\t\t\t\t\t//(\"Session updated with data: \" + response.session.id, response);\r\n\t\t\t\t\t\t\t\tdispatch(setPaymentResponse({ session: response.session, sourceOfFunds: response.sourceOfFunds }));\r\n\t\t\t\t\t\t\t\tshowPaymentModal(true);\r\n\r\n\t\t\t\t\t\t\t\t//check if the security code was provided by the user\r\n\t\t\t\t\t\t\t\tif (response.sourceOfFunds.provided.card.securityCode) {\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tif (response.sourceOfFunds.provided.card.number) {\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t//check if the user entered a MasterCard credit card\r\n\t\t\t\t\t\t\t\tif (response.sourceOfFunds.provided.card.scheme === \"MASTERCARD\") {\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else if (\"fields_in_error\" === response.status) {\r\n\t\t\t\t\t\t\t\tconst error = Object.keys(response.errors).reduce(\r\n\t\t\t\t\t\t\t\t\t(errorStr, label) =>\r\n\t\t\t\t\t\t\t\t\t\t`${label.toLowerCase()} is ${response.errors[label]}${errorStr.length ? `, ${errorStr}` : \"\"}`,\r\n\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\tshowError(`Oops! Unable to process payment: '${error}'`);\r\n\t\t\t\t\t\t\t} else if (\"request_timeout\" === response.status) {\r\n\t\t\t\t\t\t\t\tshowError(`Oops! Unable to process payment. 'Took too long'`);\r\n\t\t\t\t\t\t\t} else if (\"system_error\" === response.status) {\r\n\t\t\t\t\t\t\t\tshowError(`Oops! Unable to process payment. 'A problem arose.'`);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tsetScriptLoaded(false);\r\n\t\t}\r\n\t}, [scriptLoaded, dispatch, showPaymentModal, showError]);\r\n\r\n\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t{({ isSubmitting, errors, values, touched, setFieldTouched, status, isValid, handleChange, submitForm, dirty, setFieldValue, setFieldError }) => (\r\n\t\t\t\t\t<>\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\tBilling Details{\" \"}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{/** @type {First Name} */}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== \"\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//transaction.firstName = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.firstName = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"firstName\", e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={values.fromRenewalFlow && !user?.is_a_company}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/** @type {Last Name} */}\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== \"\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//transaction.lastName = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.lastName = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"lastName\", e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={values.fromRenewalFlow && !user?.is_a_company}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/** @type {Email} */}\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== \"\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.email = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"email\", e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{isLoggedIn && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{transactionType !== QUICK_PAY && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleChange(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldError('billingAddress', '');\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldError('phoneNumber', '');\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldError('region', '');\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{({ field }) => (\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"sameAddress\", !values.sameAddress);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"billingAddress\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuser.locations[0]?.street_number +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\" \" +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuser.locations[0]?.street_name +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\" \" +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuser.locations[0]?.street_type !==\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnull && !values.sameAddress\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? user.locations[0]?.street_number +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\" \" +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuser.locations[0]?.street_name +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\" \" +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuser.locations[0]?.street_type\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"phoneNumber\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuser.phone_numbers[0]?.phone_number !== null && !values.sameAddress\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? user?.phone_numbers?.[0]?.phone_number\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"region\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuser?.locations[0]?.parish !== null && !values.sameAddress\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? user?.locations[0]?.parish.includes(\"St.\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? user?.locations[0]?.parish.replaceAll(\"St.\", \"Saint\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: user?.locations[0]?.parish\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={values.sameAddress}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{transactionType !== QUICK_PAY && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tMy billing address is the same as my home address\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/** @type {Address} */}\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== \"\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.billingAddress = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"billingAddress\", e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldTouched(\"billingAddress\", true, true)\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/** @type {Country} */}\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleChange(e)\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== \"\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.country = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"country\", e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={values.sameAddress}\r\n\t\t\t\t\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/** @type {Province} */}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t{values.country === \"Jamaica\" ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleChange(e)\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== \"\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.region = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"region\", e.target.value);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={values.sameAddress}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== \"\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.region = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"region\", e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={values.sameAddress}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/** @type {ZIP Code} */}\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== \"\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.phoneNumber = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"zip_code\", e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}} />\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/** @type {Phone Number} */}\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== \"\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.phoneNumber = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"phoneNumber\", e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldTouched(\"phoneNumber\", true, true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

Card Details

\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/** @type {Credit Card Number} */}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tCard Number\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{({ field }) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t{/* touched.cardNumber && errors.cardNumber && (\r\n\t\t\t\t\t\t\t\t\t\t\t
{errors.cardNumber}
\r\n\t\t\t\t\t\t\t\t\t\t) */}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/** @type {Name on Card} */}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tName on Card\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t validateName(val)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={values.cardName}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonKeyUp={e => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== null) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.cardName = e.target.value\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"cardName\", e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldTouched(\"cardName\", true, true)\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{touched.cardName && errors.cardName &&
{errors.cardName}
}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/** @type {Card CVC} */}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tCVC\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{/* {touched.cardCVC && errors.cardCVC &&
{errors.cardCVC}
} */}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{/** @type {Expiry Date} */}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tExpiry Date (MM/YY)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== \"\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.cardExpiryMonth = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"cardExpiryMonth\", e.target.value);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
/
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.target.value !== \"\")\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//formDefaults.current.cardExpiryYear = e.target.value;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"cardExpiryYear\", e.target.value);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldTouched(\"cardExpiryYear\", true, true)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t{(touched.cardExpiryYear && errors.cardExpiryMonth && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
{errors.cardExpiryMonth}
\r\n\t\t\t\t\t\t\t\t\t\t\t\t)) ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(touched.cardExpiryYear && errors.cardExpiryYear && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{errors.cardExpiryYear}
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t{transactionType && (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{(status.transactionState === transactionStates.DEFAULT ||\r\n\t\t\t\t\t\t\t\t\t\t\tstatus.transactionState === transactionStates.ERROR) &&\r\n\t\t\t\t\t\t\t\t\t\t\t`Pay Now`}\r\n\t\t\t\t\t\t\t\t\t\t{status.transactionState === transactionStates.LOADING && \"\"}\r\n\t\t\t\t\t\t\t\t\t\t{status.transactionState === transactionStates.SUCCESS && \"\"}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{typeof window !== \"undefined\" && typeof window[\"myScript\"] === \"undefined\" && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{typeof window !== \"undefined\" && typeof window[\"myScript\"] === \"undefined\" && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{typeof window !== \"undefined\" && typeof window[\"myScript\"] === \"undefined\" && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default BillingDetails;\r\n","import React from \"react\";\r\nimport { formatMoney } from \"helpers/policy\";\r\nimport {Row, Col} from 'reactstrap'\r\n/**\r\n * @typedef {Object} paymentFormValues\r\n * @property {String=} paymentFormValues.policyNumber\r\n * @property {String=} paymentFormValues.paymentAmount\r\n * @property {String=} paymentFormValues.paymentPurpose\r\n * @property {String=} paymentFormValues.paymentPurposeDetailed\r\n * @property {String=} paymentFormValues.currencyType\r\n * @property {Boolean=} paymentFormValues.fromRenewalFlow\r\n * @property {Object=} paymentFormValues.codes\r\n * @property {Object=} paymentFormValues.premiumPA_UM\r\n * @property {Object=} paymentFormValues.extensions\r\n */\r\n\r\n/**\r\n * @typedef {Object} billingFormValues\r\n * @property {String=} billingFormValues.firstName\r\n * @property {String=} billingFormValues.lastName\r\n * @property {String=} billingFormValues.email\r\n * @property {String=} billingFormValues.phoneNumber\r\n * @property {String=} billingFormValues.billingAddress\r\n * @property {String=} billingFormValues.country\r\n * @property {String=} billingFormValues.region\r\n * @property {String=} billingFormValues.zip_code\r\n * @property {String=} billingFormValues.cardNumber\r\n * @property {String=} billingFormValues.cardName\r\n * @property {String=} billingFormValues.cardExpiryMonth\r\n * @property {String=} billingFormValues.cardExpiryYear\r\n * @property {String=} billingFormValues.cardCVC\r\n */\r\n\r\n/**\r\n * Shows the Payment Details\r\n * @param {Object} props\r\n * @param {paymentFormValues} props.paymentDetails\r\n * @param {{session: *, sourceOfFunds: *}} props.paymentResponse\r\n * @param {(value: String) => void} props.maskCreditCard\r\n * @param {billingFormValues} props.billingDetails\r\n */\r\nconst PaymentContent = ({ paymentDetails, paymentResponse, maskCreditCard, billingDetails }) => (\r\n\t<>\r\n\t\t

Policy No: {paymentDetails.policyNumber}

\r\n\t\t

\r\n\t\t\t{\"Type of Transaction: \"}\r\n\t\t\t{paymentDetails.paymentPurpose === \"Other\"\r\n\t\t\t\t? `Other - ${paymentDetails.paymentPurposeDetailed}`\r\n\t\t\t\t: paymentDetails.paymentPurpose}\r\n\t\t

\r\n\t\t\t\t

\r\n\t\t\tCard Number: {paymentResponse && maskCreditCard(paymentResponse.sourceOfFunds.provided.card.number)}\r\n\t\t

\r\n\t\t\r\n\t\t

Name on Card: {billingDetails.cardName}

\r\n\t\t

\r\n\t\t\t{`Payment Amount: ${paymentDetails.currencyType} ${formatMoney(paymentDetails.paymentAmount)}`}\r\n\t\t

\r\n\t\r\n);\r\n\r\nexport default PaymentContent;\r\n","export const TRANSACTION_TYPES =\r\n[\r\n\"Adding a driver\", \r\n\r\n\"Adding a vehicle\", \r\n\r\n\"Additional Premium\", \r\n\r\n\"Claims Experience Letter\", \r\n\r\n\"Renewal\", \r\n\r\n\"Policy Reinstatement\", \r\n\r\n\"Pay Balance\", \r\n\r\n\"New Policy\",\r\n\r\n\"No Claim Discount Letter\", \r\n\r\n\"Service Charge\",\r\n\r\n];\r\n\r\n","import React, { useRef, useEffect } from \"react\";\r\nimport CurrencyInput from \"react-currency-masked-input\";\r\nimport { createNumberMask } from \"text-mask-addons\";\r\nimport { Formik, Form, Field } from \"formik\";\r\nimport MaskedInput from \"react-text-mask\";\r\nimport { useHistory } from \"react-router\";\r\nimport { InfoIcon } from \"components\";\r\nimport { object, string } from \"yup\";\r\nimport { shallowEqual, useSelector } from \"react-redux\";\r\nimport { getToken, getTransactionType } from \"globals/auth\";\r\nimport { Row, Col } from \"reactstrap\";\r\nimport { TRNMask } from \"components/ClaimsProcess/AccidentDetailsThirdParty/constants\";\r\nimport { formatMoney } from \"components/RenewalProcess/AdditionalBenefits/functions\";\r\nimport { TRANSACTION_TYPES } from \"pages/Payments/constants\";\r\nimport { QUICK_PAY } from \"pages/RenewPolicy/costants\";\r\n\r\nconst numberMaskObject = {\r\n\tprefix: \"\",\r\n\tincludeThousandsSeparator: false,\r\n\tintegerLimit: 7,\r\n};\r\n\r\nconst numberMask = createNumberMask(numberMaskObject);\r\n\r\n/**\r\n * Schema using the Yup library for more readable field object validation\r\n */\r\nconst paymentFormSchema = object().shape({\r\n\tnationalId: string()\r\n\t\t.required(\"Please enter a TRN\")\r\n\t\t.matches(/^[\\d]{3}-[\\d]{3}-[\\d]{3}$/, \"Please enter a valid TRN\"),\r\n\tpolicyNumber: string()\r\n\t\t.required(\"Please enter a valid policy number. Digits only.\")\r\n\t\t.matches(/^\\d+$/g, \"Only numbers are accepted\")\r\n\t\t.min(1, `Policy number must be between one (1) and seven (${numberMaskObject.integerLimit}) digits`)\r\n\t\t.max(\r\n\t\t\tnumberMaskObject.integerLimit,\r\n\t\t\t`Policy number must be between one (1) and seven (${numberMaskObject.integerLimit}) digits`\r\n\t\t),\r\n\r\n\tpaymentAmount: string()\r\n\t\t.required(\"Please enter a valid payment amount. Decimal digits are allowed.\")\r\n\t\t.matches(/^(\\d+,?)+(\\.\\d{2})?$/g, \"Payment amount format is invalid\")\r\n\t\t.test(\"not default\", \"Please enter a valid payment amount\", value => value !== \"0.00\"),\r\n\tcurrencyType: string().required(\"Please select a currency type\"),\r\n\tpaymentPurpose: string().required(\"Please choose a valid transaction type\").min(1),\r\n\tpaymentPurposeDetailed: string().when(\"paymentPurpose\", {\r\n\t\tis: paymentPurpose => paymentPurpose === \"Other\",\r\n\t\tthen: string().required(\"Please provide a detailed transaction type\"),\r\n\t}),\r\n});\r\n\r\n/**\r\n * Handles the payment confirmation process\r\n * @param {Object} props\r\n * @param {React.Dispatch>} props.confirmPayment\r\n * @param {Boolean} props.paymentConfirmed\r\n * @param {React.Dispatch} props.setPaymentDetails\r\n * @param {Object} props.transaction\r\n * @param {Function} props.validateTrnPolicy2\r\n * @param {Function} props.showError\r\n * @param {React.MutableRefObject} props.persist\r\n */\r\nfunction \r\nPaymentDetails({\r\n\ttransaction,\r\n\tconfirmPayment,\r\n\tpaymentConfirmed,\r\n\tsetPaymentDetails,\r\n\tvalidateTrnPolicy2,\r\n\tshowValidationError,\r\n\tpersist,\r\n}) {\r\n\tconst history = useHistory();\r\n\tconst confirmRef = useRef(null);\r\n\tconst token = useSelector(getToken, shallowEqual);\r\n\tconst transactionType = useSelector(getTransactionType, shallowEqual);\r\n\t/** Initializers for form state */\r\n\tconst defaultFormValues = {\r\n\t\t...transaction,\r\n\t\tcurrencyType: \"JMD\",\r\n\t\tpaymentPurposeDetailed: \"\",\r\n\t\tfromRenewalFlow: transaction.policyNumber === null ? false : true,\r\n\t\tnationalId: transaction.nationalId === null ? \"\" : transaction.nationalId,\r\n\t\tpolicyNumber: transaction.policyNumber === null ? \"\" : transaction.policyNumber,\r\n\t\tpaymentAmount: transaction.paymentAmount === null ? \"0.00\" : transaction.paymentAmount,\r\n\t\tpaymentPurpose: transaction.paymentPurpose === null ? \"\" : transaction.paymentPurpose,\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (transaction.policyNumber) setPaymentDetails(defaultFormValues);\r\n\t\t//eslint-disable-next-line\r\n\t}, [transaction.policyNumber]);\r\n\r\n\t/**\r\n\t * Submission handler for form\r\n\t * @param {defaultFormValues} values\r\n\t * @param {Object} props\r\n\t * @param {Function} props.setSubmitting\r\n\t */\r\n\tasync function handleFormSubmit(values, { setSubmitting }) {\r\n\t\tlet validationResult = await validateTrnPolicy2( transactionType, values?.nationalId, values?.policyNumber);\r\n\t\tif (transactionType==QUICK_PAY && (validationResult === 1 || validationResult === 2 || validationResult === 3)) {\r\n\t\t\tif (validationResult === 1) {\r\n\t\t\t\t// failed validation for trn and policy\r\n\t\t\t\tshowValidationError(\r\n\t\t\t\t\t\"This policy is either not active or the TRN and policy number are invalid. Please confirm the details entered or contact our customer support.\"\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\t// service failed\r\n\t\t\t\tshowValidationError(\"Service unavailable\");\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t \tif (paymentConfirmed && !values.fromRenewalFlow) {\r\n\t\t\t\tconfirmPayment(false);\r\n\t\t\t} else if (!paymentConfirmed) {\r\n\t\t\t\tconfirmPayment(true);\r\n\t\t\t\tsetPaymentDetails({ ...values, paymentAmount: values.paymentAmount.replaceAll(\",\", \"\") });\r\n\t\t\t} else {\r\n\t\t\t\tpersist.current = true;\r\n\t\t\t\thistory.goBack();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetSubmitting(false);\r\n\t}\r\n\r\n\t/** A helper function to check whether to disable specific fields */\r\n\tfunction propsDisabled(name) {\r\n\t\treturn transaction[name] !== null && defaultFormValues[name] !== \"\";\r\n\t}\r\n\r\n\t/** Checks whether the submit button should be disabled */\r\n\tfunction shouldDisableSubmit(values, errors) {\r\n\t\tlet hasEmptyValues = () => {\r\n\t\t\tif (\r\n\t\t\t\tvalues.nationalId === \"\" ||\r\n\t\t\t\tvalues.policyNumber === \"\" ||\r\n\t\t\t\tvalues.paymentAmount === \"0.00\" ||\r\n\t\t\t\tvalues.paymentPurpose === \"\"\r\n\t\t\t)\r\n\t\t\t\treturn true;\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t\tif (paymentConfirmed) return undefined;\r\n\r\n\t\tif (!hasEmptyValues()) return false;\r\n\t\telse if (Object.entries(errors).length === 0 && !hasEmptyValues()) return false;\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{({ setFieldValue, values, isSubmitting, submitCount, errors, handleBlur, touched }) => (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tPolicyholder's TRN\r\n\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{({ field }) => (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{touched.nationalId && errors.nationalId && (\r\n\t\t\t\t\t\t\t\t\t
{errors.nationalId}
\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tPolicy Number\r\n\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{({ field }) => (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{touched.policyNumber && errors.policyNumber && (\r\n\t\t\t\t\t\t\t\t\t
{errors.policyNumber}
\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tPayment Amount\r\n\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{({ field }) => (\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"paymentAmount\", e);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tonBlur={handleBlur}\r\n\t\t\t\t\t\t\t\t\t\t\tdisabled={paymentConfirmed || propsDisabled(\"paymentPurpose\")}\r\n\t\t\t\t\t\t\t\t\t\t\tpattern={undefined}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{touched.paymentAmount && errors.paymentAmount && (\r\n\t\t\t\t\t\t\t\t\t
{errors.paymentAmount}
\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tCurrency\r\n\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t setFieldValue(\"currencyType\", \"JMD\")}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t setFieldValue(\"currencyType\", \"USD\")}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{touched.currencyType && errors.currencyType && (\r\n\t\t\t\t\t\t\t\t\t
{errors.currencyType}
\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tTransaction Type *\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t{TRANSACTION_TYPES.sort().map((val, index) => {\r\n\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{touched.paymentPurpose && errors.paymentPurpose && (\r\n\t\t\t\t\t\t\t\t\t
{errors.paymentPurpose}
\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{values.paymentPurpose === \"Other\" && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tTransaction Details \r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{touched.paymentPurposeDetailed && errors.paymentPurposeDetailed && (\r\n\t\t\t\t\t\t\t\t
{errors.paymentPurposeDetailed}
\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{(transactionType===QUICK_PAY ) && (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{values.fromRenewalFlow ? \"Back\" : paymentConfirmed ? \"Change\" : \"Confirm\"}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default PaymentDetails;\r\n","import { forwardRef, useImperativeHandle, useState, useEffect } from \"react\";\r\nimport { useHistory } from \"react-router\";\r\n\r\nconst ReceiptErrorModal = ({ policyNumber, amount, currency, customer, paymentType }, ref) => {\r\n const [modalState, setModalState] = useState(false);\r\n const history = useHistory();\r\n\r\n useImperativeHandle(ref, () => ({\r\n openModal: () => setModalState(true),\r\n closeModal: () => setModalState(false),\r\n toggleModal: () => setModalState(!modalState)\r\n }));\r\n\r\n if (!modalState) return null;\r\n\r\n\r\n const referenceNumber = new Date().getDay() + \"\" + new Date().getUTCMonth() + \"\" + new Date().getFullYear() + \"\" + new Date().getMilliseconds() + \"_\"\r\n + policyNumber;\r\n\r\n const orderDate = new Date().toISOString().split(\"T\")[0];\r\n\r\n return (\r\n
\r\n
\r\n { /*
setModalState(false)} className=\"global-modal-cancel\">\r\n \r\n \r\n \r\n
\r\n */\r\n }\r\n
\r\n Payment Successful\r\n
\r\n
\r\n
\r\n Your payment has been successfully processed. However, your payment receipt was not generated. Please click 'OK' to continue.

Please contact us at 876-978-3690-9\r\n with the payment details below.\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Policy Number{policyNumber}
Payment Type{paymentType}
\r\n Billing Name\r\n \r\n {customer.firstName} {customer.lastName}\r\n
\r\n Billing Address\r\n \r\n {customer.address}\r\n
\r\n Order Date\r\n \r\n {orderDate}\r\n
\r\n Order Amount\r\n \r\n {currency} {`$${amount}`}\r\n
\r\n Reference Number\r\n \r\n {referenceNumber}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\n\r\nexport default forwardRef(ReceiptErrorModal);","import { checkKey } from \"../auth\";\r\n\r\n/**\r\n * @param {Object} data\r\n * */\r\n\r\nexport function CreateDocumentAPI(data) {\r\n const endpoint = `Documents/createDocument`;\r\n\r\n let payload = {\r\n \"user_defined_form_id\": data.formId,\r\n \"generate_pdf\": data.shouldGeneratePdf,\r\n \"claim_id\": data.claimId,\r\n \"policy_id\": data.policyId,\r\n \"risk_item_id\": data.riskItemId,\r\n \"transaction_id\": data.transactionId,\r\n };\r\n const reqType = \"post\";\r\n\r\n return checkKey({ endpoint, payload, reqType });\r\n}\r\n","import { addPaymentReminder, removePaymentReminder } from \"api/dNet/PaymentReminder\";\r\nimport { removeRatingCodesFromRisks } from \"helpers/policy\";\r\nimport { drawReceipt } from \"api/dNet/Policies\";\r\nimport SagicorPayment from \"api/SagicorPayment\";\r\nimport Modal from \"components/misc/Modal\";\r\nimport { ERROR, INFO } from \"components/misc/Modal/constants\";\r\nimport { format, isFuture } from \"date-fns\";\r\nimport { getCart } from \"globals/additionalbenefits\";\r\nimport {\r\n\tgetActivePolicy,\r\n\tgetActiveRisk,\r\n\tgetPromoCodesApplied,\r\n\tgetToken,\r\n\tgetTransactionType,\r\n\tgetUser,\r\n\tlogout,\r\n\tsetCurrentUser,\r\n\tlogin,\r\n\tgetActivePolicies,\r\n\tsetActivePolicies,\r\n\tgetPolicyPaymentPlan,\r\n\tsetMissingDocuments,\r\n\tsetTransactionType,\r\n\tsetToken,\r\n\tsetPolicyHolders,\r\n\tsetSelectedSession,\r\n\tgetSelectedSession,\r\n\tsetActivePolicy,\r\n\tgetUserId,\r\n} from \"globals/auth\";\r\nimport { setDefault } from \"globals/claims\";\r\nimport { setConfirmationData } from \"globals/confirmation\";\r\nimport { fullLogout } from \"globals/misc\";\r\nimport { setLoading, setLoadingMessage } from \"globals/overlays\";\r\nimport { clearPaymentForm, getPaymentResponse, getPaymentScheduleData } from \"globals/payments\";\r\nimport { checkExpToken, getNewGlobalToken } from \"helpers/auth\";\r\nimport { AuthNetworkLayer, PolicyHelper, PolicyNetworkLayer } from \"helpers\";\r\nimport { createLog } from \"helpers/log\";\r\nimport {\r\n\tassignReceipt,\r\n\textendPolicy,\r\n\tformatMoney,\r\n\tformatPolicyForRenewal,\r\n\tgenerateExtensionDocuments,\r\n\tgetPaymentScheduleInfo,\r\n} from \"helpers/policy\";\r\nimport React, { useEffect, useRef, useState, useCallback } from \"react\";\r\nimport { useDispatch, useSelector, shallowEqual } from \"react-redux\";\r\nimport { useHistory, useLocation } from \"react-router\";\r\nimport BillingDetails from \"./components/BillingDetails\";\r\nimport PaymentContent from \"./components/PaymentContent\";\r\nimport PaymentDetails from \"./components/PaymentDetails\";\r\nimport ReceiptErrorModal from \"./components/ReceiptErrorModal\";\r\nimport jwtDecoder from \"jwt-decode\";\r\nimport { getChangeOnPremium } from \"globals/policymanager\";\r\nimport \"./PaymentForm.scss\";\r\nimport { PAY_BALANCE, POLICY_MANAGER, QUICK_PAY } from \"pages/RenewPolicy/costants\";\r\nimport { clearPolicyManager, getNewPremium, getPolicyFormInfo, setPolicyManager } from \"globals/policymanager\";\r\nimport changeMarketValue from \"components/misc/PolicyManager/helpers\";\r\nimport { nodeApi } from \"api/Middleware\";\r\nimport { toast } from \"react-toastify\";\r\nimport { isNotEmpty } from \"helpers/misc\";\r\nimport { FILESNEEDED } from \"pages/PolicyManager/constants\";\r\nimport { getBrokerPolicyCreated, getSourceType } from \"globals/renewal\";\r\nimport * as TransactionHelper from \"components/PaymentForm/helpers/index.js\";\r\nimport axios from \"axios\";\r\nimport { noticeNarratives } from \"globals/globalConstants\";\r\nimport { CreateDocumentAPI } from \"helpers/policy/documents\";\r\nconst uuid = require(\"uuid\").v4;\r\n/**\r\n * @typedef {Object} paymentFormValues\r\n * @property {String=} paymentFormValues.nationalId\r\n * @property {String=} paymentFormValues.policyNumber\r\n * @property {String=} paymentFormValues.paymentAmount\r\n * @property {String=} paymentFormValues.paymentPurpose\r\n * @property {String=} paymentFormValues.paymentPurposeDetailed\r\n * @property {String=} paymentFormValues.currencyType\r\n * @property {Boolean=} paymentFormValues.fromRenewalFlow\r\n * @property {Object=} paymentFormValues.codes\r\n * @property {Object=} paymentFormValues.premiumPA_UM\r\n * @property {Object=} paymentFormValues.extensions\r\n */\r\n\r\n/**\r\n * @typedef {Object} billingFormValues\r\n * @property {String=} billingFormValues.firstName\r\n * @property {String=} billingFormValues.lastName\r\n * @property {String=} billingFormValues.email\r\n * @property {String=} billingFormValues.phoneNumber\r\n * @property {String=} billingFormValues.billingAddress\r\n * @property {String=} billingFormValues.country\r\n * @property {String=} billingFormValues.region\r\n * @property {String=} billingFormValues.zip_code\r\n * @property {String=} billingFormValues.cardNumber\r\n * @property {String=} billingFormValues.cardName\r\n * @property {String=} billingFormValues.cardExpiryMonth\r\n * @property {String=} billingFormValues.cardExpiryYear\r\n * @property {String=} billingFormValues.cardCVC\r\n */\r\n\r\n/**\r\n * Contains the logic for the Billing portion of the payment process\r\n * Requires Payment Details to be confirmed before revealing the billing portion\r\n * @param {Object} props\r\n * @param {Object} props.transaction\r\n * @param {React.MutableRefObject} props.persist\r\n */\r\nfunction PaymentForm({ transaction, persist }) {\r\n\tconst dispatch = useDispatch();\r\n\tconst history = useHistory();\r\n\tconst location = useLocation();\r\n\tconst _transaction = useRef({ ...transaction });\r\n\tconst cart = useSelector(getCart, shallowEqual);\r\n\tconst promoCodes = useSelector(getPromoCodesApplied, shallowEqual);\r\n\tconst user = useSelector(getUser, shallowEqual);\r\n\tconst userId = useSelector(getUserId);\r\n\tlet policy = useSelector(getActivePolicy, shallowEqual);\r\n\tconst [policyState, setPolicyState] = useState(policy);\r\n\tconst policies = useSelector(getActivePolicies, shallowEqual);\r\n\tconst paymentResponse = useSelector(getPaymentResponse, shallowEqual);\r\n\tconst paymentScheduleData = useSelector(getPaymentScheduleData, shallowEqual);\r\n\tconst activeRisk = useSelector(getActiveRisk, shallowEqual);\r\n\tconst policyFormInfo = useSelector(getPolicyFormInfo, shallowEqual);\r\n\tconst policyPaymentPlans = useSelector(getPolicyPaymentPlan, shallowEqual);\r\n\tconst token = useSelector(getToken, shallowEqual);\r\n\tconst newPremium = useSelector(getNewPremium, shallowEqual);\r\n\tconst [paymentConfirmed, confirmPayment] = useState(transaction.paymentAmount === \"0.00\" ? false : true);\r\n\tconst [keepBilling, persistBilling] = useState(false);\r\n\tconst [attempts, setAttempts] = useState(0);\r\n\tconst changeOnPremium = useSelector(getChangeOnPremium, shallowEqual);\r\n\tconst sourceType = useSelector(getSourceType, shallowEqual);\r\n\tconst brokerPolicyCreated = useSelector(getBrokerPolicyCreated, shallowEqual);\r\n\r\n\t/** Disable once a successful transaction is processed */\r\n\tconst completedSteps = useRef({\r\n\t\tbilling: null,\r\n\t\treceipt: null,\r\n\t\trenewal: null,\r\n\t\textension: [],\r\n\t\tadditionalPremium: null,\r\n\t\tpaymentSchedule: null,\r\n\t});\r\n\r\n\tif (sourceType === \"Broker\") completedSteps.current.renewal = brokerPolicyCreated;\r\n\r\n\tconst receiptErrorModalRef = useRef();\r\n\r\n\tconst toggleReceiptErrorModalState = {\r\n\t\ttoggleModal: useCallback(() => {\r\n\t\t\tif (receiptErrorModalRef.current) {\r\n\t\t\t\treceiptErrorModalRef.current.toggleModal();\r\n\t\t\t}\r\n\t\t}, [receiptErrorModalRef]),\r\n\t\topenModal: useCallback(() => {\r\n\t\t\tif (receiptErrorModalRef.current) {\r\n\t\t\t\treceiptErrorModalRef.current.openModal();\r\n\t\t\t}\r\n\t\t}, [receiptErrorModalRef]),\r\n\t\tcloseModal: useCallback(() => {\r\n\t\t\tif (receiptErrorModalRef.current) {\r\n\t\t\t\treceiptErrorModalRef.current.closeModal();\r\n\t\t\t}\r\n\t\t}, [receiptErrorModalRef]),\r\n\t};\r\n\r\n\t/** @type {[paymentFormValues, React.Dispatch>]} */\r\n\tconst [paymentDetails, setPaymentDetails] = useState({});\r\n\r\n\t/** @type {[billingFormValues, React.Dispatch>]} */\r\n\tconst [billingDetails, setBillingDetails] = useState({});\r\n\r\n\tconst [isPaymentModalOpen, openPaymentModal] = useState(false);\r\n\tconst [isErrorModalOpen, openErrorModal] = useState(false);\r\n\tconst [isErrorModalOpen2, openErrorModal2] = useState(false);\r\n\tconst [isValidationErrorModalOpen, openValidationErrorModal] = useState(false);\r\n\tconst [error, setError] = useState(\"\");\r\n\tconst [errorTitle, setErrorTitle] = useState(null);\r\n\tconst transactionType = useSelector(getTransactionType, shallowEqual);\r\n\tconst sessionData = useSelector(getSelectedSession, shallowEqual);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (location.pathname === \"/payments\") dispatch(setTransactionType(QUICK_PAY));\r\n\t}, [location.pathname, transactionType, dispatch]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (paymentConfirmed) persistBilling(true);\r\n\t}, [paymentConfirmed]);\r\n\r\n\tasync function validateTrnPolicy(transactionType, nationalId, policyNumber) {\r\n\t\tdispatch(setLoading(true));\r\n\t\tdispatch(setLoadingMessage(\"Just a moment\"));\r\n\t\ttry {\r\n\t\t\tif (transactionType === QUICK_PAY && nationalId && policyNumber) {\r\n\t\t\t\tconst response = await AuthNetworkLayer.getTrnPolicyToken(nationalId.replace(/-/g, \"\"), policyNumber);\r\n\t\t\t\tif (response.success) {\r\n\t\t\t\t\t/** @type {Object} */\r\n\t\t\t\t\tconst data = jwtDecoder(response.data);\r\n\t\t\t\t\tdispatch(setActivePolicies(data.policies));\r\n\t\t\t\t\t// set token for loggedIn user\r\n\t\t\t\t\tdispatch(setCurrentUser(data.users[0].global_name));\r\n\t\t\t\t\tdispatch(setPolicyHolders(data?.users));\r\n\t\t\t\t\tdispatch(login());\r\n\t\t\t\t\t// check for jwt\r\n\t\t\t\t\tconst jwt_auth = process.env.REACT_APP_JWT_AUTHENTICATION;\r\n\t\t\t\t\tif (jwt_auth) {\r\n\t\t\t\t\t\tdispatch(setToken(data.token));\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn data.token;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t} catch (e) {\r\n\t\t\treturn false;\r\n\t\t} finally {\r\n\t\t\tdispatch(setLoading(false));\r\n\t\t}\r\n\t}\r\n\r\n\tasync function sendPaymentConfirmationSms({ amount, currency, policyNumber }) {\r\n\t\tconst userPhoneNumbers = user.phone_numbers;\r\n\t\tif (userPhoneNumbers && userPhoneNumbers.length > 0) {\r\n\t\t\tconst smsPhoneNumber = userPhoneNumbers.find(phone => phone.use_for_sms === true);\r\n\t\t\tif (smsPhoneNumber) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst confirmationResponse = await AuthNetworkLayer.sendPaymentConfirmation(\r\n\t\t\t\t\t\tuserId,\r\n\t\t\t\t\t\tuser.national_id,\r\n\t\t\t\t\t\tsmsPhoneNumber.phone_number,\r\n\t\t\t\t\t\tamount,\r\n\t\t\t\t\t\tcurrency,\r\n\t\t\t\t\t\tpolicyNumber\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (!confirmationResponse.success) {\r\n\t\t\t\t\t\tconsole.error(\"Failed to send payment confirmation SMS:\", confirmationResponse.message);\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error(\"Error sending payment confirmation SMS:\", error.message);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"No phone number available for sending SMS.\");\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconsole.error(\"User has no phone numbers.\");\r\n\t\t}\r\n\t}\r\n\r\n\tasync function validateTrnPolicy2(transactionType, nationalId, policyNumber) {\r\n\t\tdispatch(setLoading(true));\r\n\t\tdispatch(setLoadingMessage(\"Just a moment\"));\r\n\t\ttry {\r\n\t\t\tif (transactionType === QUICK_PAY && nationalId && policyNumber) {\r\n\t\t\t\t// get token\r\n\t\t\t\tconst response = await AuthNetworkLayer.getTrnPolicyToken(nationalId.replace(/-/g, \"\"), policyNumber);\r\n\t\t\t\tif (response.success) {\r\n\t\t\t\t\t/** @type {Object} */\r\n\t\t\t\t\tconst data = jwtDecoder(response.data);\r\n\t\t\t\t\tdispatch(setActivePolicies(data.policies));\r\n\t\t\t\t\tconsole.log(\"Policies: \", data?.policies);\r\n\t\t\t\t\t// set token for loggedIn user\r\n\t\t\t\t\tsetPolicyState(data.policies?.find(p => p.policy.policy_number == policyNumber)?.policy);\r\n\t\t\t\t\tdispatch(setActivePolicy(data.policies?.find(p => p.policy.policy_number == policyNumber)?.policy)); //dispatch(setActivePolicy(policies?.find(p => p.policy.policy_number == policyNumber)?.policy));\r\n\t\t\t\t\tdispatch(setCurrentUser(data.users[0].global_name));\r\n\t\t\t\t\tdispatch(setPolicyHolders(data?.users));\r\n\t\t\t\t\tdispatch(login());\r\n\t\t\t\t\t// check for jwt\r\n\t\t\t\t\tconst jwt_auth = process.env.REACT_APP_JWT_AUTHENTICATION;\r\n\t\t\t\t\tif (jwt_auth) {\r\n\t\t\t\t\t\tdispatch(setToken(data.token));\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn data.token;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (response.message === \"Unable to validate trn and policy number.\") {\r\n\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn 2;\r\n\t\t} catch (e) {\r\n\t\t\treturn 3;\r\n\t\t} finally {\r\n\t\t\tdispatch(setLoading(false));\r\n\t\t}\r\n\t}\r\n\r\n\tconsole.log(\"policyStae\", policyState);\r\n\r\n\tasync function makePayment() {\r\n\t\topenPaymentModal(false);\r\n\t\tdispatch(setLoading(true));\r\n\t\tlet isInFlow;\r\n\r\n\t\tconst amount =\r\n\t\t\t_transaction.current.paymentAmount === null || _transaction.current.paymentAmount === \"0.00\"\r\n\t\t\t\t? paymentDetails.paymentAmount\r\n\t\t\t\t: _transaction.current.paymentAmount;\r\n\t\tconst policyNumber =\r\n\t\t\t_transaction.current.policyNumber === null ? paymentDetails.policyNumber : _transaction.current.policyNumber;\r\n\t\tconst currency =\r\n\t\t\t_transaction.current.currency === null ? paymentDetails.currencyType : _transaction.current.currency;\r\n\r\n\t\tconst reference =\r\n\t\t\tnew Date().getDay() +\r\n\t\t\t\"\" +\r\n\t\t\tnew Date().getUTCMonth() +\r\n\t\t\t\"\" +\r\n\t\t\tnew Date().getFullYear() +\r\n\t\t\tnew Date().getMilliseconds() +\r\n\t\t\t\"-\" +\r\n\t\t\tpolicyNumber;\r\n\r\n\t\tlet policyManagerData = { fullname: \"\", email: \"\", registrationNumbers: [], certificates: [] };\r\n\r\n\t\t// active policies should always be updated=\r\n\t\t//if (transactionType === QUICK_PAY) setPolicyState(olicies?.find(p => p.policy.policy_number == policyNumber)?.policy));\r\n\r\n\t\tconst paymentData = {\r\n\t\t\tapiOperation: \"PAY\",\r\n\t\t\torder: {\r\n\t\t\t\tamount: `${amount.replace(/[, ]+/g, \"\").trim()}`,\r\n\t\t\t\tcurrency: `${currency}`,\r\n\t\t\t\treference: `${reference}`,\r\n\t\t\t},\r\n\t\t\tcustomer: {\r\n\t\t\t\tfirstName: billingDetails.firstName,\r\n\t\t\t\tlastName: billingDetails.lastName,\r\n\t\t\t},\r\n\t\t\tsession: { id: `${paymentResponse?.session?.id}` },\r\n\t\t\tsourceOfFunds: { type: \"CARD\" },\r\n\t\t\ttransaction: {},\r\n\t\t\tother: {\r\n\t\t\t\tpolicyPrefix: policyState.policy_prefix,\r\n\t\t\t\tpolicyNumber: paymentDetails.policyNumber,\r\n\t\t\t\tbillingAddress: billingDetails.billingAddress,\r\n\t\t\t\tpurpose: paymentDetails.paymentPurpose,\r\n\t\t\t},\r\n\t\t};\r\n\t\tlet files = [];\r\n\t\tlet filesNeeded = [];\r\n\t\tlet renewalResult = {};\r\n\r\n\t\tlet insuranceTransactionResponse;\r\n\t\tlet transactionStatus;\r\n\t\tlet transactionReason;\r\n\t\tlet isPaymentSuccessful = completedSteps.current.billing ? true : false;\r\n\t\tlet responseAfterUpdate = null;\r\n\t\tlet receiptResponse;\r\n\r\n\t\ttry {\r\n\t\t\tif (!completedSteps.current.billing) {\r\n\t\t\t\tdispatch(setLoadingMessage(\"Processing payment\"));\r\n\t\t\t\tlet transactionResponse = await checkExpToken({\r\n\t\t\t\t\tendpoint: `/payments`,\r\n\t\t\t\t\tpayload: paymentData,\r\n\t\t\t\t\treqType: \"put\",\r\n\t\t\t\t});\r\n\t\t\t\tif (!transactionResponse?.success || transactionResponse?.result === \"ERROR\") {\r\n\t\t\t\t\tif (transactionResponse?.messageTitle) setErrorTitle(transactionResponse?.messageTitle);\r\n\r\n\t\t\t\t\tthrow new Error(`${transactionResponse?.message}.`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tisPaymentSuccessful = transactionResponse?.success;\r\n\r\n\t\t\t\tif (isPaymentSuccessful) {\r\n\t\t\t\t\ttoast.success(`Payment of ${currency} ${amount} was successfully charged to your card.`, {\r\n\t\t\t\t\t\tposition: \"bottom-left\",\r\n\t\t\t\t\t\tautoClose: 15000,\r\n\t\t\t\t\t});\r\n\t\t\t\t\tsendPaymentConfirmationSms({ amount, currency, policyNumber: paymentDetails.policyNumber });\r\n\t\t\t\t} else if (!isPaymentSuccessful) {\r\n\t\t\t\t\ttoast.error(\r\n\t\t\t\t\t\t`Oh no, your payment failed. Please double check your payment information or contact your bank. `,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tposition: \"bottom-left\",\r\n\t\t\t\t\t\t\tautoClose: 15000,\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\t//Prevent repeat billing if subsequent actions fail\r\n\t\t\t\tcompletedSteps.current = { ...completedSteps?.current, billing: transactionResponse };\r\n\t\t\t}\r\n\r\n\t\t\tif (transactionType === \"update-your-policy\") {\r\n\t\t\t\tfiles.push({ file_name: \"Receipt.pdf\", data: completedSteps?.current?.billing?.receipt, type: \"Receipt\" });\r\n\t\t\t} else {\r\n\t\t\t\tfiles.push({ filename: \"Receipt.pdf\", fileContent: completedSteps?.current?.billing?.receipt });\r\n\t\t\t}\r\n\r\n\t\t\t//If policy number exists, transaction should not be empty\r\n\t\t\t//checks the transction type if it exist or not still run this because of quick payments\r\n\t\t\tif (transactionType !== QUICK_PAY) {\r\n\t\t\t\tisInFlow = true;\r\n\r\n\t\t\t\t//checks what Payment Type was selected\r\n\t\t\t\tif (\r\n\t\t\t\t\tpaymentDetails.paymentPurpose.toLowerCase() === \"renewal\" ||\r\n\t\t\t\t\tpaymentDetails?.paymentPurpose === \"New Policy\"\r\n\t\t\t\t) {\r\n\t\t\t\t\tconst handleRenewalTransactionArgumentObject = {\r\n\t\t\t\t\t\tuser,\r\n\t\t\t\t\t\tpolicy: policyState,\r\n\t\t\t\t\t\tformatPolicyForRenewal,\r\n\t\t\t\t\t\tPolicyHelper,\r\n\t\t\t\t\t\t_transaction,\r\n\t\t\t\t\t\tpaymentDetails,\r\n\t\t\t\t\t\tcompletedSteps,\r\n\t\t\t\t\t\tdispatch,\r\n\t\t\t\t\t\tsetLoadingMessage,\r\n\r\n\t\t\t\t\t\tcart,\r\n\t\t\t\t\t\tpromoCodes,\r\n\r\n\t\t\t\t\t\tpolicyNumber,\r\n\t\t\t\t\t\trenewalResult,\r\n\t\t\t\t\t\tgetPaymentScheduleInfo,\r\n\t\t\t\t\t\taddPaymentReminder,\r\n\r\n\t\t\t\t\t\tfiles,\r\n\t\t\t\t\t\tresponseAfterUpdate,\r\n\t\t\t\t\t\tactiveRisk,\r\n\t\t\t\t\t\t/* assignReceipt,\r\n\t\t\t\t\t\tdrawReceipt,\r\n\t\t\t\t\t\tcreateLog,\r\n\t\t\t\t\t\ttoggleReceiptErrorModalState,\r\n\t\t\t\t\t\tcheckExpToken,\r\n\t\t\t\t\t\ttransactionType,\r\n\t\t\t\t\t\treference,\r\n\t\t\t\t\t\tbillingDetails,\r\n\t\t\t\t\t\terror,\r\n\t\t\t\t\t\tcurrency,\r\n\t\t\t\t\t\ttmpToken,\r\n\t\t\t\t\t\tamount,\r\n\t\t\t\t\t\ttoast,\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tinsuranceTransactionResponse = await TransactionHelper.handleRenewalTransaction(\r\n\t\t\t\t\t\thandleRenewalTransactionArgumentObject\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (paymentDetails.paymentPurpose.toLowerCase() === \"pay balance\") {\r\n\t\t\t\t\tconst handlePayBalanceTransactionArgumentObject = {\r\n\t\t\t\t\t\tdispatch,\r\n\t\t\t\t\t\tsetLoadingMessage,\r\n\t\t\t\t\t\tcompletedSteps,\r\n\t\t\t\t\t\tpolicy: policyState,\r\n\t\t\t\t\t\tuser,\r\n\t\t\t\t\t\tpolicyNumber,\r\n\r\n\t\t\t\t\t\tgetPaymentScheduleInfo,\r\n\t\t\t\t\t\t_transaction,\r\n\t\t\t\t\t\tgenerateExtensionDocuments,\r\n\t\t\t\t\t\textendPolicy,\r\n\t\t\t\t\t\tpaymentScheduleData,\r\n\t\t\t\t\t\tisFuture,\r\n\t\t\t\t\t\taddPaymentReminder,\r\n\t\t\t\t\t\tremovePaymentReminder,\r\n\r\n\t\t\t\t\t\tfiles,\r\n\t\t\t\t\t\tresponseAfterUpdate,\r\n\t\t\t\t\t\t/* assignReceipt,\r\n\t\t\t\t\t\tpaymentDetails,\r\n\t\t\t\t\t\tdrawReceipt,\r\n\t\t\t\t\t\ttoggleReceiptErrorModalState,\r\n\t\t\t\t\t\tcreateLog,\r\n\t\t\t\t\t\ttransactionType,\r\n\t\t\t\t\t\treference,\r\n\t\t\t\t\t\terror,\r\n\t\t\t\t\t\tamount,\r\n\t\t\t\t\t\tbillingDetails,\r\n\t\t\t\t\t\tcurrency,\r\n\t\t\t\t\t\ttmpToken,\r\n\t\t\t\t\t\tcheckExpToken,\r\n\t\t\t\t\t\ttoast,\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t};\r\n\t\t\t\t\tinsuranceTransactionResponse = await TransactionHelper.handlePayBalanceTransaction(\r\n\t\t\t\t\t\thandlePayBalanceTransactionArgumentObject\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (paymentDetails.paymentPurpose.toLowerCase() === \"additional premium\") {\r\n\t\t\t\t\tconst handleAdditionalPremiumTransactionArgumentObject = {\r\n\t\t\t\t\t\tpolicyFormInfo,\r\n\t\t\t\t\t\tactiveRisk,\r\n\t\t\t\t\t\tchangeMarketValue,\r\n\r\n\t\t\t\t\t\tpolicy: policyState,\r\n\t\t\t\t\t\tchangeOnPremium,\r\n\r\n\t\t\t\t\t\tpolicyPaymentPlans,\r\n\t\t\t\t\t\tsetError,\r\n\t\t\t\t\t\topenErrorModal2,\r\n\t\t\t\t\t\tuser,\r\n\t\t\t\t\t\tPolicyNetworkLayer,\r\n\t\t\t\t\t\tcompletedSteps,\r\n\t\t\t\t\t\t/* assignReceipt,\r\n\t\t\t\t\t\tpaymentDetails,\r\n\t\t\t\t\t\t,\r\n\t\t\t\t\t\tdrawReceipt,\r\n\t\t\t\t\t\ttoggleReceiptErrorModalState,\r\n\t\t\t\t\t\tcreateLog,\r\n\t\t\t\t\t\ttransactionType,\r\n\t\t\t\t\t\treference,\r\n\t\t\t\t\t\terror,\r\n\t\t\t\t\t\tcheckExpToken,\r\n\t\t\t\t\t\tamount,\r\n\t\t\t\t\t\tbillingDetails,\r\n\t\t\t\t\t\tpolicyNumber,\r\n\t\t\t\t\t\tcurrency,\r\n\t\t\t\t\t\ttmpToken, */\r\n\t\t\t\t\t\tdispatch,\r\n\t\t\t\t\t\tsetLoadingMessage,\r\n\t\t\t\t\t\ttoast,\r\n\t\t\t\t\t\tfilesNeeded,\r\n\t\t\t\t\t\tFILESNEEDED,\r\n\t\t\t\t\t\tformatMoney,\r\n\t\t\t\t\t\tnewPremium,\r\n\t\t\t\t\t\tpolicyManagerData,\r\n\t\t\t\t\t\tisNotEmpty,\r\n\t\t\t\t\t\tnodeApi,\r\n\t\t\t\t\t\tfiles,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tinsuranceTransactionResponse = await TransactionHelper.handleAdditionalPremiumTransaction(\r\n\t\t\t\t\t\thandleAdditionalPremiumTransactionArgumentObject\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//Should not be an else\r\n\t\t\tif (completedSteps.current.billing) {\r\n\t\t\t\t// Create receipt in underwriter\r\n\r\n\t\t\t\tlet receipt;\r\n\t\t\t\tlet successful = completedSteps.current.receipt ? true : false;\r\n\t\t\t\tlet count = 0;\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\treceipt = assignReceipt({\r\n\t\t\t\t\t\tpolicy: policyState,\r\n\t\t\t\t\t\tglobal_name_id: user.userId,\r\n\t\t\t\t\t\ttotal: paymentDetails.paymentAmount,\r\n\t\t\t\t\t\tpremiumPA_UM: paymentDetails.premiumPA_UM,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (!completedSteps.current.receipt) {\r\n\t\t\t\t\t\twhile (count < 2 && !receiptResponse) {\r\n\t\t\t\t\t\t\treceiptResponse = await drawReceipt(receipt);\r\n\t\t\t\t\t\t\tcount++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!receiptResponse || !receiptResponse?.success) {\r\n\t\t\t\t\t\t\tcompletedSteps.current.receipt = receiptResponse;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcompletedSteps.current.receipt = receiptResponse;\r\n\t\t\t\t\t\t\tsuccessful = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//\ttoggleReceiptErrorModalState.openModal();\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tcreateLog({\r\n\t\t\t\t\t\ttrn: user?.national_id,\r\n\t\t\t\t\t\ttype: `${transactionType}-Paymentform-DrawReceipt`,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\treceiptNum: reference,\r\n\t\t\t\t\t\t\treceipt: receipt,\r\n\t\t\t\t\t\t\tfilesGenerated: files?.map(f => f.filename),\r\n\t\t\t\t\t\t\treceiptResponse,\r\n\t\t\t\t\t\t\tCount: count,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\terrors: { message: error || !receiptResponse?.success ? receiptResponse?.error_message : \"\" },\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet confirmationResult;\r\n\t\t\t\tif (transactionType === QUICK_PAY || !successful)\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tconfirmationResult = await checkExpToken({\r\n\t\t\t\t\t\t\tendpoint: \"/email/quickpay\",\r\n\t\t\t\t\t\t\tpayload: {\r\n\t\t\t\t\t\t\t\tamount: `${amount.replace(/[, ]+/g, \"\").trim()}`,\r\n\t\t\t\t\t\t\t\treceipt_number: `${reference}`,\r\n\t\t\t\t\t\t\t\tname: `${billingDetails.firstName} ${billingDetails.lastName}`,\r\n\t\t\t\t\t\t\t\temail: billingDetails.email,\r\n\t\t\t\t\t\t\t\tphone: billingDetails.phoneNumber,\r\n\t\t\t\t\t\t\t\tpolicy_number: policyNumber,\r\n\t\t\t\t\t\t\t\ttype: paymentDetails.paymentPurpose,\r\n\t\t\t\t\t\t\t\tcurrency: currency,\r\n\t\t\t\t\t\t\t\tsuccessful: successful,\r\n\t\t\t\t\t\t\t\ttransaction_type: transactionType,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tconfirmationResult.message = e.message;\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\tcreateLog({\r\n\t\t\t\t\t\t\ttrn: user?.national_id,\r\n\t\t\t\t\t\t\ttype: `${transactionType}-Paymentform-Confirmation`,\r\n\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\tconfirmationResult,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\terrors: { message: error || !confirmationResult?.success ? confirmationResult?.message : \"\" },\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst getHomePolicyDocuments = async () => {\r\n\t\t\t\tconst userDefinedFormIds = {\r\n\t\t\t\t\t826: \"Average Clause\",\r\n\r\n\t\t\t\t\t638: \"Fungus Mildew & Mold Exclusion\",\r\n\r\n\t\t\t\t\t801: \"Mortgagee Clause - Non Motor\",\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet riskId;\r\n\t\t\t\tconst keys = Object.keys(userDefinedFormIds);\r\n\r\n\t\t\t\tfor (const key of keys) {\r\n\t\t\t\t\triskId = null;\r\n\r\n\t\t\t\t\tif (key == \"801\") {\r\n\t\t\t\t\t\tfor (let i = 0; i < policyState?.risks?.length; i++) {\r\n\t\t\t\t\t\t\tif (!policyState?.risks[i]?.mortgagees?.length) continue;\r\n\r\n\t\t\t\t\t\t\triskId = policyState?.risks[i].risk_id;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst createDocumentAPIPayload = {\r\n\t\t\t\t\t\tformId: parseInt(key),\r\n\t\t\t\t\t\tshouldGeneratePdf: true,\r\n\t\t\t\t\t\tclaimId: null,\r\n\t\t\t\t\t\tpolicyId: policyState.policy_id,\r\n\t\t\t\t\t\triskItemId: riskId,\r\n\t\t\t\t\t\ttransactionId: completedSteps.current.renewal?.transaction_id,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tconst homePolicyFileResponse = await CreateDocumentAPI(createDocumentAPIPayload);\r\n\r\n\t\t\t\t\t\tif (homePolicyFileResponse?.success) {\r\n\t\t\t\t\t\t\tconst file = homePolicyFileResponse?.file;\r\n\t\t\t\t\t\t\tconst fileName = file?.description;\r\n\t\t\t\t\t\t\tfiles.push({ filename: fileName + \".pdf\", fileContent: file?.data });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tconsole.log(\"Error: \", e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tif (\r\n\t\t\t\tpaymentDetails.paymentPurpose.toLowerCase() === \"renewal\" &&\r\n\t\t\t\tcompletedSteps.current.renewal &&\r\n\t\t\t\tpolicy.department_class.toLowerCase() === \"fire\"\r\n\t\t\t) {\r\n\t\t\t\tawait getHomePolicyDocuments();\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tsetError(`${e.message}`);\r\n\t\t\t//renewalResult.success = false;\r\n\t\t\t//renewalResult.error_message = `An error occurred. ${e.message}`;\r\n\t\t\tsetAttempts(attempts + 1);\r\n\t\t\tdispatch(setLoading(false));\r\n\t\t\topenErrorModal(true);\r\n\t\t\treturn;\r\n\t\t} finally {\r\n\t\t\tif (isPaymentSuccessful) {\r\n\t\t\t\tconst source = transactionType === QUICK_PAY ? \"Quick Pay\" : \"Web\";\r\n\t\t\t\tconst sessionType =\r\n\t\t\t\t\ttransactionType === QUICK_PAY\r\n\t\t\t\t\t\t? paymentDetails.paymentPurpose.toLowerCase()\r\n\t\t\t\t\t\t: paymentDetails.paymentPurpose.toLowerCase() === \"additional premium\" && paymentDetails.newMarketValue\r\n\t\t\t\t\t\t? paymentDetails.paymentPurpose.toLowerCase()\r\n\t\t\t\t\t\t: transactionType;\r\n\r\n\t\t\t\t//save session payload\r\n\t\t\t\tconst saveSessionPayload = {\r\n\t\t\t\t\tuser,\r\n\t\t\t\t\tpolicy: policyState,\r\n\t\t\t\t\tpaymentForm: {\r\n\t\t\t\t\t\t...paymentData,\r\n\t\t\t\t\t\tpaymentAmount: amount.replace(/[, ]+/g, \"\").trim(),\r\n\t\t\t\t\t\treceipt_no: completedSteps?.current?.receipt?.receipt_number,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsession_type: sessionType,\r\n\t\t\t\t\treceipt_method: \"EMAIL\",\r\n\t\t\t\t\twas_broker_policy: sourceType === \"Broker\",\r\n\t\t\t\t\tbranch: { title: \"AGIC Online\" },\r\n\t\t\t\t\treceiptFailed: !completedSteps?.current?.receipt,\r\n\t\t\t\t\tsource: source,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t//Paymentdetails payload\r\n\t\t\t\tconst savePaymentDetailsPayload = {\r\n\t\t\t\t\tsession_id: \"\",\r\n\t\t\t\t\treceipt_amount: amount.replace(/[, ]+/g, \"\").trim(),\r\n\t\t\t\t\tpaymentmethod: \"Credit card\",\r\n\t\t\t\t\tcurrency: \"JMD\",\r\n\t\t\t\t\treceipt_no: completedSteps?.current?.receipt?.receipt_number,\r\n\t\t\t\t\trate_of_exchange: /* p.currency === \"JMD\" ? */ \"1\",\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet payBalanceResponse = {};\r\n\r\n\t\t\t\tif (transactionType === PAY_BALANCE && insuranceTransactionResponse)\r\n\t\t\t\t\tpayBalanceResponse = insuranceTransactionResponse?.findLast(term => term);\r\n\r\n\t\t\t\tif (!payBalanceResponse) payBalanceResponse = completedSteps.current.extension?.findLast(term => term);\r\n\r\n\t\t\t\ttransactionStatus =\r\n\t\t\t\t\ttransactionType === QUICK_PAY\r\n\t\t\t\t\t\t? \"Unknown\"\r\n\t\t\t\t\t\t: payBalanceResponse?.success /*<- Paybalance check*/ || insuranceTransactionResponse?.success\r\n\t\t\t\t\t\t? \"SUCCESS\"\r\n\t\t\t\t\t\t: \"FAILED\";\r\n\r\n\t\t\t\ttransactionReason =\r\n\t\t\t\t\ttransactionType === QUICK_PAY\r\n\t\t\t\t\t\t? \"Awaiting action from Telebranch\"\r\n\t\t\t\t\t\t: payBalanceResponse?.success || insuranceTransactionResponse?.success\r\n\t\t\t\t\t\t? \"Transaction was successful\"\r\n\t\t\t\t\t\t: payBalanceResponse?.error_message /*<- Paybalance check*/ ??\r\n\t\t\t\t\t\t completedSteps.current?.renewal?.error_message ??\r\n\t\t\t\t\t\t completedSteps.current.additionalPremium;\r\n\r\n\t\t\t\tconst sessionUpdatePayload = {\r\n\t\t\t\t\tsession_id: \"\",\r\n\t\t\t\t\tfields_to_update: {\r\n\t\t\t\t\t\treceipt_no: completedSteps?.current?.receipt?.receipt_number,\r\n\t\t\t\t\t\tstatus: \"COMPLETED\",\r\n\t\t\t\t\t\tcashier_user_id: \"MW\",\r\n\t\t\t\t\t\treceipt_amount: amount.replace(/[, ]+/g, \"\").trim(),\r\n\t\t\t\t\t\tpayment_method: \"Credit Card\",\r\n\t\t\t\t\t\tpayment_date: format(new Date(), \"yyyy-MM-dd HH:mm:ss\"),\r\n\t\t\t\t\t\ttransaction_status: transactionStatus,\r\n\t\t\t\t\t\ttransaction_reason: transactionReason,\r\n\t\t\t\t\t\tactivePolicy: policyState,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst payload = {\r\n\t\t\t\t\tsaveSessionPayload,\r\n\t\t\t\t\tsavePaymentDetailsPayload,\r\n\t\t\t\t\tsessionUpdatePayload,\r\n\t\t\t\t\tsessionTracking: {\r\n\t\t\t\t\t\tdispatch,\r\n\t\t\t\t\t\tsessionData,\r\n\t\t\t\t\t\tsetSelectedSession,\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconsole.log(\"sessionData: \", sessionData);\r\n\t\t\t\tconst savePaymentActivityResponse = await PolicyNetworkLayer.savePaymentActivity(payload);\r\n\t\t\t\tconsole.log(\"sessionData 2: \", sessionData);\r\n\t\t\t}\r\n\r\n\t\t\tdispatch(setLoading(false));\r\n\t\t\tcreateLog({\r\n\t\t\t\ttrn: user?.national_id,\r\n\t\t\t\ttype: `${transactionType}-PaymentForm`,\r\n\t\t\t\tdata: { receiptNum: reference, filesGenerated: files.map(f => f.filename), renewalResult },\r\n\t\t\t\terrors: { message: error || !renewalResult?.success ? renewalResult?.error_message : \"\" },\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t\tif (transactionType === POLICY_MANAGER) {\r\n\t\t\t\tdispatch(clearPolicyManager());\r\n\t\t\t\tdispatch(setPolicyManager(policyManagerData));\r\n\r\n\t\t\t\tdispatch(setMissingDocuments(policy.missing_documents));\r\n\r\n\t\t\tdispatch(\r\n\t\t\t\tsetConfirmationData({\r\n\t\t\t\t\treceiptNum: reference,\r\n\t\t\t\t\tresponseAfterUpdate,\r\n\t\t\t\t\tbillingDetails,\r\n\t\t\t\t\tpaymentDetails,\r\n\t\t\t\t\tisInFlow: isInFlow,\r\n\t\t\t\t\tfiles,\r\n\t\t\t\t})\r\n\t\t\t);\r\n\r\n\t\t\thistory.replace(\"success-page\");\r\n\t\t} else {\r\n\t\t\t// not a real logout - block from reentering the flow\r\n\t\t\tdispatch(fullLogout());\r\n\t\t\t// reset the wasEmailSent variable located in claimsStore ( consider relocating)\r\n\t\t\tdispatch(setDefault());\r\n\r\n\t\t\tlet missingDocs = policyState?.missing_documents\r\n\t\t\t\t? policyState?.missing_documents.filter(narrative => {\r\n\t\t\t\t\t\treturn !noticeNarratives.includes(narrative.code);\r\n\t\t\t\t })\r\n\t\t\t\t: [];\r\n\r\n\t\t\tdispatch(setMissingDocuments(missingDocs));\r\n\t\t\tdispatch(\r\n\t\t\t\tsetConfirmationData({\r\n\t\t\t\t\treceiptNum: reference,\r\n\t\t\t\t\tresponseAfterUpdate,\r\n\t\t\t\t\tbillingDetails,\r\n\t\t\t\t\tpaymentDetails: { ...paymentDetails, isHomePolicy: policyState.department_class === \"Fire\" },\r\n\t\t\t\t\tisInFlow: isInFlow,\r\n\t\t\t\t\tfiles,\r\n\t\t\t\t})\r\n\t\t\t);\r\n\r\n\t\t\tif (completedSteps.current.receipt) history.push(\"/confirmation\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Function to mask the middle 8 digits of a card number\r\n\t * @param {String} cardnumber\r\n\t */\r\n\tfunction maskCreditCard(cardnumber) {\r\n\t\tconst first4 = cardnumber.substring(0, 4);\r\n\t\tconst last5 = cardnumber.substring(cardnumber.length - 5);\r\n\t\tconst mask = cardnumber.substring(4, cardnumber.length - 5).replace(/\\d/g, \"x\");\r\n\t\treturn first4 + mask + last5;\r\n\t}\r\n\r\n\t/**\r\n\t * Shows a new payment error\r\n\t * @param {String} message\r\n\t */\r\n\tfunction showError(message) {\r\n\t\tsetError(message);\r\n\t\topenErrorModal(true);\r\n\t}\r\n\r\n\t/**\r\n\t * Shows a new TRN/Policy No. validation error\r\n\t * @param {String} message\r\n\t */\r\n\tfunction showValidationError(message) {\r\n\t\tsetError(message);\r\n\t\topenValidationErrorModal(true);\r\n\t}\r\n\r\n\t/** Simple conditional check to redirect to home if session is to be ended */\r\n\tfunction handleModalClose() {}\r\n\r\n\tconst closeModal = () => {\r\n\t\topenErrorModal(false);\r\n\t\tsetErrorTitle(null);\r\n\t};\r\n\r\n\tconst closeValidationModal = () => {\r\n\t\topenValidationErrorModal(false);\r\n\t};\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Please enter your details to make a payment

\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t{keepBilling && (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\r\n\t\t\t\r\n\t\t\t\t\t)\r\n\t\t\t\t}\r\n\t\t\t\tsubText=\"Your details will not be stored on our website and are only displayed for verification purposes. By\r\n\t\t\t\tsubmitting this payment, you agree to our Terms of Service.\"\r\n\t\t\t\tprimaryLabel=\"Accept\"\r\n\t\t\t\tprimaryCallback={makePayment}\r\n\t\t\t\tsecondaryLabel=\"Cancel\"\r\n\t\t\t\tsecondaryCallback={() => openPaymentModal(false)}\r\n\t\t\t/>\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t {\r\n\t\t\t\t\tdispatch(fullLogout());\r\n\t\t\t\t\thistory.push(\"/payments-landing\");\r\n\t\t\t\t}}\r\n\t\t\t\tafterClose={handleModalClose}\r\n\t\t\t/>\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default PaymentForm;\r\n","import { checkExpToken } from \"helpers/auth\";\r\nimport { removeRatingCodesFromRisks } from \"helpers/policy\";\r\n\r\nasync function handleRenewalTransaction({\r\n user,\r\n policy,\r\n formatPolicyForRenewal,\r\n PolicyHelper,\r\n _transaction,\r\n paymentDetails,\r\n completedSteps,\r\n dispatch,\r\n setLoadingMessage,\r\n\r\n cart,\r\n promoCodes,\r\n policyNumber,\r\n renewalResult,\r\n getPaymentScheduleInfo,\r\n addPaymentReminder,\r\n files,\r\n responseAfterUpdate,\r\n activeRisk\r\n /* assignReceipt,\r\n drawReceipt,\r\n createLog,\r\n toggleReceiptErrorModalState,\r\n checkExpToken,\r\n transactionType,\r\n reference,\r\n billingDetails,\r\n error,\r\n currency,\r\n tmpToken,\r\n amount,\r\n toast,\r\n */\r\n}) {\r\n dispatch(setLoadingMessage(\"Renewing And Updating Policy\"));\r\n\r\n // get existing extensions\r\n let _extensions = policy.extensions;\r\n if (_transaction.current?.extensions !== undefined)\r\n _extensions.push(...(_transaction.current?.extensions || []));\r\n\r\n let { _cart, _manualExtensions, _policy } = formatPolicyForRenewal({\r\n policy,\r\n cart,\r\n extensions: _extensions,\r\n promoCodes,\r\n });\r\n\r\n const updatedPolicy = PolicyHelper.removeMortgagee({ ..._policy });\r\n\r\n\r\n\r\n /* 1. To be removed from this file and placed in payment Form file */\r\n // Create receipt in underwriter\r\n /* let receipt = assignReceipt(policy, _transaction.current.paymentAmount, paymentDetails.premiumPA_UM);\r\n let successful = false;\r\n if (!completedSteps.current.receipt) {\r\n let receiptResponse;\r\n let count = 0;\r\n\r\n try {\r\n while (count < 2 && !receiptResponse) {\r\n receiptResponse = await drawReceipt( receipt);\r\n count++;\r\n }\r\n if (!receiptResponse || !receiptResponse?.success) {\r\n toggleReceiptErrorModalState.openModal();\r\n successful = false;\r\n } else {\r\n completedSteps.current.receipt = receiptResponse;\r\n successful = true;\r\n }\r\n } catch (e) {\r\n toggleReceiptErrorModalState.openModal();\r\n } finally {\r\n createLog({\r\n trn: user?.national_id,\r\n type: `${transactionType}-Paymentform-DrawReceipt`,\r\n data: {\r\n receiptNum: reference,\r\n filesGenerated: files.map(f => f.filename),\r\n receiptResponse,\r\n Count: count,\r\n },\r\n errors: { message: error || !receiptResponse?.success ? receiptResponse?.error_message : \"\" },\r\n });\r\n try {\r\n if (!successful) {\r\n await checkExpToken({\r\n endpoint: \"/email/quickpay\",\r\n payload: {\r\n amount: `${amount.replace(/[, ]+/g, \"\").trim()}`,\r\n receipt_number: `${reference}`,\r\n name: `${billingDetails.firstName} ${billingDetails.lastName}`,\r\n email: billingDetails.email,\r\n phone: billingDetails.phoneNumber,\r\n policy_number: policyNumber,\r\n type: paymentDetails.paymentPurpose,\r\n currency: currency,\r\n successful: successful,\r\n },\r\n \r\n });\r\n }\r\n } catch (e) {\r\n toast.error(e.message);\r\n }\r\n }\r\n } */\r\n /* 1. Ends here */\r\n\r\n if (!completedSteps.current.renewal?.success) {\r\n const newCodes = _transaction.current.codes;\r\n\r\n const vehicleOver5MillionMarketValueLimit = 5000000;\r\n\r\n const currentYear = new Date().getFullYear();\r\n\r\n const newSumInsured = activeRisk?.sum_insured;\r\n\r\n const ratingCodeToRemove = 702\r\n\r\n let _newRisks;\r\n let newlyUpdatedPolicy = {};\r\n if (newSumInsured < vehicleOver5MillionMarketValueLimit\r\n || currentYear - activeRisk?.year > 5) {\r\n const risks = [...[activeRisk]];\r\n\r\n _newRisks = removeRatingCodesFromRisks(risks, [ratingCodeToRemove]);\r\n\r\n if (_newRisks[0]?.rates)\r\n _newRisks[0] = [{ ..._newRisks[0], rates: _newRisks[0]?.rates.filter(rate => rate.code != ratingCodeToRemove) }];\r\n\r\n newlyUpdatedPolicy = { ...updatedPolicy, risks: _newRisks.flat() }\r\n }\r\n else {\r\n newlyUpdatedPolicy = updatedPolicy;\r\n }\r\n\r\n renewalResult = await PolicyHelper.renewAndUpdatePolicy(\r\n\r\n newlyUpdatedPolicy,\r\n user,\r\n newCodes,\r\n {\r\n total: _transaction.current.paymentAmount,\r\n paymentPlan: _transaction.current.paymentType,\r\n extensions: _transaction.current.extensions,\r\n premiumPA_UM: _transaction.current.premiumPA_UM,\r\n },\r\n completedSteps\r\n );\r\n\r\n completedSteps.current.renewal = renewalResult;\r\n if (!renewalResult?.success) throw new Error(`Failed to renew policy. ${renewalResult?.error_message}`);\r\n\r\n }\r\n\r\n dispatch(setLoadingMessage(\"Generating Policy Documents\"));\r\n files.push(\r\n ...await PolicyHelper.generateDocuments(\r\n\r\n updatedPolicy,\r\n user,\r\n completedSteps.current.renewal,\r\n paymentDetails\r\n )\r\n );\r\n\r\n //@todo add specific addExtension function for additional benefits\r\n if (_transaction.current.paymentType?.payment_terms?.length > 1) {\r\n /** generate the payment schedule for renewal */\r\n let _terms = _transaction.current.paymentType?.payment_terms.map(term => ({ ...term, status: \"-\" }));\r\n _terms[0].status = \"Paid\";\r\n\r\n const scheduleResult = await getPaymentScheduleInfo(\r\n _terms,\r\n user,\r\n // @ts-ignore\r\n policy,\r\n\r\n\r\n );\r\n files.push({\r\n filename: \"payment-schedule.pdf\",\r\n fileContent: scheduleResult,\r\n // mime_type: \"application/pdf\",\r\n });\r\n\r\n let nextTerm = _transaction.current.paymentType?.payment_terms.find(term => !term.transaction_id);\r\n\r\n\r\n // if not full payment add reminder\r\n addPaymentReminder(\r\n {\r\n policynum: policyNumber,\r\n customer: `${user.first_name} ${user.last_name}`,\r\n email: `${user.email_address}`,\r\n phone: user.phone_numbers?.[0].phone_number,\r\n dueDate: nextTerm.effective_date,\r\n reminder_type: \"paybalance\",\r\n },\r\n\r\n );\r\n }\r\n responseAfterUpdate = { ...completedSteps.current.renewal };\r\n\r\n return renewalResult;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nasync function handlePayBalanceTransaction({\r\n dispatch,\r\n setLoadingMessage,\r\n completedSteps,\r\n policy,\r\n user,\r\n policyNumber,\r\n\r\n getPaymentScheduleInfo,\r\n _transaction,\r\n generateExtensionDocuments,\r\n extendPolicy,\r\n paymentScheduleData,\r\n isFuture,\r\n addPaymentReminder,\r\n removePaymentReminder,\r\n\r\n files,\r\n responseAfterUpdate,\r\n /* assignReceipt,\r\n paymentDetails,\r\n drawReceipt,\r\n toggleReceiptErrorModalState,\r\n createLog,\r\n transactionType,\r\n reference,\r\n error,\r\n amount,\r\n billingDetails,\r\n currency,\r\n tmpToken,\r\n checkExpToken,\r\n toast,\r\n */\r\n}) {\r\n dispatch(setLoadingMessage(\"Extending Cover\"));\r\n /* let successful = false;\r\n if (!completedSteps.current.receipt || completedSteps.current.receipt.success === false) {\r\n let receipt = assignReceipt(policy, paymentDetails.paymentAmount);\r\n /** Generate receipt in underWriter /\r\n \r\n let receiptResponse;\r\n let count = 0;\r\n \r\n try {\r\n while (count < 2 && !receiptResponse) {\r\n receiptResponse = await drawReceipt( receipt);\r\n count++;\r\n }\r\n if (!receiptResponse || !receiptResponse?.success) {\r\n toggleReceiptErrorModalState.openModal();\r\n \r\n } else {\r\n completedSteps.current.receipt = receiptResponse;\r\n successful = true;\r\n }\r\n } catch (e) {\r\n toggleReceiptErrorModalState.openModal();\r\n } finally {\r\n createLog({\r\n trn: user?.national_id,\r\n type: `${transactionType}-Paymentform-DrawReceipt`,\r\n data: {\r\n receiptNum: reference,\r\n filesGenerated: files.map(f => f.filename),\r\n receiptResponse,\r\n Count: count,\r\n },\r\n errors: { message: error || !receiptResponse?.success ? receiptResponse?.error_message : \"\" },\r\n });\r\n \r\n try {\r\n if (!successful) {\r\n await checkExpToken({\r\n endpoint: \"/email/quickpay\",\r\n payload: {\r\n amount: `${amount.replace(/[, ]+/g, \"\").trim()}`,\r\n receipt_number: `${reference}`,\r\n name: `${billingDetails.firstName} ${billingDetails.lastName}`,\r\n email: billingDetails.email,\r\n phone: billingDetails.phoneNumber,\r\n policy_number: policyNumber,\r\n type: paymentDetails.paymentPurpose,\r\n currency: currency,\r\n successful: successful,\r\n },\r\n \r\n });\r\n }\r\n } catch (e) {\r\n toast.error(e.message);\r\n }\r\n }\r\n } */\r\n\r\n if (!completedSteps.current.paymentSchedule || completedSteps.current.paymentSchedule.success === false) {\r\n const scheduleResult = await getPaymentScheduleInfo(\r\n _transaction.current.paymentType?.payment_terms,\r\n user,\r\n // @ts-ignore\r\n policy,\r\n\r\n\r\n );\r\n if (!scheduleResult) {\r\n throw new Error(`Failed to generate Payment Schedule. ${scheduleResult?.message}`);\r\n }\r\n completedSteps.current.paymentSchedule = scheduleResult;\r\n }\r\n\r\n /** loop through extensions */\r\n for (let a = 0; a < _transaction.current.totalPayments; a++) {\r\n if (!completedSteps.current.extension?.[a] || completedSteps.current.extension?.[a]?.success === false) {\r\n let extensionResponse = await extendPolicy(\r\n\r\n policy,\r\n policy.paymentPlan,\r\n _transaction.current.paymentType?.payment_terms?.[1]?.payment_term_premium,\r\n user.national_id\r\n );\r\n\r\n completedSteps.current.extension[a] = extensionResponse;\r\n if (!extensionResponse?.success)\r\n throw new Error(`Could not extend policy. ${extensionResponse?.error_message}`);\r\n\r\n\r\n /** get documents */\r\n //console.warn( policy.policy_id, user.national_id, extensionResponse);\r\n }\r\n dispatch(setLoadingMessage(\"Generating Policy Documents\"));\r\n files.push(\r\n ...await generateExtensionDocuments(\r\n\r\n policy,\r\n user.national_id,\r\n completedSteps.current.extension[a]?.transaction_id || \"\"\r\n )\r\n );\r\n }\r\n\r\n files.push({\r\n filename: \"payment-schedule.pdf\",\r\n fileContent: completedSteps.current.paymentSchedule,\r\n // mime_type: \"application/pdf\",\r\n });\r\n\r\n // set a payment reminder\r\n let nextTerm = paymentScheduleData.filter(terms => {\r\n let due = new Date(terms.date);\r\n let isFutureDate = isFuture(due);\r\n return terms.status !== \"Paid\" && isFutureDate;\r\n });\r\n\r\n\r\n //check if reminder exist and remove it\r\n removePaymentReminder({\r\n policy_number: policyNumber,\r\n reminder_type: \"paybalance\"\r\n })\r\n\r\n if (nextTerm.length > 0) {\r\n addPaymentReminder(\r\n {\r\n policynum: policyNumber,\r\n customer:\r\n user.first_name || user.last_name ? `${user.first_name} ${user.last_name}` : user.company_name,\r\n email: `${user.email_address}`,\r\n phone: user.phone_numbers[0].phone_number,\r\n dueDate: nextTerm[0].date,\r\n reminder_type: \"paybalance\",\r\n },\r\n\r\n );\r\n }\r\n responseAfterUpdate = {};\r\n\r\n return completedSteps.current.extension;\r\n\r\n}\r\n\r\nasync function handleAdditionalPremiumTransaction({\r\n policyFormInfo,\r\n activeRisk,\r\n changeMarketValue,\r\n\r\n policy,\r\n changeOnPremium,\r\n\r\n policyPaymentPlans,\r\n setError,\r\n openErrorModal2,\r\n user,\r\n PolicyNetworkLayer,\r\n completedSteps,\r\n /* assignReceipt,\r\n paymentDetails,\r\n \r\n drawReceipt,\r\n toggleReceiptErrorModalState,\r\n createLog,\r\n transactionType,\r\n reference,\r\n error,\r\n checkExpToken,\r\n amount,\r\n billingDetails,\r\n policyNumber,\r\n currency,\r\n tmpToken, */\r\n dispatch,\r\n setLoadingMessage,\r\n toast,\r\n filesNeeded,\r\n FILESNEEDED,\r\n formatMoney,\r\n newPremium,\r\n policyManagerData,\r\n isNotEmpty,\r\n nodeApi,\r\n files\r\n}) {\r\n const newSumInsured = policyFormInfo.newMarketValues.find(\r\n marketValue => marketValue?.riskID?.trim() === activeRisk?.risk_id\r\n )?.marketValue;\r\n let marketValueResult;\r\n let only_calculate_premium = false;\r\n try {\r\n\r\n const vehicleOver5MillionMarketValueLimit = 5000000;\r\n\r\n let _newRisks = [];\r\n let _policy = policy;\r\n\r\n const ratingCodeToRemove = 702;\r\n\r\n const currentYear = new Date().getFullYear();\r\n\r\n if (newSumInsured < vehicleOver5MillionMarketValueLimit\r\n || currentYear - activeRisk.year > 5) {\r\n let risks = [...[activeRisk]];\r\n\r\n _newRisks = removeRatingCodesFromRisks(risks, [ratingCodeToRemove]);\r\n\r\n _policy = {\r\n ...policy,\r\n risks: policy?.risks?.map(risk => risk?.risk_id === _newRisks[0]?.risk_id ?\r\n _newRisks[0] : risk)\r\n }\r\n }\r\n\r\n marketValueResult = await changeMarketValue(\r\n\r\n _policy,\r\n _newRisks[0] ?? activeRisk,\r\n newSumInsured,\r\n changeOnPremium,\r\n policyPaymentPlans,\r\n only_calculate_premium,\r\n );\r\n\r\n completedSteps.current.additionalPremium = marketValueResult;\r\n if (marketValueResult?.error_message) throw marketValueResult?.error_message;\r\n \r\n } catch (error) {\r\n setError(error);\r\n openErrorModal2(true);\r\n }\r\n\r\n let vehiclesInfo = [];\r\n let userName = user.is_a_company ? user.company_name : user?.first_name + \" \" + user?.last_name;\r\n let customerInfo = {\r\n name: userName,\r\n phoneNumber: { wasChanged: false, value: \"\" },\r\n otherPhoneNumber: {\r\n wasChanged: false,\r\n value: \"\",\r\n },\r\n email: { wasChanged: false, value: user.email_address },\r\n homeAddress: { wasChanged: false, value: \"\" },\r\n };\r\n\r\n let transScheduleResponse = await PolicyNetworkLayer.getTransactionSchedule(\r\n\r\n marketValueResult.transaction_id\r\n );\r\n files.push({ ...transScheduleResponse.data, type: \"Transaction Schedule\" });\r\n let driversInfo = [];\r\n /* let receipt = assignReceipt(policy, paymentDetails.paymentAmount);\r\n let successful = false;\r\n \r\n if (!completedSteps.current.receipt || completedSteps.current.receipt.success === false) {\r\n /** Generate receipt in underWriter /\r\n let receiptResponse;\r\n let count = 0;\r\n try {\r\n while (count < 2 && !receiptResponse) {\r\n receiptResponse = await drawReceipt( receipt);\r\n count++;\r\n }\r\n if (!receiptResponse || !receiptResponse?.success) {\r\n toggleReceiptErrorModalState.openModal();\r\n successful = false;\r\n } else {\r\n completedSteps.current.receipt = receiptResponse;\r\n successful = true;\r\n }\r\n } catch (e) {\r\n toggleReceiptErrorModalState.openModal();\r\n } finally {\r\n createLog({\r\n trn: user?.national_id,\r\n type: `${transactionType}-Paymentform-DrawReceipt`,\r\n data: {\r\n receiptNum: reference,\r\n filesGenerated: files.map(f => f.filename),\r\n receiptResponse,\r\n Count: count,\r\n },\r\n errors: { message: error || !receiptResponse?.success ? receiptResponse?.error_message : \"\" },\r\n });\r\n \r\n try {\r\n await checkExpToken({\r\n endpoint: \"/email/quickpay\",\r\n payload: {\r\n amount: `${amount.replace(/[, ]+/g, \"\").trim()}`,\r\n receipt_number: `${reference}`,\r\n name: `${billingDetails.firstName} ${billingDetails.lastName}`,\r\n email: billingDetails.email,\r\n phone: billingDetails.phoneNumber,\r\n policy_number: policyNumber,\r\n type: paymentDetails.paymentPurpose,\r\n currency: currency,\r\n successful: successful,\r\n },\r\n \r\n });\r\n } catch (e) {\r\n toast.error(e.message);\r\n }\r\n }\r\n } */\r\n\r\n let selectedRisk = policy.risks.find(risk => risk.risk_id === policyFormInfo.newMarketValues[0].riskID);\r\n // create certificate\r\n dispatch(setLoadingMessage(\"Creating Certificate\"));\r\n let certResponse = await PolicyNetworkLayer.createCertificate(policy?.policy_id, selectedRisk.risk_id);\r\n let file;\r\n if (certResponse?.success) {\r\n // get/save certificate data\r\n file = certResponse.data;\r\n } else {\r\n toast.error(`Create Certificate failed ${certResponse.error_message}`);\r\n }\r\n\r\n files.push({ ...file, type: \"Certificate of Insurance\" });\r\n if (policyFormInfo?.newMarketValues[0]?.files?.length === 0) {\r\n filesNeeded.push(FILESNEEDED.Valuation);\r\n }\r\n\r\n let vehicleInfo = {\r\n make: selectedRisk.make,\r\n model: selectedRisk.model,\r\n year: selectedRisk.year,\r\n registrationNumber: {\r\n wasChanged: false,\r\n value: selectedRisk.registration_number || \"\",\r\n },\r\n marketValue: {\r\n wasChanged: true,\r\n value: formatMoney(policyFormInfo.newMarketValues[0].marketValue).toString(),\r\n },\r\n premium: { wasChanged: true, value: formatMoney(newPremium).toString() },\r\n files: files,\r\n filesNeeded: filesNeeded,\r\n };\r\n\r\n vehiclesInfo.push(vehicleInfo);\r\n\r\n policyManagerData = {\r\n fullname: user.is_a_company ? `${user.company_name}` : `${user.first_name} ${user.last_name}`,\r\n email: isNotEmpty(policyFormInfo?.newEmail?.trim()) ? policyFormInfo?.newEmail?.trim() : user.email_address,\r\n registrationNumbers: [],\r\n certificates: files,\r\n };\r\n\r\n let emailResult = await checkExpToken({\r\n endpoint: \"/email/policyManager\", payload: {\r\n customerInfo,\r\n vehiclesInfo,\r\n driversInfo,\r\n }\r\n });\r\n\r\n if (emailResult.success) {\r\n dispatch(setLoadingMessage(\"Sending email\"));\r\n toast.success(\"An email has been sent with an outline of all your changes.\");\r\n }\r\n if (policyFormInfo?.newMarketValues[0]?.files?.length === 0) {\r\n await checkExpToken({\r\n endpoint: \"/email/policyManagerReminder\", payload: {\r\n customerInfo,\r\n vehiclesInfo,\r\n }\r\n });\r\n }\r\n\r\n return marketValueResult;\r\n}\r\n\r\nexport {\r\n handleRenewalTransaction,\r\n handlePayBalanceTransaction,\r\n handleAdditionalPremiumTransaction,\r\n};","import React from \"react\";\r\n\r\nexport default
Loading...
;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { fullLogout } from \"globals/misc\";\r\n\r\nconst defaultState = {\r\n\tnavBarState: [],\r\n};\r\n\r\nlet overlaySlice = createSlice({\r\n\tname: \"navbar\",\r\n\tinitialState: defaultState,\r\n\treducers: {\r\n\t\t/** @param {{payload: Array}} action */\r\n\t\tsetNavbarState: (state, action) => {\r\n\t\t\tstate.navBarState = action.payload;\r\n\t\t},\r\n\r\n\t\tresetNavbar: () => defaultState,\r\n\t},\r\n\textraReducers: builder => {\r\n\t\tbuilder.addCase(fullLogout, (state, action) => defaultState);\r\n\t},\r\n});\r\n\r\n/** @param {{navbar: defaultState}} state */\r\nexport const getNavbarState = ({ navbar: state }) => state.navBarState;\r\n\r\nexport const { setNavbarState, resetNavbar } = overlaySlice.actions;\r\n\r\nexport default overlaySlice.reducer;\r\n","export default __webpack_public_path__ + \"static/media/calendar.83b7e178.svg\";","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { setToken, setUserId, setUserFormData, setCurrentUser, getTransactionType } from \"globals/auth\";\r\nimport { setLoading, setNotification } from \"globals/overlays\";\r\nimport { sub, format, getDaysInMonth, parse } from \"date-fns\";\r\nimport { clearConfirmationData } from \"globals/confirmation\";\r\nimport { useDispatch, batch, useSelector } from \"react-redux\";\r\nimport calendar_icon from \"assets/img/claims_icons/calendar.svg\";\r\n\r\n// eslint-disable-next-line\r\nimport { Row, Col } from \"reactstrap\";\r\nimport Select, { Styles } from \"react-select\";\r\nimport { Formik, Form, Field } from \"formik\";\r\nimport { AuthNetworkLayer } from \"helpers\";\r\nimport { useHistory } from \"react-router\";\r\nimport MaskedInput from \"react-text-mask\";\r\nimport { enUS } from \"date-fns/locale\";\r\nimport { object, string, boolean } from \"yup\";\r\nimport Modal from \"components/misc/Modal\";\r\nimport jwtDecoder from \"jwt-decode\";\r\nimport \"./Auth.scss\";\r\n// import { getNewGlobalToken } from \"helpers/auth\";\r\nimport { PAY_BALANCE } from \"pages/RenewPolicy/costants\";\r\nimport { ErrorModal } from \"components/misc/SweetModal\";\r\nimport { ERROR } from \"components/misc/Modal/constants\";\r\nimport { createUseStyles } from \"react-jss\";\r\nimport Calendar from \"components/CustomDatePicker/Calandar/Calendar\";\r\nimport InfoIcon from \"components/misc/InfoIcon\";\r\nimport { createLog } from \"helpers/log\";\r\nimport { fullLogout } from \"globals/misc\";\r\n\r\nconst redirect = function() {\r\n\twindow.open(\"https://quote-and-buy-v3-fe.azurewebsites.net/quote-and-buy/get-started\", \"_blank\")\r\n}\r\n\r\n// import CustomDatePicker from \"../CustomDatePicker\";\r\nconst useStyles = createUseStyles({\r\n\ttabButtons: {\r\n\t\t\"& button\": {\r\n\t\t\twidth: \"195px\",\r\n\t\t\tminHeight: \"30px\",\r\n\t\t\tmaxHeight: \"30px\",\r\n\t\t\tborderRadius: \"0\",\r\n\t\t\tborder: \"none\",\r\n\t\t\tbackgroundColor: \"#F0F0F0\",\r\n\t\t\tcolor: \"var(--primary-color) !important\",\r\n\t\t\tfontSize: \"14px\",\r\n\t\t\tfontWeight: \"bold\",\r\n\t\t\tpadding: \"10px 0\",\r\n\t\t\tlineHeight: \"12px\",\r\n\t\t\tborderTopLeftRadius: \"15px\",\r\n\t\t\tborderTopRightRadius: \"15px\",\r\n\t\t\t\"&:first-child\": {},\r\n\t\t\t\"&:last-child\": {\r\n\t\t\t\tborder: \"2px solid lightgray\",\r\n\t\t\t\tborderBottom: \"none\",\r\n\t\t\t\tborderLeft: \"none\"\r\n\t\t\t},\r\n\t\t\t\"&:hover\": {\r\n\t\t\t\tcursor: \"pointer\",\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\tactive: {\r\n\t\tbackgroundColor: \"var(--action-btn-color-2) !important\",\r\n\t\tcolor: \"var(--primary-color) !important\",\r\n\t},\r\n\r\n\t//Responsiveness for mobile\r\n\t\"@media (max-width: 767px)\": {\r\n\t\ttabButtons: {\r\n\t\t\t\"& button\": {\r\n\t\t\t\twidth: \"49%\",\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n});\r\n/** @type {import(\"react-select\").Styles} */\r\nconst customStylesDate = {\r\n\toption: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tbackgroundColor: state.isSelected ? \"#002868\" : state.isFocused ? \"#adcdff\" : \"#f0f3f6\",\r\n\t\tcolor: state.isSelected ? \"#fff\" : \"#212529\",\r\n\t\tfontWeight: \"normal\",\r\n\t\tpadding: \"0.5rem 1.3rem\",\r\n\t}),\r\n\tsingleValue: (provided, state) => {\r\n\t\tconst opacity = state.isDisabled ? 0.5 : 1;\r\n\t\tconst transition = \"opacity 300ms\";\r\n\t\tconst style = {\r\n\t\t\tborderStyle: \"none\",\r\n\t\t\tfontWeight: 400,\r\n\t\t};\r\n\r\n\t\treturn { ...style, opacity, transition };\r\n\t},\r\n\r\n\tdropdownIndicator: (provided, state) => ({\r\n\t\tdisplay: \"none\",\r\n\t}),\r\n\tindicatorSeparator: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tvisibility: \"hidden\",\r\n\t}),\r\n\tcontrol: provided => ({\r\n\t\t...provided,\r\n\t\tcolor: \"#212529\",\r\n\t\theight: 33.3,\r\n\t\t// padding: \"0 2rem\",\r\n\t\t// paddingLeft: \"0.5em\",\r\n\t\tborderRadius: \"10px\",\r\n\t\tborder: \"1px solid #002868\",\r\n\t}),\r\n\tplaceholder: (provided, state) => ({\r\n\t\tfontWeight: \"bold\",\r\n\t\topacity: 0.5,\r\n\t\t// marginLeft: -9,\r\n\t}),\r\n\tmenuList: (provided, state) => ({\r\n\t\theight: \"250px\",\r\n\t\toverflowY: \"auto\",\r\n\t\tpaddingBottom: \"4px\",\r\n\t\tpaddingTop: \"4px\",\r\n\t\tposition: \"relative\",\r\n\t\tboxSizing: \"border-box\",\r\n\t\tminWidth: \"100px\",\r\n\t}),\r\n};\r\nconst customStyles = {\r\n\toption: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tbackgroundColor: state.isSelected ? \"#002868\" : state.isFocused ? \"#adcdff\" : \"#fff\",\r\n\t\tcolor: state.isSelected ? \"#f0f3f6\" : \"#212529\",\r\n\t\tfontWeight: \"normal\",\r\n\t}),\r\n\tsingleValue: (provided, state) => {\r\n\t\tconst opacity = state.isDisabled ? 0.5 : 1;\r\n\t\tconst transition = \"opacity 300ms\";\r\n\t\tconst style = {\r\n\t\t\tborderStyle: \"none\",\r\n\t\t\tfontWeight: 800,\r\n\t\t\tfontSize: 13,\r\n\t\t};\r\n\r\n\t\treturn { ...style, opacity, transition };\r\n\t},\r\n\r\n\tcontrol: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tcolor: \"#212529\",\r\n\t\theight: 35,\r\n\t\t// padding: \"0.5rem 0.5rem\",\r\n\t\t\"@media (max-width: 767px)\": {\r\n\t\t\tpadding: 0,\r\n\t\t\tfontSize: 12,\r\n\t\t},\r\n\t\tborderRadius: 23,\r\n\t\tborder: \"2px solid #BCBCBC\",\r\n\t\tbackgroundColor: \"white\",\r\n\t\t\"@media (max-width: 768px)\": {\r\n\t\t\tpadding: \"0\",\r\n\t\t\t// paddingTop: \"0.3rem\",\r\n\t\t\tfontSize: 14,\r\n\t\t},\r\n\t}),\r\n\tdropdownIndicator: (provided, state) => ({\r\n\t\t...provided,\r\n\t\topacity: 1,\r\n\t\tfontSize: 12,\r\n\t\tdisplay: \"none\",\r\n\t\t\"@media (max-width: 767px)\": {\r\n\t\t\tdisplay: \"none\",\r\n\t\t},\r\n\t}),\r\n\tindicatorSeparator: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tvisibility: \"hidden\",\r\n\t}),\r\n\r\n\tplaceholder: (provided, state) => ({\r\n\t\tfontWeight: \"bold\",\r\n\t\topacity: 0.5,\r\n\t}),\r\n\tmenuList: (provided, state) => ({\r\n\t\theight: \"100px\",\r\n\t\toverflowY: \"auto\",\r\n\t\tpaddingBottom: \"4px\",\r\n\t\tpaddingTop: \"4px\",\r\n\t\tposition: \"relative\",\r\n\t\tboxSizing: \"border-box\",\r\n\t}),\r\n};\r\nconst customStylesNew = {\r\n\toption: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tbackgroundColor: state.isSelected ? \"#002868\" : state.isFocused ? \"#adcdff\" : \"#fff\",\r\n\t\tcolor: state.isSelected ? \"#f0f3f6\" : \"#212529\",\r\n\t\tfontWeight: \"normal\",\r\n\t}),\r\n\tsingleValue: (provided, state) => {\r\n\t\tconst opacity = state.isDisabled ? 0.5 : 1;\r\n\t\tconst transition = \"opacity 300ms\";\r\n\t\tconst style = {\r\n\t\t\tborderStyle: \"none\",\r\n\t\t\tfontWeight: 800,\r\n\t\t\tfontSize: 13,\r\n\t\t};\r\n\r\n\t\treturn { ...style, opacity, transition };\r\n\t},\r\n\r\n\tcontrol: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tcolor: \"#212529\",\r\n\t\theight: 35,\r\n\t\t// padding: \"0.5rem 0.5rem\",\r\n\t\t\"@media (max-width: 767px)\": {\r\n\t\t\tpadding: 0,\r\n\t\t\tfontSize: 12,\r\n\t\t},\r\n\t\tborderRadius: 0,\r\n\t\tborder: \"2px solid #BCBCBC\",\r\n\t\tbackgroundColor: \"white\",\r\n\t\t\"@media (max-width: 768px)\": {\r\n\t\t\tpadding: \"0\",\r\n\t\t\t// paddingTop: \"0.3rem\",\r\n\t\t\tfontSize: 14,\r\n\t\t},\r\n\t}),\r\n\tdropdownIndicator: (provided, state) => ({\r\n\t\t...provided,\r\n\t\topacity: 1,\r\n\t\tfontSize: 12,\r\n\t\tdisplay: \"none\",\r\n\t\t\"@media (max-width: 767px)\": {\r\n\t\t\tdisplay: \"none\",\r\n\t\t},\r\n\t}),\r\n\tindicatorSeparator: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tvisibility: \"hidden\",\r\n\t}),\r\n\r\n\tplaceholder: (provided, state) => ({\r\n\t\tfontWeight: \"bold\",\r\n\t\topacity: 0.5,\r\n\t}),\r\n\tmenuList: (provided, state) => ({\r\n\t\theight: \"100px\",\r\n\t\toverflowY: \"auto\",\r\n\t\tpaddingBottom: \"4px\",\r\n\t\tpaddingTop: \"4px\",\r\n\t\tposition: \"relative\",\r\n\t\tboxSizing: \"border-box\",\r\n\t}),\r\n};\r\nconst customStylesLeft = {\r\n\toption: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tbackgroundColor: state.isSelected ? \"#002868\" : state.isFocused ? \"#adcdff\" : \"#fff\",\r\n\t\tcolor: state.isSelected ? \"#f0f3f6\" : \"#212529\",\r\n\t\tfontWeight: \"normal\",\r\n\t}),\r\n\tsingleValue: (provided, state) => {\r\n\t\tconst opacity = state.isDisabled ? 0.5 : 1;\r\n\t\tconst transition = \"opacity 300ms\";\r\n\t\tconst style = {\r\n\t\t\tborderStyle: \"none\",\r\n\t\t\tfontWeight: 800,\r\n\t\t\tfontSize: 13,\r\n\t\t};\r\n\r\n\t\treturn { ...style, opacity, transition };\r\n\t},\r\n\r\n\tcontrol: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tcolor: \"#212529\",\r\n\t\theight: 35,\r\n\t\t// padding: \"0.5rem 0.5rem\",\r\n\t\t\"@media (max-width: 767px)\": {\r\n\t\t\tpadding: 0,\r\n\t\t\tfontSize: 12,\r\n\t\t},\r\n\t\tborderRadius: \"23px 0 0 23px\",\r\n\t\tborder: \"2px solid #BCBCBC\",\r\n\t\tbackgroundColor: \"white\",\r\n\t\t\"@media (max-width: 768px)\": {\r\n\t\t\tpadding: \"0\",\r\n\t\t\t// paddingTop: \"0.3rem\",\r\n\t\t\tfontSize: 14,\r\n\t\t},\r\n\t}),\r\n\tdropdownIndicator: (provided, state) => ({\r\n\t\t...provided,\r\n\t\topacity: 1,\r\n\t\tfontSize: 12,\r\n\t\tdisplay: \"none\",\r\n\t\t\"@media (max-width: 767px)\": {\r\n\t\t\tdisplay: \"none\",\r\n\t\t},\r\n\t}),\r\n\tindicatorSeparator: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tvisibility: \"hidden\",\r\n\t}),\r\n\r\n\tplaceholder: (provided, state) => ({\r\n\t\tfontWeight: \"bold\",\r\n\t\topacity: 0.5,\r\n\t}),\r\n\tmenuList: (provided, state) => ({\r\n\t\theight: \"100px\",\r\n\t\toverflowY: \"auto\",\r\n\t\tpaddingBottom: \"4px\",\r\n\t\tpaddingTop: \"4px\",\r\n\t\tposition: \"relative\",\r\n\t\tboxSizing: \"border-box\",\r\n\t}),\r\n};\r\nconst customStylesRight = {\r\n\toption: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tbackgroundColor: state.isSelected ? \"#002868\" : state.isFocused ? \"#adcdff\" : \"#fff\",\r\n\t\tcolor: state.isSelected ? \"#f0f3f6\" : \"#212529\",\r\n\t\tfontWeight: \"normal\",\r\n\t}),\r\n\tsingleValue: (provided, state) => {\r\n\t\tconst opacity = state.isDisabled ? 0.5 : 1;\r\n\t\tconst transition = \"opacity 300ms\";\r\n\t\tconst style = {\r\n\t\t\tborderStyle: \"none\",\r\n\t\t\tfontWeight: 800,\r\n\t\t\tfontSize: 13,\r\n\t\t};\r\n\r\n\t\treturn { ...style, opacity, transition };\r\n\t},\r\n\r\n\tcontrol: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tcolor: \"#212529\",\r\n\t\theight: 35,\r\n\t\t// padding: \"0.5rem 0.5rem\",\r\n\t\t\"@media (max-width: 767px)\": {\r\n\t\t\tpadding: 0,\r\n\t\t\tfontSize: 12,\r\n\t\t},\r\n\t\tborderRadius: \"0 23px 23px 0\",\r\n\t\tborder: \"2px solid #BCBCBC\",\r\n\t\tbackgroundColor: \"white\",\r\n\t\t\"@media (max-width: 768px)\": {\r\n\t\t\tpadding: \"0\",\r\n\t\t\t// paddingTop: \"0.3rem\",\r\n\t\t\tfontSize: 14,\r\n\t\t},\r\n\t}),\r\n\tdropdownIndicator: (provided, state) => ({\r\n\t\t...provided,\r\n\t\topacity: 1,\r\n\t\tfontSize: 12,\r\n\t\tdisplay: \"none\",\r\n\t\t\"@media (max-width: 767px)\": {\r\n\t\t\tdisplay: \"none\",\r\n\t\t},\r\n\t}),\r\n\tindicatorSeparator: (provided, state) => ({\r\n\t\t...provided,\r\n\t\tvisibility: \"hidden\",\r\n\t}),\r\n\r\n\tplaceholder: (provided, state) => ({\r\n\t\tfontWeight: \"bold\",\r\n\t\topacity: 0.5,\r\n\t}),\r\n\tmenuList: (provided, state) => ({\r\n\t\theight: \"100px\",\r\n\t\toverflowY: \"auto\",\r\n\t\tpaddingBottom: \"4px\",\r\n\t\tpaddingTop: \"4px\",\r\n\t\tposition: \"relative\",\r\n\t\tboxSizing: \"border-box\",\r\n\t}),\r\n};\r\n\r\n//Generating a list of years for year selection\r\nconst now = new Date();\r\nconst thisYear = now.getFullYear();\r\nconst old = sub(now, { years: 100 });\r\nconst oldYear = old.getFullYear();\r\nconst years = Array(thisYear - oldYear)\r\n\t.fill(\"\")\r\n\t.map((_, i) => {\r\n\t\treturn { value: thisYear - i, label: thisYear - i };\r\n\t});\r\nconst monthArray = [];\r\nfor (let i = 0; i < 12; i++) {\r\n\tmonthArray.push(enUS.localize.month(i));\r\n}\r\nconst months = monthArray.map((month, i) => {\r\n\treturn { value: i + 1, label: month.slice(0, 3).toUpperCase() };\r\n});\r\nconst dayDefault = Array(31)\r\n\t.fill(\"\")\r\n\t.map((_, i) => {\r\n\t\treturn { value: (i + 1).toString(), label: (i + 1).toString() };\r\n\t});\r\n\r\nconst genders = [\r\n\t{ value: \"Male\", label: \"Male\" },\r\n\t{ value: \"Female\", label: \"Female\" },\r\n];\r\n\r\nconst defaultRegisterValues = {\r\n\tdobDay: \"\",\r\n\tdobMonth: \"\",\r\n\tdobYear: \"\",\r\n\ttrn: \"\",\r\n\tcompanyTRN: \"\",\r\n\tgender: \"\",\r\n\tcompanyName: \"\",\r\n\tisIndividual: true,\r\n};\r\n\r\nconst authFormSchema = object().shape({\r\n\tdobDay: string().when(\"isIndividual\", {\r\n\t\tis: true,\r\n\t\t//then: string().required(\"Please choose a valid day\"),\r\n\t\tthen: string().required(\"Invalid day\"),\r\n\t}),\r\n\tdobMonth: string().when(\"isIndividual\", {\r\n\t\tis: true,\r\n\t\t//then: string().required(\"Please choose a valid month\"),\r\n\t\tthen: string().required(\"Invalid month\"),\r\n\t}),\r\n\tdobYear: string().when(\"isIndividual\", {\r\n\t\tis: true,\r\n\t\t//then: string().required(\"Please choose a valid year\"),\r\n\t\tthen: string().required(\"Invalid year\"),\r\n\t}),\r\n\ttrn: string().when(\"isIndividual\", {\r\n\t\tis: true,\r\n\t\tthen: string()\r\n\t\t\t.required(\"Please enter a valid TRN\")\r\n\t\t\t.matches(/^[\\d]{3}-[\\d]{3}-[\\d]{3}$/, \"Please enter a valid TRN\"),\r\n\t}),\r\n\tcompanyTRN: string().when(\"isIndividual\", {\r\n\t\tis: false,\r\n\t\tthen: string()\r\n\t\t\t.required(\"Please enter a valid TRN\")\r\n\t\t\t.matches(/^[\\d]{3}-[\\d]{3}-[\\d]{3}$/, \"Please enter a valid TRN\"),\r\n\t}),\r\n\r\n\tgender: string().when(\"isIndividual\", {\r\n\t\tis: true,\r\n\t\tthen: string().required(\"Please choose a gender\"),\r\n\t}),\r\n\tisIndividual: boolean(),\r\n\tcompanyName: string().when(\"isIndividual\", {\r\n\t\tis: false,\r\n\t\tthen: string().required(\"Company Name is required\"),\r\n\t\totherwise: string(),\r\n\t}),\r\n});\r\n\r\nconst TRNMask = [/\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, /\\d/];\r\n\r\n/** Persist the Auth that lives across refresh */\r\nexport default function Auth({\r\n\tmatch,\r\n\tisClaims = false,\r\n\tisTrackAClaim = false,\r\n\tisPayBalance = false,\r\n\tisPolicyManager = false,\r\n\tgeneratingNewToken,\r\n}) {\r\n\tconst dispatch = useDispatch();\r\n\tconst formikRef = useRef();\r\n\tconst history = useHistory();\r\n\tconst classes = useStyles();\r\n\tconst transactionType = useSelector(getTransactionType);\r\n\tconst [tab, setTab] = useState(match.url.split(\"/\").pop());\r\n\tconst [isIndividual, setIsIndividual] = useState(true);\r\n\tconst [open, openModal] = useState(false);\r\n\tconst [days, setDays] = useState(dayDefault);\r\n\tconst [remoteServerError, setRemoteServerError] = useState(false);\r\n\r\n\t//dispatch(fullLogout());\r\n\tconst closeModal = () => {\r\n\t\topenModal(false);\r\n\t};\r\n\tconst currentTime = new Date();\r\n\tuseEffect(() => {\r\n\t\tsetTab(match.url.split(\"/\").pop());\r\n\t}, [match.url]);\r\n\tlet dob;\r\n\tconst handleFormSubmit = async formValues => {\r\n\t\tdispatch(setLoading(true));\r\n\t\tsetIsIndividual(formValues.isIndividual);\r\n\t\tif (formValues.isIndividual) {\r\n\t\t\tdob = format(\r\n\t\t\t\tparse(`${formValues.dobYear} ${formValues.dobMonth} ${formValues.dobDay}`, \"yyyy MM dd\", new Date()),\r\n\t\t\t\t\"yyyy-MM-dd\"\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t/** Pull data from form to be sent for authentication */\r\n\t\tconst userData = {\r\n\t\t\tdob: dob,\r\n\t\t\tis_a_company: !formValues.isIndividual,\r\n\t\t\tnational_id: formValues.isIndividual ? formValues.trn.replace(/-/g, \"\") : formValues.companyTRN.replace(/-/g, \"\"),\r\n\t\t\tnational_id_type: \"TRN\",\r\n\t\t\tgender: formValues.gender,\r\n\t\t\tcompany_name: formValues.isIndividual ? \"\" : formValues.companyName.trim(),\r\n\t\t};\r\n\r\n\t\tdispatch(setUserFormData(userData));\r\n\r\n\t\ttry {\r\n\t\t\t/** Remove any leftover data */\r\n\t\t\tdispatch(clearConfirmationData());\r\n\t\t\t/** Try to acquire token for user */\r\n\t\t\tgeneratingNewToken.current = true;\r\n\t\t\t// const loginRequest = await getNewGlobalToken(3);\r\n\t\t\t// if (!loginRequest.token) throw new Error(\"Failed to acquire token\");\r\n\r\n\t\t\t/** Try to acquire global name id for future requests */\r\n\t\t\tconst globalNameIdRequest = await AuthNetworkLayer.getGlobalNameId(userData);\r\n\r\n\t\t\tif (globalNameIdRequest.IsMethodCallSuccessful === false) {\r\n\t\t\t\tsetRemoteServerError(true);\r\n\t\t\t} else if (!globalNameIdRequest.success) {\r\n\t\t\t\tsetRemoteServerError(false);\r\n\t\t\t\tthrow new Error(\"Failed to get global name ID\");\r\n\t\t\t}\r\n\r\n\t\t\t/** Try to acquire encoded user data for future requests */\r\n\t\t\tconst otpMethodsResponse = await AuthNetworkLayer.getUserData(\t\t\t\t\r\n\t\t\t\tuserData,\r\n\t\t\t\tglobalNameIdRequest.global_name_id\r\n\t\t\t);\r\n\t\t\t/**\r\n\t\t\t * Verify token signature\r\n\t\t\t * @type {*}\r\n\t\t\t */\r\n\t\t\tconst otpMethods = jwtDecoder(otpMethodsResponse.result);\r\n\t\t\tif (!otpMethods.success) throw new Error(\"Failed to acquire options for OTP verification\");\r\n\r\n\t\t\tbatch(() => {\r\n\t\t\t\tdispatch(setToken(otpMethodsResponse.result));\r\n\t\t\t\tdispatch(setUserId(globalNameIdRequest.global_name_id));\r\n\t\t\t\tdispatch(\r\n\t\t\t\t\tsetCurrentUser({\r\n\t\t\t\t\t\tphone_numbers: otpMethods.phone_numbers,\r\n\t\t\t\t\t\temail_address: otpMethods.email_address,\r\n\t\t\t\t\t\tfirst_name: otpMethods.first_name,\r\n\t\t\t\t\t\tlast_name: otpMethods?.last_name,\r\n\t\t\t\t\t\tmother_maiden_name: otpMethods?.mother_maiden_name,\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t\tdispatch(setLoading(false));\r\n\t\t\t});\r\n\r\n\t\t\tgeneratingNewToken.current = false;\r\n\r\n\t\t\tif (isClaims) {\r\n\t\t\t\thistory.replace(`/claims/otp`);\r\n\t\t\t} else if (transactionType === PAY_BALANCE) {\r\n\t\t\t\thistory.replace(`/${PAY_BALANCE}/otp`);\r\n\t\t\t} else if (isTrackAClaim) {\r\n\t\t\t\thistory.replace(`/track-my-claim/otp`);\r\n\t\t\t} else if (isPayBalance) {\r\n\t\t\t\thistory.push(\"/paybalance/otp\");\r\n\t\t\t} else if (isPolicyManager) {\r\n\t\t\t\thistory.push(\"/update-your-policy/otp\");\r\n\t\t\t} else {\r\n\t\t\t\thistory.replace(`/renewal/otp`);\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tif (e.message === \"Unable to connect to the remote server\" || e.message.match(/error/i)) {\r\n\t\t\t\tsetRemoteServerError(true);\r\n\t\t\t}\r\n\t\t\topenModal(true);\r\n\t\t} finally {\r\n\t\t\tdispatch(setLoading(false));\r\n\t\t\tgeneratingNewToken.current = false;\r\n\t\t\tcreateLog({\r\n\t\t\t\ttrn: formValues.isIndividual ? formValues.trn.replace(/-/g, \"\") : formValues.companyTRN.replace(/-/g, \"\"),\r\n\t\t\t\ttype: `${transactionType}-Login`,\r\n\t\t\t\tdata: { ...formValues },\r\n\t\t\t\terrors: {\r\n\t\t\t\t\tmessage: open\r\n\t\t\t\t\t\t? remoteServerError\r\n\t\t\t\t\t\t\t? \"Server error has occurred\"\r\n\t\t\t\t\t\t\t: \"Could not find a record in our database\"\r\n\t\t\t\t\t\t: \"\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Checks whether the submit button should be disabled\r\n\t * @param {defaultRegisterValues} values\r\n\t */\r\n\tfunction shouldDisableSubmit(values, errors) {\r\n\t\t//If isIndividual do not check for company name and trn\r\n\t\tif (values.isIndividual) {\r\n\t\t\treturn (\r\n\t\t\t\tObject.entries(errors).length !== 0 ||\r\n\t\t\t\t!values.dobMonth ||\r\n\t\t\t\t!values.dobDay ||\r\n\t\t\t\t!values.dobYear ||\r\n\t\t\t\t!values.trn ||\r\n\t\t\t\t!values.gender\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn !values.companyName || !values.companyTRN || Object.entries(errors).length !== 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Custom handler for DOB fields\r\n\t * @param {*} e\r\n\t * @param {*} f\r\n\t * @param {*} values\r\n\t * @param {*} setFieldValue\r\n\t */\r\n\tfunction handleDOBChange(e, f, values, setFieldValue) {\r\n\t\tlet daysInMonth = 31;\r\n\r\n\t\tif ((f.name === \"dobMonth\" && values.dobYear.length > 0) || (f.name === \"dobYear\" && values.dobMonth.length > 0)) {\r\n\t\t\tdaysInMonth = getDaysInMonth(\r\n\t\t\t\tparse(\r\n\t\t\t\t\t`${f.name === \"dobYear\" ? e.value : values.dobYear} ${f.name === \"dobMonth\" ? e.value : values.dobMonth}`,\r\n\t\t\t\t\t\"yyyy MM\",\r\n\t\t\t\t\tnew Date()\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t\tsetDays(\r\n\t\t\t\tArray.from(Array(daysInMonth), (_, i) => {\r\n\t\t\t\t\treturn { value: (i + 1).toString(), label: (i + 1).toString() };\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t//Reset day (when other values changed) or (when days in month is less than selection)\r\n\t\tif (f.name !== \"dobDay\" && parseInt(values.dobDay) > daysInMonth) setFieldValue(\"dobDay\", \"\");\r\n\r\n\t\tsetFieldValue(f.name, e.value.toString());\r\n\t}\r\n\r\n\tconst updateDay = newDay => {\r\n\t\t// if (newDay !== undefined && newDay != \"\") setDay(newDay);\r\n\t};\r\n\r\n\tconst updateMonth = newMonth => {\r\n\t\t// if (newMonth !== undefined && newMonth != \"\") setMonth(newMonth);\r\n\t};\r\n\r\n\tconst updateYear = newYear => {\r\n\t\t// if (newYear !== undefined && newYear != \"\") setYear(newYear);\r\n\t};\r\n\tconst daysInMonth = (month, year) => {\r\n\t\tif (month === currentTime.getMonth() + 1 && year === currentTime.getFullYear()) {\r\n\t\t\treturn currentTime.getDate();\r\n\t\t}\r\n\t\treturn new Date(year, month, 0).getDate();\r\n\t};\r\n\r\n\tconst getSelectedDate = (selectedDate, setFieldValue, values) => {\r\n\t\tif (selectedDate !== undefined) selectedDate = new Date(selectedDate);\r\n\t\tlet day = selectedDate.getDate() + 1;\r\n\t\tlet month = selectedDate.getMonth() + 1;\r\n\t\tlet year = selectedDate.getFullYear();\r\n\t\tlet daysAmount = daysInMonth(month, year);\r\n\r\n\t\tif (day === 32) {\r\n\t\t\tday = 1;\r\n\r\n\t\t\tif (month === 12) {\r\n\t\t\t\tmonth = 1;\r\n\t\t\t\tyear++;\r\n\t\t\t} else {\r\n\t\t\t\tmonth++;\r\n\t\t\t}\r\n\t\t} else if ((month === 4 || month === 6 || month === 9 || month === 11) && day === 31) {\r\n\t\t\tday = 1;\r\n\t\t\tmonth++;\r\n\t\t} else if (month === 2) {\r\n\t\t\tvar isLeap = new Date(parseInt(year), 1, 29).getMonth() === 1;\r\n\r\n\t\t\tif (!isLeap && day === 29) {\r\n\t\t\t\tday = 1;\r\n\t\t\t\tmonth++;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tday = day;\r\n\t\t}\r\n\r\n\t\thandleDOBChange({ value: day }, { name: \"dobDay\" }, values, setFieldValue);\r\n\t\thandleDOBChange({ value: month }, { name: \"dobMonth\" }, values, setFieldValue);\r\n\t\thandleDOBChange({ value: year }, { name: \"dobYear\" }, values, setFieldValue);\r\n\r\n\t\tconst returnDaysAmountArray = (daysAmount = 31) => {\r\n\t\t\treturn Array(daysAmount)\r\n\t\t\t\t.fill(\"\")\r\n\t\t\t\t.map((_, i) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tvalue: i < 9 ? 0 + \"\" + (i + 1).toString() : (i + 1).toString(),\r\n\t\t\t\t\t\tlabel: i < 9 ? 0 + \"\" + (i + 1).toString() : (i + 1).toString(),\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t};\r\n\r\n\t\tlet daysArray = returnDaysAmountArray(daysAmount);\r\n\t\tsetDays(daysArray);\r\n\t};\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t{isPolicyManager ? (\r\n\t\t\t\t<>\r\n\t\t\t\t\t

Welcome!

\r\n\t\t\t\t\t{/*
Here you can edit details related to your insurance policy.
*/}\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t<>\r\n\t\t\t\t\t

Welcome!

\r\n\t\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\tIt’s not you, It’s us. Please retry later or contact us at (888) OUR-AGIC (687-2442).
\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{isIndividual\r\n\t\t\t\t\t\t\t\t? \"Oops! Something's not right. We could not find a record in our database. Please check each field to ensure that the information is correct.\"\r\n\t\t\t\t\t\t\t\t: \"Oops! Something's not right. We could not find a record in our database. Please ensure that the company’s name matches your insurance document\"}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)\r\n\t\t\t\t}\r\n\t\t\t\tprimaryLabel=\"Ok\"\r\n\t\t\t\tprimaryCallback={closeModal}\r\n\t\t\t/>\r\n\r\n\t\t\t\r\n\t\t\t\t{({\r\n\t\t\t\t\tisSubmitting,\r\n\t\t\t\t\terrors,\r\n\t\t\t\t\tvalues,\r\n\t\t\t\t\ttouched,\r\n\t\t\t\t\tsetFieldValue,\r\n\t\t\t\t\tsetFieldTouched,\r\n\t\t\t\t\thandleBlur,\r\n\t\t\t\t\tvalidateField,\r\n\t\t\t\t\tresetForm,\r\n\t\t\t\t}) => (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{/* Tab buttons to toggle between Individual and Company */}\r\n\r\n\t\t\t\t\t\t{tab === \"login\" && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t// resetForm();\r\n\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"isIndividual\", true);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\tIndividual\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t// resetForm();\r\n\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(\"isIndividual\", false);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\tCorporate\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{values.isIndividual ? (\r\n\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\"TRN \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t*\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{touched.trn && errors.trn &&
{errors.trn}
}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\"Date of Birth \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t*\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{/*
*/}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t getSelectedDate(selectedDate, setFieldValue, values)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{(touched.dobYear && errors.dobYear || touched.dobDay && errors.dobDay || touched.dobMonth && errors.dobMonth)?
Please enter a valid Date
: null}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\"Gender \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t*\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{({ field }) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldTouched(\"gender\", true, false);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalidateField(\"gender\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={e =>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFieldValue(field.name, e.value)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{touched.gender && errors.gender &&
{errors.gender}
}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t{/* Two Columns one for Company Name and One for TRN */}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\"Company Name \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t*\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{touched.companyName && errors.companyName && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{errors.companyName}
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\"TRN \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t*\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{touched.companyTRN && errors.companyTRN &&
{errors.companyTRN}
}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tGet Started\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tWant to purchase a new policy?
\r\n\t\t\t\t\t\t\t\t\t\t\t {redirect()}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\tCLICK HERE\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n","import { format } from \"date-fns\";\r\nimport { dNet, nodeApi } from \"api/Middleware\";\r\nimport { mwGlobalNameCompanySearch, mwGlobalNameSearch } from \"api/dNet/GlobalName\";\r\nimport { checkKey } from \".\";\r\n\r\nexport default class AuthNetworkLayer {\r\n\tstatic global_name_search = \"global-name-search\";\r\n\r\n\t/**\r\n\t * Get a token from the server. Continuous token refresh option\r\n\t */\r\n\tstatic async login() {\r\n\t\tlet token = \"\";\r\n\t\tlet success = false;\r\n\r\n\t\tawait dNet.get(\"/auth\").then(res => {\r\n\t\t\ttoken = res?.data[0]?.Response[0]?.key;\r\n\t\t\tsuccess = res?.data[0]?.Response[0]?.Login;\r\n\t\t});\r\n\r\n\t\treturn { token, success };\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * Get the UserData from the server\r\n\t *\r\n\t * @param {{dob,gender,national_id,national_id_type}} payload\r\n\t * @param {string} global_name_id\r\n\t */\r\n\tstatic async getUserData(payload, global_name_id) {\r\n\t\t// const axios = require(\"axios\").default;\r\n\t\tconst response = await nodeApi.post(\r\n\t\t\t`/auth/contact/methods`,\r\n\t\t\t{ payload, global_name_id },\r\n\t\t\t{\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t},\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\t/**\r\n\t * @param {any} token\r\n\t * @param {any} globalNameId\r\n\t */\r\n\tstatic async retrieveReceipts(token, globalNameId) {\r\n\t\t// const startDate =\"05/05/2019\";\r\n\t\t// const endDate = \"11/02/2023\";\r\n\r\n\t\tconst endDate = new Date();\r\n\t\tconst startDate = new Date(endDate);\r\n\t\tstartDate.setFullYear(endDate.getFullYear() - 5);\r\n\r\n\t\tconst endpoint = `/getReceipts`;\r\n\t\tconst reqType = \"get\";\r\n\t\tlet response = {};\r\n\t\tconst payload = {\r\n\t\t\tparams: {\r\n\t\t\t\tglobalNameId: globalNameId,\r\n\t\t\t\tstartDate: startDate.toLocaleDateString().toString(),\r\n\t\t\t\tendDate: endDate.toLocaleDateString().toString(),\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tresponse = await checkKey({ endpoint, payload, reqType });\r\n\r\n\t\tif (response.success && response.receipts.length) {\r\n\t\t\tlet filteredReceipts = response.receipts;\r\n\t\t\t// This currently only allows receipts that match the exact receipt number typed. It should match all the valid receipts for that day\r\n\t\t\t// for (let i = 0; i < response.data.receipts.length; i++) {\r\n\t\t\t// \tconst receipt = response.data.receipts[i];\r\n\r\n\t\t\t// \tif (receipt.receipt_number.includes(receiptNumber) /* || receipt.policy_number === policyNumber*/)\r\n\t\t\t// \t\tfilteredReceipts = response.data.receipts;\r\n\t\t\t// }\r\n\t\t\treturn filteredReceipts;\r\n\t\t} else return null;\r\n\t}\r\n\r\n\t/** Get the global name id of this person or company\r\n\t * @param {{dob: String, gender: String, national_id: String, national_id_type: String, is_a_company: Boolean, company_name: String}} props\r\n\t */\r\n\tstatic async getGlobalNameId({ dob, gender, national_id, national_id_type, is_a_company, company_name }) {\r\n\t\tconst payload = {\r\n\t\t\tnational_id_type,\r\n\t\t\tnational_id,\r\n\t\t\tgender,\r\n\t\t\tdob,\r\n\t\t\tis_a_company,\r\n\t\t\tcompany_name,\r\n\t\t};\r\n\r\n\t\treturn mwGlobalNameSearch(payload);\r\n\t}\r\n\r\n\t/** Get the global name id of this person\r\n\t \r\n\t * @param {{national_id: String, national_id_type: String, is_a_company: Boolean, company_name: String}} props\r\n\t */\r\n\r\n\tstatic async getGlobalNameCompanyId(token, { national_id, national_id_type, is_a_company, company_name }) {\r\n\t\tconst payload = {\r\n\t\t\tnational_id_type,\r\n\t\t\tnational_id,\r\n\t\t\tis_a_company,\r\n\t\t\tcompany_name,\r\n\t\t};\r\n\r\n\t\treturn mwGlobalNameCompanySearch(token, payload);\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieve session for a user's token\r\n\t \r\n\t * @param {string} trn -- trn of user\r\n\t * @returns {Promise}\r\n\t */\r\n\r\n\tstatic async retrieveSession(trn) {\r\n\t\tconst endpoint = \"/session/retrieve\";\r\n\r\n\t\tconst headers = {\r\n\t\t\t\"customer-id\": trn,\r\n\t\t\t\"content-type\": \"application/json\",\r\n\t\t};\r\n\r\n\t\tconst data = trn;\r\n\r\n\t\tconst response = await nodeApi.post(endpoint, data, { headers });\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tstatic async sendOTP(customer, method, userid, national_id, token) {\r\n\t\t// const axios = require(\"axios\").default;\r\n\t\tlet data = { customer, userid, national_id, token };\r\n\t\tmethod.phone ? (data.phone = method.phone) : (data.email = method.email);\r\n\t\tconst response = await nodeApi.post(`/token/get`, data, {\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tstatic async sendPaymentConfirmation(userid, national_id, phone, amount, currency, policyNumber) {\r\n\t\tconst response = await nodeApi.post(`/token/payment-confirmation-sms`, {\r\n\t\t\tuserid,\r\n\t\t\tnational_id,\r\n\t\t\tphone,\r\n\t\t\tamount,\r\n\t\t\tcurrency,\r\n\t\t\tpolicyNumber,\r\n\t\t});\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tstatic async verifyOTP(otptoken, userid, national_id, transaction_type) {\r\n\t\t// const axios = require(\"axios\").default;\r\n\t\tconst response = await nodeApi.post(\r\n\t\t\t`/token/verify`,\r\n\t\t\t{ otp: otptoken, userid: userid, national_id, transaction: transaction_type },\r\n\t\t\t{\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t},\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn response.data;\r\n\t}\r\n\t/**\r\n\t *\r\n\t * @param {boolean} is_claims\r\n\t * @param {boolean} is_policy_manager\r\n\t * @param {String} key\r\n\t * @param {String} plate_num\r\n\t * @param {String} policy_num\r\n\t * @param {String} chassis_num\r\n\t * @param {String} national_id\r\n\t * @param {String} mother_maiden_name\r\n\t * @param {String} transaction_type\r\n\t * @param {boolean} is_a_company\r\n\t * @returns\r\n\t */\r\n\tstatic async alternateVerification(\r\n\t\tis_claims,\r\n\t\tis_policy_manager = false,\r\n\t\tkey,\r\n\t\tplate_num = \"\",\r\n\t\tpolicy_num,\r\n\t\tchassis_num = \"\",\r\n\t\tnational_id,\r\n\t\tmother_maiden_name = \"\",\r\n\t\ttransaction_type,\r\n\t\tis_a_company,\r\n\t\tisTrackAClaim = false\r\n\t) {\r\n\t\tconst endpoint =\r\n\t\t\tis_claims && is_a_company ? \"\" : is_claims && mother_maiden_name === \"\" ? \"\" : is_claims ? \"/c\" : \"\";\r\n\r\n\t\t// const axios = require(\"axios\").default;\r\n\t\tconst response = await nodeApi.post(\r\n\t\t\t`${process.env.REACT_APP_API_URL}/auth/other${endpoint}`,\r\n\t\t\t{\r\n\t\t\t\tkey,\r\n\t\t\t\tplate_num,\r\n\t\t\t\tpolicy_num,\r\n\t\t\t\tis_policy_manager,\r\n\t\t\t\tis_claims,\r\n\t\t\t\tchassis_num,\r\n\t\t\t\tnational_id,\r\n\t\t\t\tmother_maiden_name,\r\n\t\t\t\ttransaction: transaction_type,\r\n\t\t\t\tis_a_company,\r\n\t\t\t\tisTrackAClaim,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t},\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {string} national_id\r\n\t * @param {string} policy_number\r\n\t * @returns\r\n\t */\r\n\tstatic async getTrnPolicyToken(national_id, policy_number) {\r\n\t\tconst response = await nodeApi.post(\r\n\t\t\t\"/token\",\r\n\t\t\t{ national_id, policy_number },\r\n\t\t\t{ headers: { Accept: \"application/json;*/*\", \"Content-Type\": \"application/json\" } }\r\n\t\t);\r\n\t\treturn response.data;\r\n\t}\r\n}\r\n","import { ClaimsNetworkLayer } from \"helpers\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nexport const MissingDocUploadToRegistry = async (document, registry_id) => {\r\n\r\n\tlet successArray = []; \r\n\t\tfor (let x = 0; x < document?.length; x++) {\r\n\t\t\t// don't reupload a document\r\n\r\n\t\t\tlet fileName = document[x].name;\r\n\t\t\tlet fileType = document[x].name.split(\".\").pop().toLowerCase();\r\n\t\t\tlet fileData = document[x].blob;\r\n\t\t\tlet description = document[x].description;\r\n\r\n\t\t\tif (!fileData) {\r\n\t\t\t\tsuccessArray[x] = false; \r\n\t\t\t\ttoast.error(`File \"${fileName}\" could not be uploaded but it can be uploaded at a later date.`);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet doc_type = \"Images\";\r\n\t\t\tif (fileType === \"pdf\" || fileType === \"doc\") doc_type = \"File\";\r\n\t\t\telse if (fileType === \"jpg\" || fileType === \"jpeg\" || fileType === \"png\") doc_type = \"Images\";\r\n\r\n\t\t\tconst filesLinked = await ClaimsNetworkLayer.linkRegistryFile(\r\n\t\t\t\tregistry_id,\r\n\t\t\t\tfileName,\r\n\t\t\t\tfileType,\r\n\t\t\t\tfileData,\r\n\t\t\t\tdescription,\r\n\t\t\t\tdoc_type,\r\n\t\t\t\t() => {} \r\n\t\t\t);\r\n\t\t\t// TODO: replace alert with modal popup that prevents navigation until user can confirm the message\r\n\t\t\tif (!filesLinked.success) {\r\n\t\t\t\tsuccessArray[x] = false; \r\n\t\t\t} else {\r\n\t\t\t\tsuccessArray[x] = true; \r\n\t\t\t}\r\n\t\t}\r\n\treturn successArray;\r\n};\r\n ","import axios from \"axios\";\r\n\r\n/** This is so we can specify the baseurl and other common headers for each query immidiately */\r\nexport const tomCat = axios.create({\r\n\tbaseURL: process.env.REACT_APP_BACKEND_URL,\r\n\theaders: {\r\n\t\tAccept: \"application/json;*/*\",\r\n\t\t\"Content-Type\": \"application/json\",\r\n\t},\r\n});\r\n\r\nexport const dNet = axios.create({\r\n\tbaseURL:process.env.REACT_APP_DOT_NET_BACKEND_URL,\r\n\theaders: {\r\n\t\tAccept: \"application/json;*/*\",\r\n\t\t\"Content-Type\": \"application/json\",\r\n\t\t\"X-Api-Key\" : process.env.REACT_APP_DOTNET_API_KEY,\r\n\t\t\r\n\t},\r\n});\r\n\r\nexport const nodeApi = axios.create({\r\n\tbaseURL: process.env.REACT_APP_API_URL, \r\n\theaders: {\r\n\t\tAccept: \"application/json;*/*\",\r\n\t\t\"Access-Control-Allow-Origin\": \"*\",\r\n\t\t\"Content-Type\": \"application/json\",\r\n\t},\r\n});\r\n\r\n// export const googleApi = axios.create({\r\n// \tbaseURL: process.env.REACT_APP_GOOGLE_API_URL,\r\n// \theaders: {\r\n// \t\tAccept: \"application/json;*/*\",\r\n// \t\t\"Access-Control-Allow-Origin\": \"*\",\r\n// \t\t\"Content-Type\": \"application/json\",\r\n// \t},\r\n// });\r\n","export default __webpack_public_path__ + \"static/media/cart_checker2.9790d24a.svg\";","import { nodeApi } from \"api/Middleware\";\r\nimport store from \"../../globals/index\";\r\n\r\n/**\r\n * Makes a network request to compress a file\r\n * @param {Object} params\r\n */\r\nexport async function compressPDF({ endpoint, payload },headers = {}) {\r\n\tlet bearerToken = store.getState().auth.token;\r\n\tlet response = {};\r\n\r\n\tconst jwt_auth = process.env.REACT_APP_JWT_AUTHENTICATION;\r\n\r\n\tif (jwt_auth && bearerToken) {\r\n\t\theaders['Authorization'] = \"Bearer \" + bearerToken;\r\n\t}\r\n\r\n await nodeApi\r\n\t.post(endpoint, payload, {\r\n\t\theaders,\r\n\t})\r\n .then(res => {\r\n response = res.data;\r\n })\r\n .catch(error => {\r\n if (error.response) return error.response;\r\n });\r\n\tconst data = response;\r\n\tif (!data.success) {\r\n\t\treturn null;\r\n\t}\r\n\treturn data.data;\r\n}\r\n\r\n/**\r\n * Makes a network request to compress a file\r\n * @param {Object} params\r\n */\r\n export async function createEFT({ endpoint, payload }, config = {}) {\r\n\tlet response = {};\r\n\r\n await nodeApi\r\n .post(endpoint, payload, config)\r\n .then(res => {\r\n response = res;\r\n })\r\n .catch(error => {\r\n if (error.response) return error.response;\r\n });\r\n\tconst data = response;\r\n\tif (data.success==false) {\r\n\t\treturn data.message;\r\n\t}\r\n\treturn data.data;\r\n}","import { useEffect, useState } from \"react\";\r\nimport calendar_icon from \"assets/img/claims_icons/calendar.svg\";\r\nimport \"./Calendar.scss\";\r\n\r\nexport default function Calendar({ getSelectedDate }) {\r\n\tconst [selectedDate, setSelectedDate] = useState(\"\");\r\n\tconst today = new Date();\r\n\tlet currentDay = today.getDay();\r\n\tlet currentMonth = today.getMonth() + 1;\r\n\tconst currentYear = today.getFullYear();\r\n\tcurrentDay = currentDay < 10 ? \"0\" + currentDay.toString() : currentDay.toString();\r\n\tcurrentMonth = currentMonth < 10 ? \"0\" + currentMonth.toString() : currentMonth.toString();\r\n\tconst maxDate = new Date().toLocaleDateString(\"en-ca\");\r\n\r\n\tuseEffect(() => {\r\n\t\tif (selectedDate !== undefined && selectedDate !== \"\") getSelectedDate(selectedDate);\r\n\t}, [selectedDate]);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t setSelectedDate(e.target.value)}\r\n\t\t\t\tvalue={selectedDate}\r\n\t\t\t\tmax={maxDate}\r\n\t\t\t/> \r\n\t\t
\r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport \"./Footer.scss\";\r\n\r\n\r\nfunction Footer() {\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t

\r\n\t\t\t\r\n\t\t\t© {new Date().getFullYear()} Advantage General Insurance Company \r\n\t\t\t Privacy Policy\r\n\t \t

\r\n\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default Footer;\r\n","import React, { useState } from \"react\";\r\nimport { AuthNetworkLayer, PolicyHelper } from \"helpers\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { setLoading, setLoadingMessage } from \"globals/overlays\";\r\nimport { Formik, Form, Field } from \"formik\";\r\nimport Modal from \"components/misc/Modal\";\r\nimport jwtDecoder from \"jwt-decode\";\r\nimport { Row, Col } from \"reactstrap\";\r\nimport \"./otp.scss\";\r\n\r\nimport {\r\n\tsetRenewablePolicies,\r\n\tgetUser,\r\n\tgetToken,\r\n\tlogin,\r\n\tgetUserFormData,\r\n\tgetUserId,\r\n\tsetCurrentUser,\r\n\tsetPolicies,\r\n\tsetExtendablePolicies,\r\n\tsetCoverNotePolicies,\r\n\tgetTransactionType,\r\n\tsetActivePolicies,\r\n\tsetHasMotorPolicies,\r\n\tsetHasHomePolicies,\r\n\tsetHasLiabilitiesPolicies,\r\n\tsetToken,\r\n} from \"globals/auth\";\r\nimport { getExtendablePoliciesPaymentPlan, getNewGlobalToken } from \"helpers/auth\";\r\nimport { PAY_BALANCE, RENEWAL } from \"pages/RenewPolicy/costants\";\r\nimport { ERROR } from \"../Modal/constants\";\r\nimport InfoIcon from \"../InfoIcon\";\r\nimport { useScreenType } from \"globals/screenTypeHook\";\r\nimport { clearPolicyManager } from \"globals/policymanager\";\r\nimport { setClaimsForTracking, setClaimsStatuses } from \"globals/claims\";\r\nimport { getAllClaimStatus, getClaims } from \"api/dNet/Claims\";\r\n\r\nfunction validatePolicy(value) {\r\n\tlet error;\r\n\tif (!value) {\r\n\t\terror = \"Policy Number is required\";\r\n\t} else if (!/^\\d{1,7}$/g.test(value)) error = \"Please enter a valid policy number\";\r\n\r\n\treturn error;\r\n}\r\n\r\nfunction validateLicense(value) {\r\n\tlet error;\r\n\tif (!value) error = \"License Number is required\";\r\n\telse if (value.length < 5) error = \"License Number is invalid\";\r\n\r\n\treturn error;\r\n}\r\n\r\nfunction validateChassisNumber(value) {\r\n\tlet error;\r\n\tif (!value) error = \"Chassis Number is required\";\r\n\telse if (value.length < 5) error = \"Chassis Number is invalid\";\r\n\r\n\treturn error;\r\n}\r\n\r\nconst defaultFormValues = {\r\n\tpolicyNum: \"\",\r\n\tchassisNum: \"\",\r\n\tlicenseNum: \"\",\r\n\tglobalName: \"\",\r\n};\r\n\r\nfunction OTP({ isClaims = false, isTrackAClaim = false, isPayBalance = false, isPolicyManager = false }) {\r\n\tconst transactionType = useSelector(getTransactionType);\r\n\tconst history = useHistory();\r\n\tconst dispatch = useDispatch();\r\n\tconst user = useSelector(getUser);\r\n\tconst userFormData = useSelector(getUserFormData);\r\n\tconst userId = useSelector(getUserId);\r\n\tconst token = useSelector(getToken);\r\n\tconst [val, setVal] = useState(\"\");\r\n\tconst [open, openModal] = useState(false);\r\n\tconst [modalError, setModalError] = useState(\"\");\r\n\tconst [currentMethod, setCurrentMethod] = useState(\"\");\r\n\tconst { isMobile } = useScreenType();\r\n\r\n\tconst closeModal = () => {\r\n\t\topenModal(false);\r\n\t};\r\n\r\n\tconst setValue = val => {\r\n\t\tsetVal(val);\r\n\t};\r\n\r\n\tasync function validateMaidenName(value) {\r\n\t\tlet error;\r\n\t\tif (!value) return (error = \"Mother's Maiden name is required\");\r\n\t\treturn error;\r\n\t}\r\n\r\n\tconst checkPoliciesForDepartmentClass = (policies, departmentClass) => {\r\n\t\treturn policies.some(policy => policy.department_class === departmentClass);\r\n\t};\r\n\r\n\tconst getClaimStatus = async () => {\r\n\t\ttry {\r\n\t\t\tconst claimsStatuses = await getAllClaimStatus();\r\n\t\t\tdispatch(setClaimsStatuses(claimsStatuses.response));\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(e);\r\n\t\t}\r\n\t};\r\n\r\n\tconst fetchClaims = async policies => {\r\n\t\tlet i;\r\n\t\tconst newClaimsArray = [];\r\n\t\tfor (i = 0; i < policies?.length; i++) {\r\n\t\t\tdispatch(setLoadingMessage(`Loading policy details: ${policies?.length - (i + 1)} policies remaining`));\r\n\t\t\tconst payload = {\r\n\t\t\t\tpolicy_id: policies[i]?.policy_id,\r\n\t\t\t};\r\n\r\n\t\t\tconst retrievedClaims = await getClaims(payload);\r\n\r\n\t\t\tif (!retrievedClaims?.success) continue;\r\n\r\n\t\t\tnewClaimsArray.push(...retrievedClaims.claims);\r\n\t\t}\r\n\t\treturn newClaimsArray;\r\n\t};\r\n\r\n\t/**\r\n\t * Handles the submission of the form\r\n\t * @param {defaultFormValues} values\r\n\t */\r\n\tconst handleOtherSubmit = async values => {\r\n\t\tlet hasMotorPolicies = false;\r\n\t\tlet hasHomePolicies = false;\r\n\t\tlet hasLiabilityPolicies = false;\r\n\r\n\t\tdispatch(setLoadingMessage(\"Authenticating User\"));\r\n\t\tdispatch(setLoading(true));\r\n\r\n\t\ttry {\r\n\t\t\tlet response;\r\n\t\t\tlet count = 2;\r\n\t\t\tlet _token = token;\r\n\r\n\t\t\twhile (count > 0) {\r\n\t\t\t\tresponse = await AuthNetworkLayer.alternateVerification(\r\n\t\t\t\t\tisClaims,\r\n\t\t\t\t\tisPolicyManager,\r\n\t\t\t\t\tuserId, // change with the otp thing\r\n\t\t\t\t\tvalues?.licenseNum?.trim(),\r\n\t\t\t\t\tvalues?.policyNum?.trim(),\r\n\t\t\t\t\tvalues?.chassisNum?.trim(),\r\n\t\t\t\t\tuserFormData?.national_id,\r\n\t\t\t\t\tvalues?.globalName?.trim(),\r\n\t\t\t\t\ttransactionType,\r\n\t\t\t\t\tuserFormData?.is_a_company,\r\n\t\t\t\t\tisTrackAClaim\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (!response.success && response.message?.includes(\"status code 401\")) {\r\n\t\t\t\t\t_token = (await getNewGlobalToken(3)).token;\r\n\t\t\t\t\t--count;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcount = -1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!response.success)\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t\"Oops! We do not have this information. Please contact our Telebranch at (888) OUR-AGIC (687-2442)\"\r\n\t\t\t\t);\r\n\r\n\t\t\t/** @type {Object} */\r\n\t\t\tconst data = jwtDecoder(response.data);\r\n\r\n\t\t\tlet fetchedClaims = [];\r\n\t\t\tif (isTrackAClaim) {\r\n\t\t\t\tlet statuses = await getClaimStatus();\r\n\r\n\t\t\t\tfetchedClaims = [...(await fetchClaims(data?.policies))];\r\n\t\t\t}\r\n\r\n\t\t\tif (fetchedClaims?.length) dispatch(setClaimsForTracking(fetchedClaims));\r\n\r\n\t\t\t// check for jwt\r\n\t\t\tconst jwt_auth = process.env.REACT_APP_JWT_AUTHENTICATION;\r\n\t\t\tif (jwt_auth) {\r\n\t\t\t\tdispatch(setToken(data.token));\r\n\t\t\t}\r\n\t\t\tdispatch(setCurrentUser(data.user));\r\n\r\n\t\t\thasMotorPolicies = checkPoliciesForDepartmentClass(data?.policies, \"Motor\");\r\n\t\t\thasHomePolicies = checkPoliciesForDepartmentClass(data?.policies, \"Fire\");\r\n\t\t\thasLiabilityPolicies = checkPoliciesForDepartmentClass(data?.policies, \"Liability\");\r\n\r\n\t\t\tdispatch(setHasMotorPolicies(hasMotorPolicies));\r\n\t\t\tdispatch(setHasHomePolicies(hasHomePolicies));\r\n\t\t\tdispatch(setHasLiabilitiesPolicies(hasLiabilityPolicies));\r\n\r\n\t\t\tconst filteredPolicies = data.policies.filter(policy => policy.department_class !== \"Liability\");\r\n\r\n\t\t\tif (isClaims) {\r\n\t\t\t\tdispatch(setPolicies(PolicyHelper.filterForClaims(filteredPolicies)));\r\n\t\t\t\tisTrackAClaim ? history.push(\"/track-my-claim/claim-listing\") : history.push(\"/claims/contact-info\");\r\n\t\t\t} else if (transactionType === PAY_BALANCE) {\r\n\t\t\t\tdispatch(setPolicies(data.policies));\r\n\t\t\t\tlet extendablePolices = await getExtendablePoliciesPaymentPlan(filteredPolicies, token);\r\n\t\t\t\tdispatch(setExtendablePolicies(PolicyHelper.filterForExtension(extendablePolices)));\r\n\t\t\t\thistory.replace(`/${PAY_BALANCE}/contact-info` /* \"/renewal/policy-listing\" */);\r\n\t\t\t} else if (isPolicyManager) {\r\n\t\t\t\t//Updating of Home policies are not being facilitated right now.\r\n\r\n\t\t\t\tconst hasHome = filteredPolicies.some(policy => policy.department_class !== \"Fire\");\r\n\r\n\t\t\t\tdispatch(setHasHomePolicies(hasHome));\r\n\r\n\t\t\t\tconst filteredPoliciesForPolicyManager = filteredPolicies.filter(policy => policy.department_class !== \"Fire\");\r\n\t\t\t\tdispatch(setActivePolicies(PolicyHelper.findAllActiveAndRenewablePolicies(filteredPoliciesForPolicyManager)));\r\n\r\n\t\t\t\tdispatch(clearPolicyManager());\r\n\t\t\t\thistory.push(\"/update-your-policy/policy-listing\");\r\n\t\t\t} else {\r\n\t\t\t\tdispatch(setRenewablePolicies(PolicyHelper.filterForRenewal(filteredPolicies)));\r\n\t\t\t\thistory.replace(\"/renewal/contact-info\" /* \"/renewal/policy-listing\" */);\r\n\t\t\t}\r\n\t\t\tdispatch(login());\r\n\t\t} catch (e) {\r\n\t\t\tsetModalError(e.message);\r\n\t\t\topenModal(true);\r\n\t\t} finally {\r\n\t\t\tdispatch(setLoading(false));\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleSubmit = async () => {\r\n\t\tdispatch(setLoading(true));\r\n\r\n\t\ttry {\r\n\t\t\tif (currentMethod === \"email\" || currentMethod === \"phone\") {\r\n\t\t\t\t// generate token and send email\r\n\t\t\t\t// need it for here\r\n\t\t\t\tconst choice = { method: currentMethod, contact: currentMethod === \"phone\" ? val : user.email_address };\r\n\t\t\t\tlet response = await AuthNetworkLayer.sendOTP(\r\n\t\t\t\t\t`${user.first_name || user.last_name || userFormData.company_name}`,\r\n\t\t\t\t\t{ [currentMethod]: choice.contact },\r\n\t\t\t\t\tuserId,\r\n\t\t\t\t\tuserFormData.national_id,\r\n\t\t\t\t\ttoken\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (!response.success) throw new Error(response.message);\r\n\t\t\t\tif (isTrackAClaim) {\r\n\t\t\t\t\thistory.push(\"/track-my-claim/otp-verification\", choice);\r\n\t\t\t\t} else if (transactionType === RENEWAL) history.push(\"/renewal/otp-verification\", choice);\r\n\t\t\t\telse if (transactionType === PAY_BALANCE) history.push(\"/paybalance/otp-verification\", choice);\r\n\t\t\t\telse if (isPolicyManager) history.push(\"/update-your-policy/otp-verification\", choice);\r\n\t\t\t\telse history.push(\"/claims/otp-verification\", choice);\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tsetModalError(e.message);\r\n\t\t\topenModal(true);\r\n\t\t} finally {\r\n\t\t\tdispatch(setLoading(false));\r\n\t\t}\r\n\t};\r\n\r\n\tconst setMethod = e => {\r\n\t\tsetCurrentMethod(e.target.value);\r\n\t};\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t

For your own security, please verify your identify by using one of the options below.

\r\n\t\t\t\t\t{user && (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{user.phone_numbers &&\r\n\t\t\t\t\t\t\t\tuser.phone_numbers\r\n\t\t\t\t\t\t\t\t\t.filter(phone => phone.use_for_sms)\r\n\t\t\t\t\t\t\t\t\t.map((phone, i) => (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetMethod(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetValue(phone.value);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tname=\"verification-method\"\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t{phone.carrier}: {phone.value}{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t))}\r\n\r\n\t\t\t\t\t\t\t{user.email_address && user.email_address.length > 0 && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tsetMethod(e);\r\n\t\t\t\t\t\t\t\t\t\t\tsetValue(e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\tname=\"verification-method\"\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t{user.email_address} \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{isPolicyManager ? (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetMethod(e);\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetValue(e.target.value);\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\ttype=\"radio\"\r\n\t\t\t\t\t\t\t\t\t\t\tname=\"verification-method\"\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\tRegistration Plate{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t) : !isTrackAClaim ? (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t\t{currentMethod.includes(\"other\") ? (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{({ values, isSubmitting, submitCount, errors, touched, handleChange }) => {\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t= 1 && errors.policyNum\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \" hasError\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tWhat is your Policy Number?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/^\\d{1,7}$|^$/g.test(e.target.value)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? handleChange(\"policyNum\")(e)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: console.log(\"letters input not accepted in this field\");\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalidate={validatePolicy}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{touched.policyNum && errors.policyNum && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
{errors.policyNum}
\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{isPolicyManager ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{val === \"other-chassis-no\" && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t= 1 && errors.chassisNum\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \" hasError\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWhat is your Chassis Number?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{touched.chassisNum && errors.chassisNum && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{errors.chassisNum}
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{val === \"other-reg-no\" && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t= 1 && errors.licenseNum\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \" hasError\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWhat is your License Plate Number?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{touched.licenseNum && errors.licenseNum && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{errors.licenseNum}
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t= 1 && errors.licenseNum\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \" hasError\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tWhat is your License Plate Number?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{touched.licenseNum && errors.licenseNum && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{errors.licenseNum}
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{!userFormData?.is_a_company ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{isClaims && user?.mother_maiden_name !== \"\" ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t= 1 && errors.globalName\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \" hasError\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWhat is your Mother's Maiden Name?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t * \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{touched.globalName && errors.globalName && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
{errors.globalName}
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* Object.keys(errors).length === 0 &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalues.licenseNum.length > 0 &&\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalues.policyNum.length > 0 && */\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t(isClaims && !userFormData?.is_a_company\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? values.policyNum.length >= 5 &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t values.licenseNum.length >= 5 &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t (user?.mother_maiden_name !== \"\" ? values.globalName.length !== 0 : true)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: true) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t 0 && */ Object.entries(errors).length > 0 ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues.policyNum.length < 5 ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tisPolicyManager\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? (val === \"other-chassis-no\" && values.chassisNum.length < 6) ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t (val === \"other-reg-no\" && values.licenseNum.length < 5)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: values.licenseNum.length < 5\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ borderRadius: 7 }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSubmit\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t
\r\n\t\t\t\t) : currentMethod === \"email\" || currentMethod === \"phone\" ? (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tSend\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t) : null}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\nexport default OTP;\r\n","import React, { useState } from \"react\";\r\nimport { useHistory, Link, Redirect } from \"react-router-dom\";\r\nimport { AuthNetworkLayer, PolicyHelper } from \"helpers\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { setLoading, setLoadingMessage } from \"globals/overlays\";\r\nimport Timer from \"react-compound-timer\";\r\nimport Modal from \"components/misc/Modal\";\r\nimport jwtDecoder from \"jwt-decode\";\r\nimport {\r\n\tgetUser,\r\n\tlogin,\r\n\tgetToken,\r\n\tsetRenewablePolicies,\r\n\tgetUserFormData,\r\n\tgetUserId,\r\n\tsetCurrentUser,\r\n\tsetPolicies,\r\n\tsetExtendablePolicies,\r\n\tgetTransactionType,\r\n\tsetCoverNotePolicies,\r\n\tsetActivePolicies,\r\n\tsetHasMotorPolicies,\r\n\tsetHasHomePolicies,\r\n\tsetHasLiabilitiesPolicies,\r\n\tsetToken,\r\n\r\n\r\n} from \"globals/auth\";\r\nimport { PAY_BALANCE, RENEWAL } from \"pages/RenewPolicy/costants\";\r\nimport { getExtendablePoliciesPaymentPlan } from \"helpers/auth\";\r\nimport { ERROR } from \"../Modal/constants\";\r\nimport { createLog } from \"helpers/log\";\r\nimport { clearPolicyManager } from \"globals/policymanager\";\r\nimport { getAllClaimStatus, getClaims } from \"api/dNet/Claims\";\r\nimport { setClaimsForTracking, setClaimsStatuses } from \"globals/claims\";\r\n\r\nexport default function OTPVerification({\r\n\tisClaims = false,\r\n\tisTrackAClaim = false,\r\n\tisPayBalance = false,\r\n\tisPolicyManager = false,\r\n\tlocation,\r\n}) {\r\n\tconst token = useSelector(getToken);\r\n\tconst history = useHistory();\r\n\tconst dispatch = useDispatch();\r\n\tconst user = useSelector(getUser);\r\n\tconst userId = useSelector(getUserId);\r\n\tconst userFormData = useSelector(getUserFormData);\r\n\tconst transactionType = useSelector(getTransactionType);\r\n\tconst [error, setError] = useState(\"\");\r\n\tconst [OTPToken, setOTPToken] = useState(\"\");\r\n\tconst [isModalVisible, showModal] = useState(false);\r\n\r\n\t/**\r\n\t * Similar to the function that is used to generate\r\n\t * the OTP in the previous page.*/\r\n\tconst resendToken = async () => {\r\n\t\ttry {\r\n\t\t\tdispatch(setLoadingMessage('Resending token'));\r\n\t\t\tdispatch(setLoading(true));\r\n\t\t\tlet method = location.state;\r\n\t\t\t// use the values passed from OTP\r\n\t\t\tlet response = await AuthNetworkLayer.sendOTP(\r\n\t\t\t\t`${user.first_name || user.last_name || user.company_name}`,\r\n\t\t\t\t{ [method.method]: method.contact },\r\n\t\t\t\tuserId,\r\n\t\t\t\tuserFormData.national_id,\r\n\r\n\t\t\t);\r\n\t\t\tif (!response.success) throw new Error(response.message);\r\n\t\t} catch (e) {\r\n\t\t\tsetError(e.message);\r\n\t\t\tshowModal(true);\r\n\t\t} finally {\r\n\t\t\tdispatch(setLoading(false));\r\n\t\t}\r\n\t};\r\n\r\n\tconst checkPoliciesForDepartmentClass = (policies, departmentClass) => {\r\n\t\treturn policies.some(policy => policy.department_class === departmentClass);\r\n\t}\r\n\r\n\tconst getClaimStatus =async () =>{\r\n\t\ttry\r\n\t\t{\r\n\t\tconst claimsStatuses = await getAllClaimStatus();\r\n\t\tdispatch(setClaimsStatuses(claimsStatuses.response))\r\n\t\t}\r\n\t\tcatch(e)\r\n\t\t{\r\n\t\t\tconsole.log(e);\r\n\t\t}\r\n\r\n\t} \r\n\r\n\r\n\r\n\r\n\tconst fetchClaims = async (policies) => {\r\n\t\tlet i;\r\n\t\tconst newClaimsArray = [];\r\n\t\tfor (i = 0; i < policies?.length; i++) {\r\n\t\t\tdispatch(setLoadingMessage(`Loading policy details: ${policies?.length - (i+1)} policies remaining`));\r\n\t\t\tconst payload = {\r\n\t\t\t\tpolicy_id: policies[i]?.policy_id,\r\n\t\t\t};\r\n\r\n\r\n\t\t\tconst retrievedClaims = await getClaims(payload);\r\n\r\n\t\t\tif (!retrievedClaims?.success)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tnewClaimsArray.push(...retrievedClaims.claims);\r\n\t\t}\r\n\t\treturn newClaimsArray;\r\n\t}\r\n\t\r\n\t/**\r\n\t * Verifies an entered user token\r\n\t * @param {*} otp\r\n\t * @param {*} userid\r\n\t * @param {*} national_id\r\n\t \r\n\t */\r\n\tconst verifyToken = async (otp, userid, national_id) => {\r\n\t\tlet response,\r\n\t\t\tdata = {};\r\n\r\n\t\tlet hasMotorPolicies = false;\r\n\t\tlet hasHomePolicies = false;\r\n\t\tlet hasLiabilityPolicies = false;\r\n\t\ttry {\r\n\t\t\tdispatch(setLoadingMessage('Authenticating User'));\r\n\t\t\tdispatch(setLoading(true));\r\n\t\t\tresponse = await AuthNetworkLayer.verifyOTP(otp, userid, national_id, transactionType);\r\n\t\t\tdata = jwtDecoder(response.data);\r\n\t\t\tif (!response?.success) {\r\n\t\t\t\tthrow new Error(data?.message);\r\n\t\t\t}\r\n\r\n\t\t\tlet fetchedClaims = [];\r\n\t\t\tif (isTrackAClaim)\r\n\t\t\t{\r\n\t\t\t\tlet statuses = await getClaimStatus();\r\n\t\t\t\tfetchedClaims = [... await fetchClaims(data?.policies)];\r\n\t\t\t}\r\n\r\n\t\t\tif (fetchedClaims?.length)\r\n\t\t\tdispatch(setClaimsForTracking(fetchedClaims));\r\n\r\n\t\t\tdispatch(login());\r\n\t\t\t// check for jwt\r\n\t\t\tconst jwt_auth = process.env.REACT_APP_JWT_AUTHENTICATION;\r\n\t\t\tif (jwt_auth) {\r\n\t\t\t\tdispatch(setToken(data.token));\r\n\t\t\t}\r\n\t\t\tdispatch(setCurrentUser(data.user));\r\n\r\n\t\t\tconsole.log(\"Policies 1: \", data?.policies);\r\n\r\n\t\t\thasMotorPolicies = checkPoliciesForDepartmentClass(data?.policies, 'Motor');\r\n\t\t\thasHomePolicies = checkPoliciesForDepartmentClass(data?.policies, 'Fire');\r\n\t\t\thasLiabilityPolicies = checkPoliciesForDepartmentClass(data?.policies, 'Liability');\r\n\r\n\t\t\tdispatch(setHasMotorPolicies(hasMotorPolicies));\r\n\t\t\tdispatch(setHasHomePolicies(hasHomePolicies));\r\n\t\t\tdispatch(setHasLiabilitiesPolicies(hasLiabilityPolicies));\r\n\r\n\t\t\tconst filteredPolicies = data.policies.filter(policy=> policy.department_class !== 'Liability');\r\n\r\n\t\t\tif (isClaims) {\r\n\t\t\t\tconst filteredPoliciesForClaims = filteredPolicies.filter(policy=> policy.department_class !== 'Fire');\r\n\t\t\t\tdispatch(setPolicies(PolicyHelper.filterForClaims(filteredPoliciesForClaims)));\r\n\t\t\t\tisTrackAClaim ? history.push(\"/track-my-claim/claim-listing\") : history.push(\"/claims/contact-info\");\r\n\t\t\t} else if (transactionType === PAY_BALANCE) {\r\n\t\t\t\tlet extendablePolices = await getExtendablePoliciesPaymentPlan(filteredPolicies);\r\n\t\t\t\tdispatch(setExtendablePolicies(PolicyHelper.filterForExtension(extendablePolices)));\r\n\t\t\t\thistory.push(`/${PAY_BALANCE}/contact-info`);\r\n\t\t\t} else if (isPolicyManager) {\r\n\t\t\t\t//Updating of Home policies are not being facilitated right now.\r\n\r\n\t\t\t\tconst hasHome = filteredPolicies.some(policy=> policy.department_class !== 'Fire');\r\n\r\n\t\t\t\tdispatch(setHasHomePolicies(hasHome));\r\n\r\n\t\t\t\tconst filteredPoliciesForPolicyManager = filteredPolicies.filter(policy=> policy.department_class !== 'Fire');\r\n\t\t\t\tdispatch(setActivePolicies(PolicyHelper.findAllActiveAndRenewablePolicies(filteredPoliciesForPolicyManager)));\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tdispatch(clearPolicyManager());\r\n\t\t\t\thistory.push(\"/update-your-policy/policy-listing\");\r\n\t\t\t} else {\r\n\t\t\t\tdispatch(setRenewablePolicies(PolicyHelper.filterForRenewal(filteredPolicies)));\r\n\t\t\t\thistory.push(`/${RENEWAL}/contact-info`);\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tsetError(e.message);\r\n\t\t\tdispatch(setLoading(false));\r\n\t\t\tshowModal(true);\r\n\t\t} finally {\r\n\t\t\tdispatch(setLoading(false));\r\n\t\t\tcreateLog({\r\n\t\t\t\ttrn: national_id,\r\n\t\t\t\ttype: `${transactionType}-OTP`,\r\n\t\t\t\tdata: { ...data },\r\n\t\t\t\terrors: { message: error || !response.success ? response.message : \"\" },\r\n\t\t\t});\r\n\t\t}\r\n\t\tif (token === \"\") return ;\r\n\t};\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t showModal(false)}\r\n\t\t\t\tafterClose={() => setError(\"\")}\r\n\t\t\t/>\r\n\r\n\t\t\t\r\n\t\t\t\t{({ reset, start }) => (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

Please enter your One Time Password (OTP) to verify your identity

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t setOTPToken(e.target.value)} maxLength={6} />\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\t\t (value < 10 ? `0${value}` : `${value}`)} />\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tChange verification method?\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tresendToken().then(() => {\r\n\t\t\t\t\t\t\t\t\t\treset();\r\n\t\t\t\t\t\t\t\t\t\tstart();\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tclassName=\"button secondary-theme-btn\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tResend\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t verifyToken(OTPToken, userId, userFormData.national_id)}\r\n\t\t\t\t\t\t\t\tdisabled={OTPToken.length === 0}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tContinue\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n","import { array, object, string } from \"yup\";\r\n\r\n/**\r\n *\r\n * @param {Object} otherDetailsParty\r\n *\r\n * @param {*} otherDetailsParty.driverIsOwner\r\n * @param {*} otherDetailsParty.driverAtFault\r\n * @param {*} otherDetailsParty.hasInfo\r\n * @param {Object} otherDetailsParty.vehicle\r\n * @param {*} otherDetailsParty.vehicle.regNo\r\n * @param {*} otherDetailsParty.vehicle.insuranceCo\r\n * @param {*} otherDetailsParty.vehicle.policyNo\r\n * @param {*} otherDetailsParty.vehicle.insuranceCompany\r\n * @param {*} otherDetailsParty.vehicle.vehicleMake\r\n * @param {*} otherDetailsParty.vehicle.vehicleYear\r\n * @param {*} otherDetailsParty.vehicle.vehicleModel\r\n * @param {Object} otherDetailsParty.owner\r\n * @param {*} otherDetailsParty.owner.ownerFname\r\n * @param {*} otherDetailsParty.owner.ownerLname\r\n * @param {*} otherDetailsParty.owner.ownerTrn\r\n * @param {*} otherDetailsParty.owner.ownerPhoneNumber\r\n * @param {*} otherDetailsParty.owner.ownerEmail\r\n * @param {*} otherDetailsParty.owner.ownerInjury\r\n * @param {*} otherDetailsParty.owner.ownerInjuryDetails\r\n * @param {*} otherDetailsParty.owner.ownerWasDriver\r\n * @param {*} otherDetailsParty.propertyOwnername\r\n * @param {*} otherDetailsParty.propertyOwnerPhoneNumber\r\n * @param {Object} otherDetailsParty.driver\r\n * @param {*} otherDetailsParty.driver.driverFname\r\n * @param {*} otherDetailsParty.driver.driverLname\r\n * @param {*} otherDetailsParty.driver.driverTrn\r\n * @param {*} otherDetailsParty.driver.driverPhoneNumber\r\n * @param {*} otherDetailsParty.driver.driverEmail\r\n * @param {*} otherDetailsParty.driver.driverInjury\r\n * @param {*} otherDetailsParty.driver.driverInjuryDetails\r\n * @param {[]} otherDetailsParty.passengers\r\n * @param {*} otherDetailsParty.panelDetails\r\n *\r\n * @returns {Object}\r\n */\r\nexport const defaultFormValues = otherDetailsParty => ({\r\n\tdriverIsOwner: otherDetailsParty?.driverIsOwner || \"\",\r\n\tdriverAtFault: otherDetailsParty?.driverAtFault || \"\",\r\n\thasInfo: otherDetailsParty?.hasInfo || \"\",\r\n\tregNo: otherDetailsParty?.vehicle?.regNo || \"\",\r\n\tinsuranceCo: otherDetailsParty?.vehicle?.insuranceCompany || \"\",\r\n\tpolicyNo: otherDetailsParty?.vehicle?.policyNo || \"\",\r\n\tvehicleMake: otherDetailsParty?.vehicle?.vehicleMake || \"\",\r\n\tvehicleModel: otherDetailsParty?.vehicle?.vehicleModel || \"\",\r\n\tvehicleYear: otherDetailsParty?.vehicle?.vehicleYear || \"\",\r\n\townerFname: otherDetailsParty?.owner?.ownerFname || \"\",\r\n\townerLname: otherDetailsParty?.owner?.ownerLname || \"\",\r\n\townerTrn: \"\",\r\n\townerPhoneNumber: otherDetailsParty?.owner?.ownerPhoneNumber || \"\",\r\n\townerEmail: \"\",\r\n\townerInjury: \"\",\r\n\townerInjuryDetails: \"\",\r\n\townerWasDriver: \"\",\r\n\tpropertyOwnername: \"\",\r\n\tpropertyOwnerPhoneNumber: \"\",\r\n\tdriverFname: otherDetailsParty?.driver?.driverFname || \"\",\r\n\tdriverLname: otherDetailsParty?.driver?.driverLname || \"\",\r\n\tdriverTrn: otherDetailsParty?.driver?.driverTrn || \"\",\r\n\tdriverPhoneNumber: otherDetailsParty?.driver?.driverPhoneNumber || \"\",\r\n\tdriverEmail: otherDetailsParty?.driver?.driverEmail || \"\",\r\n\tdriverInjury: otherDetailsParty?.driver?.driverInjury || \"\",\r\n\tdriverInjuryDetails: otherDetailsParty?.driver?.driverInjuryDetails || \"\",\r\n\tpassengers: otherDetailsParty?.passengers || [],\r\n\tpanelDetails: otherDetailsParty?.panelDetails || [],\r\n});\r\nexport const TRNMask = [/\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, /\\d/];\r\nexport const phoneNo = [/\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, /\\d/, /\\d/];\r\n\r\nexport const schema = object().shape({\r\n\tdriverIsOwner: string(),\r\n\tregNo: string().required(\"The Vehicle Registration is Required\"),\r\n\tinsuranceCo: string(),\r\n\tvehicleMake: string().required(\"The Make of the vehicle is Required\"),\r\n\tvehicleModel: string(),\r\n\tvehicleYear: string(),\r\n\tdriverAtFault: string().required(\"An answer to this question is required.\"),\r\n\tpolicyNo: string(),\r\n\townerFname: string().when(\"driverIsOwner\", {\r\n\t\tis: \"Yes\",\r\n\t\totherwise: s => s.required(\"Owner's First Name required\"),\r\n\t}),\r\n\townerLname: string().when(\"driverIsOwner\", {\r\n\t\tis: \"Yes\",\r\n\t\totherwise: s => s.required(\"Owner's Last Name required\"),\r\n\t}),\r\n\townerTrn: string().matches(/^[\\d]{3}-[\\d]{3}-[\\d]{3}$/, \"Please enter a valid TRN\"),\r\n\townerPhoneNumber: string().matches(/^[\\d]{3}-[\\d]{3}-[\\d]{4}$/, \"Enter a valid Phone Number\"),\r\n\townerEmail: string()\r\n\t\t.trim(\"\")\r\n\t\t.matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i, \"Invalid email address\"),\r\n\townerInjury: string(),\r\n\townerInjuryDetails: string(),\r\n\tdriverFname: string().required(\"Driver First Name is Required\"),\r\n\tdriverLname: string().required(\"Driver Last Name is Required\"),\r\n\tdriverTrn: string()\r\n\t\t.matches(/^[\\d]{3}-[\\d]{3}-[\\d]{3}$/, \"Please enter a valid TRN\")\r\n\t\t.required(\"Driver TRN is Required\"),\r\n\tdriverPhoneNumber: string().matches(/^[\\d]{3}-[\\d]{3}-[\\d]{4}$/, \"Enter a valid Phone Number\"),\r\n\tdriverEmail: string()\r\n\t\t.trim(\"\")\r\n\t\t.matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i, \"Please enter a valid Email Address\"),\r\n\tdriverInjury: string().required(\"Select if the Drive is Injured\"),\r\n\tdriverInjuryDetails: string(),\r\n\tpassengers: array().of(\r\n\t\tobject().shape({\r\n\t\t\tfirstName: string().required(\"Passenger's First Name is Required\"),\r\n\t\t\tlastName: string().required(\"Passenger's Last Name is Required\"),\r\n\t\t\ttrn: string().matches(/^[\\d]{3}-[\\d]{3}-[\\d]{3}$/, \"Please enter a valid TRN\"),\r\n\t\t\temail: string()\r\n\t\t\t\t.trim(\"\")\r\n\t\t\t\t.matches(/^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$/, \"Please enter a valid Email Address\"),\r\n\t\t\ttelephone: string().matches(/^[\\d]{3}-[\\d]{3}-[\\d]{4}$/, \"Please enter a valid Phone Number\"),\r\n\t\t\tinjured: string().required(\"Passenger's Injury status needs to be selected\"),\r\n\t\t\tinjuryStatus: string(),\r\n\t\t})\r\n\t),\r\n\tpanelDetails: array(),\r\n});\r\n","import React, { useState } from \"react\";\r\nimport { setLoading, setLoadingMessage } from \"globals/overlays\";\r\nimport { getConfirmationData } from \"globals/confirmation\";\r\nimport { setEmailSent, wasEmailSent } from \"globals/claims\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport Obfuscate from \"react-obfuscate\";\r\nimport { toast } from \"react-toastify\";\r\n// import axios from \"axios\";\r\n\r\nimport \"./PaymentConfirmation.scss\";\r\nimport { nodeApi } from \"api/Middleware\";\r\nimport { useEffect } from \"react\";\r\nimport { getTransactionType, getUser, getMissingDocuments } from \"globals/auth\";\r\nimport { createLog } from \"helpers/log\";\r\nimport { checkExpToken } from \"helpers/auth\";\r\n\r\nfunction PaymentConfirmation() {\r\n\tconst dispatch = useDispatch();\r\n\tconst user = useSelector(getUser);\r\n\tconst transactionType = useSelector(getTransactionType);\r\n\tconst [attempts, setAttempts] = useState(0);\r\n\tconst shouldEmail = useSelector(wasEmailSent) !== true;\r\n\tconst confirmationData = useSelector(getConfirmationData);\r\n\tconst [error, setError] = useState(\"\");\r\n\tconst missingDocuments = useSelector(getMissingDocuments);\r\n\r\n\tconst { receiptNum, paymentDetails, billingDetails, receiptDetails, responseAfterUpdate, isInFlow, files } =\r\n\t\tconfirmationData;\r\n\r\n\t/**\r\n\t * Wraps fileReader in a promise for more async manipulation\r\n\t * @param {Blob} inputFile - If it's a string, it resolves with that value instead\r\n\t */\r\n\tconst readUploadedFileAsText = inputFile => {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif (typeof inputFile === typeof \"\") resolve(inputFile);\r\n\t\t\tconst temporaryFileReader = new FileReader();\r\n\r\n\t\t\ttemporaryFileReader.onerror = () => {\r\n\t\t\t\ttemporaryFileReader.abort();\r\n\t\t\t\treject(new DOMException(\"Problem parsing input file.\"));\r\n\t\t\t};\r\n\r\n\t\t\ttemporaryFileReader.onloadend = () => {\r\n\t\t\t\tresolve(temporaryFileReader.result.toString().split(\",\")[1]);\r\n\t\t\t};\r\n\r\n\t\t\ttemporaryFileReader.readAsDataURL(inputFile);\r\n\t\t});\r\n\t};\r\n\r\n\tconst downloadfiles = async () => {\r\n\t\tconst tempLink = document.createElement(\"a\");\r\n\t\ttempLink.style.display = \"none\";\r\n\t\tdocument.body.appendChild(tempLink);\r\n\r\n\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\tconst b64 = `${files[i].fileContent}`;\r\n\t\t\ttempLink.innerHTML = \"Download PDF file\";\r\n\t\t\ttempLink.download = files[i].filename;\r\n\t\t\ttempLink.href = \"data:application/pdf;base64,\" + b64;\r\n\t\t\ttempLink.click();\r\n\t\t}\r\n\r\n\t\tdocument.body.removeChild(tempLink);\r\n\t};\r\n\r\n\tconst emailClient = async () => {\r\n\t\tdispatch(setLoading(true));\r\n\t\tdispatch(setLoadingMessage(\"Sending your email\"));\r\n\r\n\t\tlet emailResult;\r\n\t\ttry {\r\n\t\t\tlet promises = [];\r\n\t\t\tconst email = billingDetails?.email;\r\n\r\n\t\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\t\tpromises.push(readUploadedFileAsText(files[i].fileContent));\r\n\t\t\t}\r\n\r\n\t\t\tlet result = await Promise.all(promises);\r\n\t\t\tconst isRenewal = (paymentDetails?.paymentPurpose === \"Renewal\" || paymentDetails?.paymentPurpose === \"New Policy\") && isInFlow === true;\r\n\t\t\tconst isQuickPay = !isInFlow;\r\n\r\n\t\t\temailResult = await checkExpToken({endpoint:`/email/file`, payload:{\r\n\t\t\t\temail,\r\n\t\t\t\tfiles,\r\n\t\t\t\tcustomer: `${billingDetails?.firstName} ${billingDetails?.lastName}`,\r\n\t\t\t\tisRenewal,\r\n\t\t\t\tisQuickPay,\r\n\t\t\t\tamount: `${paymentDetails?.paymentAmount.replace(/[, ]+/g, \"\").trim()}`,\r\n\t\t\t\treceipt_number: `${confirmationData?.receiptNum}`,\r\n\t\t\t\tname: `${billingDetails?.firstName} ${billingDetails?.lastName}`,\r\n\t\t\t\tphone: billingDetails?.phoneNumber,\r\n\t\t\t\tpolicy_number: paymentDetails?.policyNumber,\r\n\t\t\t\ttype: paymentDetails?.paymentPurpose,\r\n\t\t\t\tcurrency: paymentDetails?.currencyType,\r\n\t\t\t\tmissing_documents: isRenewal ? missingDocuments : [],\r\n\t\t\t\tisHomePolicy: paymentDetails?.isHomePolicy\r\n\t\t\t}});\r\n\r\n\t\t\tconsole.log(\"missing documents\", missingDocuments);\r\n\r\n\t\t\tif (emailResult.success) {\r\n\t\t\t\ttoast.success(\"Your documents have been sent!\");\r\n\t\t\t\tsetAttempts(attempts + 1);\r\n\t\t\t\tdispatch(setEmailSent(true));\r\n\t\t\t} else {\r\n\t\t\t\temailResult = {\r\n\t\t\t\t\tdata: { success: false, message: \"Oops! Your documents failed to send! Please try again shortly.\" },\r\n\t\t\t\t};\r\n\t\t\t\tsetError(\"Oops! Your documents failed to send! Please try again shortly.\");\r\n\t\t\t\ttoast.error(\"Oops! Your documents failed to send! Please try again shortly.\");\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\temailResult = { data: { success: false, message: \"Error encountered: \" + e.message } };\r\n\t\t\tsetError(\"Error encountered: \" + e.message);\r\n\t\t\ttoast.error(\"Error encountered: \" + e.message);\r\n\t\t} finally {\r\n\t\t\tdispatch(setLoading(false));\r\n\t\t\tcreateLog({\r\n\t\t\t\ttrn: confirmationData.paymentDetails.nationalId,\r\n\t\t\t\ttype: `${transactionType}-PaymentConfirmation`,\r\n\t\t\t\tdata: { emailResult, attempts },\r\n\t\t\t\terrors: { message: error || !emailResult?.success ? emailResult : \"\" },\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tif (paymentDetails?.paymentPurpose === \"Pay Balance\") {\r\n\t\t}\r\n\t\tif (shouldEmail) emailClient();\r\n\t}, []);\r\n\r\n\t/** Has to be done after all useEffects have run */\r\n\tif (\r\n\t\tconfirmationData.billingDetails === null ||\r\n\t\tconfirmationData.paymentDetails === null ||\r\n\t\tObject.keys(confirmationData.billingDetails).length === 0 ||\r\n\t\tObject.keys(confirmationData.paymentDetails).length === 0\r\n\t)\r\n\t\treturn
;\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t

\r\n\t\t\t\t{(paymentDetails.paymentPurpose === \"Renewal\" || paymentDetails?.paymentPurpose === \"New Policy\") && isInFlow ? \"Renewal \" : \"Payment \"}\r\n\t\t\t\tSuccessful\r\n\t\t\t

\r\n\t\t\t

\r\n\t\t\t\tTransaction receipt Number: {receiptNum}\r\n\t\t\t

\r\n\t\t\t

\r\n\t\t\t\t{(paymentDetails.paymentPurpose === \"Renewal\" || paymentDetails?.paymentPurpose === \"New Policy\") && isInFlow ? (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\tWe appreciate your business! Your documents have been emailed, but you may also download them by clicking\r\n\t\t\t\t\t\tthe button below. If you need further assistance, please contact us at{\" \"}\r\n\t\t\t\t\t\t or call our Telebranch at \r\n\t\t\t\t\t\r\n\t\t\t\t) : paymentDetails.paymentPurpose === \"Pay Balance\" && isInFlow ? (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\tA copy of this payment information has been sent to email : {billingDetails.email}. If you need further\r\n\t\t\t\t\t\tassistance, please contact us at or call our Telebranch at{\" \"}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t`Please find the information regarding your payment below. Contact the customer service if you need any more information.\r\n\t\t\t\tPlease retain a copy of this payment information by clicking the Download Receipt button.'`\r\n\t\t\t\t)}\r\n\t\t\t

\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default PaymentConfirmation;\r\n","export default __webpack_public_path__ + \"static/media/trash_icon.7e2d3991.svg\";","export default __webpack_public_path__ + \"static/media/success_icon.a0be7330.svg\";","/** Policies that can be renewed/extended */\r\nexport const includedPolicies = [\r\n\t\"MCOTP\",\r\n\t\"MCOTPS\",\r\n\t\"MCOTN\",\r\n\t\"MPCTP\",\r\n\t\"MCPTP\",\r\n\t\"MMCTP\",\r\n\t\"MPCTN\",\r\n\t\"MPCTPS\",\r\n\t\"MPPTP\",\r\n\t\"MPPTPB\",\r\n\t\"MPPTPBS\",\r\n\t\"MPPTPS\",\r\n\t\"MLXC\",\r\n\t\"MLXCC\",\r\n\r\n\t\"CBSS\",\r\n\t\"MCOC\",\r\n\t\"MCOCS\",\r\n\t\"MCPC\",\r\n\t\"MPCC\",\r\n\t\"MPCCN\",\r\n\t\"MPCCS\",\r\n\t\"MPPC\",\r\n\t\"MPPCB\",\r\n\t\"MPPCBS\",\r\n\t\"MPPCS\",\r\n\t\"MPRC\",\r\n\t\"MUWC\",\r\n\t\"MUWCC\",\r\n\t\"MPRCC\",\r\n\r\n\t\"MCOCN\",\r\n\t\"MCOTF\",\r\n\t\"MPCTF\",\r\n\t\"MPPTF\",\r\n\t\"MMCC\",\r\n\r\n\t\"MSTTP\",\r\n\t\"MSTC\",\r\n\t\"MSTLF\",\r\n\t\"MSTTF\",\r\n];\r\n\r\nexport const applicableNarratives = [\r\n\t\"2000\",\r\n\t\"2008\",\r\n\t\"2012\",\r\n\t\"2020\",\r\n\t\"2021\",\r\n\t\"2022\",\r\n\t\"2031\",\r\n\t\"2032\",\r\n\t\"2036\",\r\n\t\"2042\",\r\n\t\"2043\",\r\n\t\"2044\",\r\n\t\"2045\",\r\n\t\"2046\",\r\n\t\"2049\",\r\n\t\"2050\",\r\n\t\"2051\",\r\n\t\"2052\",\r\n\t\"2053\",\r\n\t\"2056\",\r\n\t\"2057\",\r\n\t\"2058\",\r\n\t\"2055\",\r\n\t\"2041\",\r\n\t\"2019\",\r\n\t\"2047\",\r\n\t\"2023\",\r\n\t\"2033\",\r\n];\r\n\r\nexport const homePolicies = [];\r\n\r\nexport const applicableRiders = {\r\n\tpa_rider: [\"131\", \"132\", \"133\", \"134\", \"135\" /*, \"138A\", \"139A\", \"136A\" */],\r\n\tum_rider: [\"140\", \"141\", \"142\", \"143\", \"144\", \"145\", \"147\"],\r\n};\r\n\r\nexport const comprehensiveCodes = [\r\n\t\"CBSS\",\r\n\t\"MCOC\",\r\n\t\"MCOCS\",\r\n\t\"MCPC\",\r\n\t\"MPCC\",\r\n\t\"MPCCN\",\r\n\t\"MPCCS\",\r\n\t\"MPPC\",\r\n\t\"MPPCB\",\r\n\t\"MPPCBS\",\r\n\t\"MPPCS\",\r\n\t\"MPRC\",\r\n\t\"MUWC\",\r\n\t\"MUWCC\",\r\n\t\"MPRCC\",\r\n\t\"MLXC\",\r\n\t\"MXLXCC\",\r\n];\r\n\r\nexport const comprehensiveAgreedValueCodes = [\"MUWC\", \"MUWCC\", \"MPRC\", \"MPRCC\", \"MLXC\", \"MXLXCC\"];\r\n\r\nexport const includedComprehensiveNonAgreedPolicies = [\r\n\t\"CBSS\",\r\n\t\"MCOC\",\r\n\t\"MCOCS\",\r\n\t\"MCPC\",\r\n\t\"MPCC\",\r\n\t\"MPCCN\",\r\n\t\"MPPC\",\r\n\t\"MPPCB\",\r\n\t\"MPPCBS\",\r\n\t\"MPPCS\",\r\n\t\"MPCCS\",\r\n];\r\n\r\nexport const claimAcceptablePolicies = [\"NCBMLC\"];\r\n\r\nexport const includedAgreedPolicies = [\"MPRCC\", \"MUWC\", \"MPRC\", \"MUWCC\"];\r\n\r\nexport const includedAgreedPoliciesWithGN = [{ prefix: \"MPCCS\", group_name: \"NCBAP\" }];\r\n\r\nexport const thirdPartyCode = [\r\n\t\"MCOTP\",\r\n\t\"MCOTPS\",\r\n\t\"MCOTN\",\r\n\t\"MPCTP\",\r\n\t\"MCPTP\",\r\n\t\"MMCTP\",\r\n\t\"MPCTN\",\r\n\t\"MPCTPS\",\r\n\t\"MPPTP\",\r\n\t\"MPPTPB\",\r\n\t\"MPPTPBS\",\r\n\t\"MPPTPS\",\r\n];\r\n\r\nexport const PA_death_Disablement = [\"131\", \"132\", \"133\", \"134\", \"135\"];\r\n\r\nexport const uninsured_Motorist = [\"140\", \"141\", \"142\", \"143\", \"144\"];\r\n\r\nexport const applicable_policy_prefix_promo = [\"MLXCC\", \"MLXC\", \"MPRCC\", \"MUWC\", \"MPCC\", \"MPCTP\", \"MPRC\", \"MUWCC\"];\r\n","/**\r\n * This merges the policy with the cart and all required extensions ( preexisting extensions). This is consolidated for easy use in the future.\r\n *\r\n * @param {Object} props\r\n * @param {Object} props.policy\r\n * @param {Object[]} props.cart\r\n * @param {Object[]} props.extensions\r\n * @param {Object[]} props.promoCodes\r\n * @returns\r\n */\r\nexport function formatPolicyForRenewal({ policy, cart, extensions, promoCodes }) {\r\n\t//Adding manual_extensions\r\n\tlet _manualExtensions = [];\r\n\tlet _manualLimits = [];\r\n\r\n\t// reformated crt\r\n\tlet length = policy.risks[0].manual_rates.length;\r\n\tconst _cart = cart?.map((cart_item, index) => {\r\n\t\tif (cart_item.manual_extensions) _manualExtensions.push(...cart_item.manual_extensions);\r\n\t\tif (cart_item.manual_limits) _manualLimits.push(...cart_item.manual_limits);\r\n\t\treturn {\r\n\t\t\tposition: length + index + 1,\r\n\t\t\ttype: cart_item.type,\r\n\t\t\tlimit: cart_item.limit,\r\n\t\t\tcategory_position: cart_item.category_position,\r\n\t\t\tcategory: cart_item.category,\r\n\t\t\tcode: cart_item.code,\r\n\t\t\tvalue: cart_item.value,\r\n\t\t\tpremium: cart_item.premium,\r\n\t\t\trate_code_description: cart_item.rate_code_description,\r\n\t\t\tis_blocked: cart_item.is_blocked,\r\n\t\t\trisk_for: cart_item.risk_for,\r\n\t\t};\r\n\t});\r\n\r\n\t// add PA/UM rider if they existed before\r\n\t_manualExtensions.push(...(extensions || []));\r\n\r\n\t// Call Renewal APIs\r\n\tlet _policy = {\r\n\t\t...policy,\r\n\t\t// this ensures the correct updates benefit_items are added on the policy in underwriter\r\n\t\tmanual_extensions: _manualExtensions,\r\n\t\tmanual_limits: _manualLimits,\r\n\t\trisks: policy.risks.map(r => ({\r\n\t\t\t...r,\r\n\t\t\tdiscounts: [...r.discounts, ...promoCodes],\r\n\t\t\tmanual_rates: [...r.manual_rates, ..._cart?.filter(cartitem => cartitem.risk_for === r.risk_id), ...promoCodes],\r\n\t\t\t// needs to be false at all times or no inhouse edits can be made\r\n\t\t\tis_manual_rating: false,\r\n\t\t\t// updates the policy to add the additional benefits to it.\r\n\t\t\trate_handling: \"as_submitted\",\r\n\t\t})),\r\n\t};\r\n\r\n\treturn {\r\n\t\t_cart,\r\n\t\t_manualExtensions,\r\n\t\t_policy,\r\n\t};\r\n}\r\n","import { format, isBefore, isEqual, add, subDays, parse } from \"date-fns\";\r\nimport {\r\n\tincludedPolicies,\r\n\tapplicableNarratives,\r\n\thomePolicies,\r\n\tapplicableRiders,\r\n\tcomprehensiveCodes,\r\n\tcomprehensiveAgreedValueCodes,\r\n\tuninsured_Motorist,\r\n\tPA_death_Disablement,\r\n\tclaimAcceptablePolicies,\r\n\tapplicable_policy_prefix_promo,\r\n} from \"./constants\";\r\nimport config from \"../config\";\r\nimport PolicyNetworkLayer from \"./network\";\r\nimport { nodeApi } from \"api/Middleware\";\r\nimport { formatPolicyForRenewal } from \"./policyFormatting\";\r\nimport { checkExpToken, getNewGlobalToken } from \"helpers/auth\";\r\nimport { setActivePolicies, setCurrentUser, setToken } from \"globals/auth\";\r\nimport { AuthNetworkLayer, PolicyHelper } from \"helpers\";\r\nimport { store } from \"../../globals/index\";\r\nimport jwtDecoder from \"jwt-decode\";\r\nimport { createLog } from \"helpers/log\";\r\n\r\nexport const ALLOWED_CERT_NAR_CODES = [\r\n\t\"2017\",\r\n\t\"2001\",\r\n\t\"2002\",\r\n\t\"2003\",\r\n\t\"2004\",\r\n\t\"2005\",\r\n\t\"2006\",\r\n\t\"2007\",\r\n\t\"2009\",\r\n\r\n\t\"2010\",\r\n\t\"2011\",\r\n\t\"2012\",\r\n\r\n\t\"2013\",\r\n\t\"2014\",\r\n\t\"2015\",\r\n\t\"2016\",\r\n\t\"2018\",\r\n\r\n\t\"2019\",\r\n\t\"2024\",\r\n\t\"2025\",\r\n\t\"2026\",\r\n\t\"2027\",\r\n\t\"2028\",\r\n\t\"2029\",\r\n\t\"2030\",\r\n\r\n\t\"2034\",\r\n\t\"2035\",\r\n\t\"2040\",\r\n\r\n\t\"2048\",\r\n\t\"2055\",\r\n];\r\n\r\nexport const APPLICABLE_RIDERS = {\r\n\tpa_rider: [\"131\", \"132\", \"133\", \"134\", \"135\"],\r\n\tum_rider: [\"140\", \"141\", \"142\", \"143\", \"144\", \"145\", \"147\"],\r\n};\r\n\r\n/**\r\n * A helper function to identify the `policy type` of a policy [ home | motor | ppv ]\r\n *\r\n * @param {Object} policy the policy to identify type for\r\n */\r\n\r\n/*function policyType(policy) {}*/\r\n\r\nfunction getRisksofType(policy, type) {\r\n\treturn policy.risks.length\r\n\t\t? policy.risks.filter(risk => {\r\n\t\t\t\tif (!risk) return false;\r\n\r\n\t\t\t\tlet riskType = risk.risk_item_type.toLowerCase();\r\n\t\t\t\treturn type === \"building&content\"\r\n\t\t\t\t\t? riskType.includes(\"building\") || riskType.includes(\"content\")\r\n\t\t\t\t\t: riskType.includes(type);\r\n\t\t })\r\n\t\t: [];\r\n}\r\n\r\n/** Get the policies that are applicable for renewal */\r\nfunction filterForPoliciesWithNoPlateRisks(policies) {\r\n\tlet filteredPolicies = policies?.filter(p => p.risks?.filter(r => r.registration_number === \"\")?.length > 0);\r\n\r\n\tfilteredPolicies.forEach(element => {\r\n\t\telement.risks = element.risks?.filter(r => r.registration_number === \"\");\r\n\t});\r\n\r\n\treturn filteredPolicies;\r\n}\r\n\r\n/** Get the policies that are applicable for renewal */\r\nfunction filterForRenewal(policies) {\r\n\treturn policies\r\n\t\t?.filter(policy => {\r\n\t\t\treturn (\r\n\t\t\t\tpolicy.status === \"In Renewal\" && policy.renewal_status !== \"Scrutiny\" && policy.policy_prefix !== \"NCBMLC\"\r\n\t\t\t);\r\n\t\t})\r\n\t\t?.map(p => {\r\n\t\t\treturn {\r\n\t\t\t\t...p,\r\n\t\t\t\toriginal_renewal_premium: p.renewal_premium,\r\n\t\t\t\trisks: p.risks.map(r => {\r\n\t\t\t\t\treturn { ...r, original_sum_insured: r.sum_insured };\r\n\t\t\t\t}),\r\n\t\t\t};\r\n\t\t});\r\n}\r\n\r\n/** get the claims policies */\r\nfunction filterForClaims(policies) {\r\n\treturn policies; //?.filter(policy => [...includedPolicies, ...claimAcceptablePolicies].includes(policy.policy_prefix));\r\n}\r\n\r\n/** Get the Policies with a Balance */\r\nfunction filterForExtension(policies) {\r\n\treturn policies.filter(policy => {\r\n\t\treturn (\r\n\t\t\tpolicy.status === \"In Force\" &&\r\n\t\t\tpolicy.renewal_status !== \"Scrutiny\" &&\r\n\t\t\tpolicy.paymentPlan?.payment_terms.some(plan => !plan.transaction_id) &&\r\n\t\t\tpolicy.policy_prefix !== \"NCBMLC\"\r\n\t\t);\r\n\t});\r\n}\r\n\r\n/** Gets all Active Policies */\r\nfunction findAllActivePolicies(policies) {\r\n\treturn policies.filter(policy => {\r\n\t\treturn policy.status === \"In Force\" && policy.renewal_status !== \"Scrutiny\";\r\n\t});\r\n}\r\n\r\nfunction findAllActiveAndRenewablePolicies(policies) {\r\n\treturn policies.filter(policy => {\r\n\t\treturn policy.status === \"In Force\" || policy.status === \"In Renewal\";\r\n\t});\r\n}\r\n\r\n/** Missing Documents */\r\nfunction listMissingDocuments(naratives) {\r\n\treturn naratives.filter(narative => applicableNarratives.includes(narative.code));\r\n}\r\n\r\nconst identifyPolicyType = (policy, policyType) => {\r\n\tif (policy && policyType) {\r\n\t\tpolicyType = policyType.toLowerCase();\r\n\t\tswitch (policyType) {\r\n\t\t\tdefault:\r\n\t\t\t\treturn false;\r\n\t\t\tcase \"home\":\r\n\t\t\t\treturn homePolicies.includes(policy.policy_prefix || \"\");\r\n\t\t\tcase \"motor\":\r\n\t\t\t\treturn !homePolicies.includes(policy.policy_prefix || \"\");\r\n\t\t\tcase \"ppv\":\r\n\t\t\t\treturn policy.type_of_cover ? policy.type_of_cover.toLowerCase().includes(\"passenger vehicle\") : false;\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n};\r\n\r\n/** */\r\nfunction isUMRider(code) {\r\n\treturn applicableRiders.um_rider.includes(code);\r\n}\r\n\r\n/** */\r\nfunction isPARider(code) {\r\n\treturn applicableRiders.pa_rider.includes(code);\r\n}\r\n\r\nfunction isUpsellingApproved(policy) {\r\n\tlet currentyear = new Date().getFullYear();\r\n\treturn (\r\n\t\tpolicy?.is_third_party_policy && currentyear - policy.risks[0]?.year < 20 && policy.risks[0].usage_code === \"SDP\"\r\n\t);\r\n}\r\n\r\n/**\r\n *\r\n * @param {Object} policy\r\n\r\n * @returns\r\n */\r\nasync function getAdditionalBenefits(policy) {\r\n\tlet payload = {\r\n\t\tpolicy_prefix: policy?.policy_prefix,\r\n\t\tis_third_party_policy: policy?.is_third_party_policy,\r\n\t\tgroup: policy?.group_name || \"\",\r\n\t\trisks: policy?.risks?.map(\r\n\t\t\t({\r\n\t\t\t\tusage_code,\r\n\t\t\t\tyear: car_year,\r\n\t\t\t\tmanual_rates: rates,\r\n\t\t\t\trisk_id,\r\n\t\t\t\tplate_number,\r\n\t\t\t\tsum_insured,\r\n\t\t\t\tbuilding_year_built,\r\n\t\t\t}) => ({\r\n\t\t\t\trisk_id,\r\n\t\t\t\tusage_code,\r\n\t\t\t\tcar_year,\r\n\t\t\t\trates,\r\n\t\t\t\tplate_number,\r\n\t\t\t\tsum_insured,\r\n\t\t\t\tbuilding_year_built,\r\n\t\t\t})\r\n\t\t),\r\n\t};\r\n\tlet response = await checkExpToken({\r\n\t\tendpoint: \"/additionalbenefit/generate\",\r\n\t\tpayload,\r\n\t}).catch(error => {\r\n\t\tif (error.response) return error.response;\r\n\t});\r\n\r\n\treturn response;\r\n}\r\n\r\n/**\r\n *\r\n * @param {String} phoneNumberString\r\n */\r\nfunction formatPhoneNumber(phoneNumberString) {\r\n\tvar cleaned = (\"\" + phoneNumberString).replace(/\\D/g, \"\");\r\n\tvar match = cleaned?.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\r\n\tif (match) {\r\n\t\treturn \"(\" + match[1] + \") \" + match[2] + \"-\" + match[3];\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n/**\r\n *\r\n * @param {*} selectedFile\r\n */\r\nfunction toBase64(selectedFile) {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tlet reader = new FileReader();\r\n\t\treader.readAsDataURL(selectedFile);\r\n\t\treader.onload = () => resolve(reader.result);\r\n\t\treader.onerror = error => reject(error);\r\n\t\treturn reader.result;\r\n\t});\r\n}\r\n\r\n/**\r\n * Formats a given value to proper currency format\r\n * @param {*} amount\r\n * @param {Number=} decimalCount\r\n * @param {String=} decimal\r\n * @param {String=} thousands\r\n * @param {Boolean=} showNegative\r\n * @param {Boolean=} includeCurrencySymbol\r\n */\r\nfunction formatMoney(\r\n\tamount,\r\n\tdecimalCount = 2,\r\n\tdecimal = \".\",\r\n\tthousands = \",\",\r\n\tshowNegative = true,\r\n\tincludeCurrencySymbol = true\r\n) {\r\n\ttry {\r\n\t\tdecimalCount = Math.abs(decimalCount);\r\n\t\tdecimalCount = isNaN(decimalCount) ? 2 : decimalCount;\r\n\r\n\t\tconst negativeSign = showNegative && amount < 0 ? \"-\" : \"\";\r\n\r\n\t\t// The integer part of the number\r\n\t\tlet integerPortion = parseInt(Math.abs(parseInt(amount) || 0).toFixed(decimalCount)).toString();\r\n\t\t// number or 3\r\n\t\tlet j = integerPortion.length > 3 ? integerPortion.length % 3 : 0;\r\n\r\n\t\tconst moneySymbol = includeCurrencySymbol ? \"$\" : \"\";\r\n\t\tconst head = j ? integerPortion.substr(0, j) + thousands : \"\";\r\n\t\tconst body = integerPortion.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + thousands);\r\n\t\tconst cents = decimal + (Math.abs(parseFloat(amount)) - parseFloat(integerPortion)).toFixed(decimalCount).slice(2);\r\n\t\tconst formattedMoney = `${negativeSign}${moneySymbol}${head}${body}${cents}`;\r\n\r\n\t\treturn formattedMoney;\r\n\t} catch (e) {\r\n\t\tconsole.error(e);\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nfunction toProperCase(str) {\r\n\treturn str\r\n\t\t.toLowerCase()\r\n\t\t.replace(/\\b\\w/g, s => s.toUpperCase())\r\n\t\t.replace(/Mc(.)/g, (match, s) => \"Mc\" + s.toUpperCase())\r\n\t\t.replace(/Mac(.)/g, (match, s) => \"Mac\" + s.toUpperCase());\r\n}\r\n\r\n/** Removes all PA/UM rider premiums */\r\nfunction removeAllRiderPremiums(risks) {\r\n\tconst riders_list = risks?.[0]?.manual_rates;\r\n\tlet totalDeduction = 0;\r\n\r\n\tif (riders_list?.length)\r\n\t\ttotalDeduction = riders_list\r\n\t\t\t.filter(rider => [...applicableRiders.pa_rider, ...applicableRiders.um_rider].includes(rider.code))\r\n\t\t\t.reduce((total, rider) => total + rider.premium, 0);\r\n\r\n\treturn totalDeduction;\r\n}\r\n\r\n// Remove the riders to calculate something\r\nconst removeRiderPremium = (rider, risks, premium) => {\r\n\tconst riders_list = risks[0].manual_rates;\r\n\r\n\triders_list.forEach(currentRider => {\r\n\t\tif (rider === \"pa_rider\" && applicableRiders.pa_rider.includes(currentRider.code)) {\r\n\t\t\tpremium = premium - currentRider.premium;\r\n\t\t} else if (rider === \"um_rider\" && applicableRiders.um_rider.includes(currentRider.code)) {\r\n\t\t\tpremium = premium - currentRider.premium;\r\n\t\t}\r\n\t});\r\n\r\n\treturn premium;\r\n};\r\n\r\nconst getRiderPremium = (rider, risks) => {\r\n\tconst riders_list = risks[0].manual_rates;\r\n\tlet premium = 0;\r\n\r\n\triders_list.forEach(currentRider => {\r\n\t\tif (rider === \"pa_rider\" && applicableRiders.pa_rider.includes(currentRider.code)) {\r\n\t\t\tpremium = premium + currentRider.premium;\r\n\t\t} else if (rider === \"um_rider\" && applicableRiders.um_rider.includes(currentRider.code)) {\r\n\t\t\tpremium = premium + currentRider.premium;\r\n\t\t} else if (rider === \"\" && hasRider(currentRider.code)) {\r\n\t\t\tpremium = premium + currentRider.premium;\r\n\t\t}\r\n\t});\r\n\r\n\treturn premium;\r\n};\r\n\r\n// Calculate the half payment for a policy with the calculater\r\nasync function calculatePayment(branch_name, policy, user, currency, addedCost = 0, rates = []) {\r\n\tconst results = await getPremiumFromCalculator(branch_name, policy, user, currency);\r\n\tif (results.success) {\r\n\t\tconst tax_percent = policy.tax_percent;\r\n\r\n\t\tlet payment_plans = results.payment_plans.map(plan => {\r\n\t\t\t// Map all except [2] of these payment\r\n\t\t\tconst payment_terms = plan.payment_terms;\r\n\t\t\tconst half_premium = plan.payment_terms[0].payment_term_premium;\r\n\t\t\tlet second_premium_payment = plan.payment_terms[1].payment_term_premium;\r\n\r\n\t\t\tlet service_charge =\r\n\t\t\t\tplan.payment_terms[0].service_charge_type === \"PP\"\r\n\t\t\t\t\t? (plan.payment_terms[0].service_charge_amount / 100) * half_premium\r\n\t\t\t\t\t: plan.payment_terms[0].service_charge_amount;\r\n\t\t\t// let gct = (tax_percent / 100) * removeRiderPremium(\"pa_rider\", policy.risks, half_premium);\r\n\t\t\tlet gct = (tax_percent / 100) * half_premium;\r\n\r\n\t\t\tlet second_premium_payment_gct = (tax_percent / 100) * second_premium_payment;\r\n\t\t\tsecond_premium_payment = second_premium_payment + second_premium_payment_gct;\r\n\t\t\tlet total_premium = half_premium + gct;\r\n\t\t\tlet half_premium_with_gct = half_premium + gct;\r\n\r\n\t\t\tlet effective_date = plan.payment_terms[0].expiry_date;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tname: plan.payment_plan_name,\r\n\t\t\t\tid: plan.payment_plan_id,\r\n\t\t\t\trenewal_premium: half_premium - service_charge,\r\n\t\t\t\trenewal_premium_with_gct: half_premium_with_gct,\r\n\t\t\t\tsecond_premium_payment: second_premium_payment,\r\n\t\t\t\tGCT: gct,\r\n\t\t\t\tservice_charge: service_charge,\r\n\t\t\t\ttotal: total_premium + addedCost || total_premium,\r\n\t\t\t\teffective_date: effective_date,\r\n\t\t\t\texpiry_date: plan.expiry_date,\r\n\t\t\t\tpayment_terms,\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tlet gct = (tax_percent / 100) * results.full_payment;\r\n\t\t// let gct = (tax_percent / 100) * removeRiderPremium(\"pa_rider\", policy.risks, results.full_payment);\r\n\t\tlet full_payment = results.full_payment + gct;\r\n\r\n\t\treturn { full_payment: { full_payment, gct }, payment_plans, risks: results.risks };\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\n// find whether it's serious\r\nfunction checkAgainstPremiumCode(keyWord, manual_rates) {\r\n\tlet premium_code = keyWord.toLowerCase();\r\n\t//let tempRatesArry = [];\r\n\r\n\tif (premium_code === \"uninsured\") {\r\n\t\tfor (let i = 0; i < uninsured_Motorist.length; i++) {\r\n\t\t\tfor (let j = 0; j < manual_rates.length; j++) {\r\n\t\t\t\tif (uninsured_Motorist[i] === manual_rates[j].code) {\r\n\t\t\t\t\t//tempRatesArry.push(manual_rates[j]);\r\n\t\t\t\t\treturn manual_rates[j];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t} else if (premium_code === \"death\" || premium_code === \"medical\" || premium_code === \"disablement\") {\r\n\t\tfor (let i = 0; i < PA_death_Disablement.length; i++) {\r\n\t\t\tfor (let j = 0; j < manual_rates.length; j++) {\r\n\t\t\t\tif (PA_death_Disablement[i] === manual_rates[j].code) {\r\n\t\t\t\t\t//tempRatesArry.push(manual_rates[j]);\r\n\t\t\t\t\treturn manual_rates[j];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// Calculate the premium for Ultimate woman and PA\r\n/**\r\n * This function is a magical pony. It may be understandable with effort but\r\n * it was copied as is and it's use throughout th application is a littl cryptic. All in All, this\r\n * function identifies Pa/Um riders\r\n *\r\n * @param {*} extensions\r\n * @param {*} risks\r\n * @returns\r\n */\r\nfunction calcPremiumPA_UM(extensions, risks) {\r\n\tlet pa_um = { pa: 0, um: 0 };\r\n\tlet matchedRates = [];\r\n\tlet uninsured = \"Uninsured\";\r\n\tlet uninsured_av = \"Agreed Value\";\r\n\tlet pa_1 = \"Death\";\r\n\tlet pa_2 = \"Medical\";\r\n\tlet pa_4 = \"Disablement\";\r\n\r\n\tfor (let n = 0; n < extensions.length; n++) {\r\n\t\tif (extensions[n].extension.indexOf(uninsured) !== -1) {\r\n\t\t\textensions[n].typeOfExt = \"Uninsured Motorist\";\r\n\t\t\tlet temp = checkAgainstPremiumCode(uninsured, risks[0].manual_rates);\r\n\t\t\tif (temp) {\r\n\t\t\t\tmatchedRates.push(temp);\r\n\t\t\t\textensions[n].premium_um = temp.premium;\r\n\t\t\t\tpa_um.um = temp.premium;\r\n\t\t\t}\r\n\t\t} else if (\r\n\t\t\textensions[n].extension.indexOf(pa_1) !== -1 ||\r\n\t\t\textensions[n].extension.indexOf(pa_2) !== -1 ||\r\n\t\t\textensions[n].extension.indexOf(pa_4) !== -1\r\n\t\t) {\r\n\t\t\textensions[n].typeOfExt = \"Personal Accident\";\r\n\t\t\tif (extensions[n].extension.indexOf(pa_1) !== -1) {\r\n\t\t\t\textensions[n].tier = \"Death\";\r\n\t\t\t} else if (extensions[n].extension.indexOf(pa_2) !== -1) {\r\n\t\t\t\textensions[n].tier = \"Medical\";\r\n\t\t\t}\r\n\t\t\tlet temp = checkAgainstPremiumCode(pa_1, risks[0].manual_rates);\r\n\t\t\tif (temp) {\r\n\t\t\t\tmatchedRates.push(temp);\r\n\t\t\t\textensions[n].premium_pa = temp.premium;\r\n\t\t\t\tpa_um.pa = temp.premium;\r\n\t\t\t}\r\n\t\t} else if (extensions[n].extension.indexOf(uninsured_av) !== -1) {\r\n\t\t\textensions[n].typeOfExt = \"Endorsement\";\r\n\t\t}\r\n\t}\r\n\tif (isNaN(pa_um.pa) || isNaN(pa_um.um)) {\r\n\t\tpa_um = { pa: 0, um: 0 };\r\n\t}\r\n\r\n\treturn { ...pa_um, extensions: extensions, codes: matchedRates };\r\n\r\n\t/* this.policy.renewal_premium = this.removeRiderPremium(\r\n\t\t\tthis.policy.renewal_premium,\r\n\t\t\textension.premium_pa + extension.premium_um\r\n\t\t);\r\n\t\tawait this.policyService.setCurrentPolicy(this.policy);\r\n\r\n\t\tthis.session.setRatesToDel(this.tempRatesArry);\r\n\r\n\t\tthis.session.setPremiumPA_UM(this.pa_um);\r\n\t\treturn extension; */\r\n}\r\n\r\n// @ts-ignore\r\n/**\r\n *\r\n * @param {{policy: Object, global_name_id: string, total: any, premiumPA_UM:any}} args\r\n * @returns\r\n */\r\nfunction assignReceipt({ policy, global_name_id, total, premiumPA_UM }) {\r\n\t//const convertCurrency = new CurrencyConversion();\r\n\t//let data = [];\r\n\tlet middlewareReceiptCurrency = \"jmd\";\r\n\tconst formatCurrency = currency =>\r\n\t\tcurrency.toLowerCase() === \"jmd\" ? \"JA\" : currency.toLowerCase === \"usd\" ? \"US\" : currency;\r\n\r\n\t// these are commented to remove the second receipt, don't want to need to readd logic if they chang what happened\r\n\t/* if (premiumPA_UM && premiumPA_UM.pa > 0) {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\t// TODO BRANCH Is Mandatory try \"HEAD OFFICE\"\r\n\t\t\t\tauto_authorize: true,\r\n\t\t\t\tbranch: config.receipt_branch_name,\r\n\t\t\t\treceipt_date: format(new Date(), \"MM/dd/yyyy\"),\r\n\t\t\t\tpolicy_id: policy.policy_id,\r\n\t\t\t\t//amount: this.renewal_details.total - this.session.getPremiumPA_UM().pa,\r\n\t\t\t\tamount: total - premiumPA_UM.pa,\r\n\t\t\t\tpayment_type: \"credit cards\",\r\n\t\t\t\tcurrency: formatCurrency(middlewareReceiptCurrency),\r\n\t\t\t\tis_tax_exempt: false,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tauto_authorize: true,\r\n\t\t\t\tbranch: config.receipt_branch_name,\r\n\t\t\t\treceipt_date: format(new Date(), \"MM/dd/yyyy\"),\r\n\t\t\t\tpolicy_id: policy.policy_id,\r\n\t\t\t\tamount: premiumPA_UM.pa,\r\n\t\t\t\tpayment_type: \"credit cards\",\r\n\t\t\t\tcurrency: formatCurrency(middlewareReceiptCurrency),\r\n\t\t\t\tis_tax_exempt: true,\r\n\t\t\t},\r\n\t\t];\r\n\t} else { */\r\n\treturn {\r\n\t\tauto_authorize: true,\r\n\t\t// TODO BRANCH Is Mandatory try \"HEAD OFFICE\"\r\n\t\tbranch: config.receipt_branch_name,\r\n\t\treceipt_date: format(new Date(), \"MM/dd/yyyy\"),\r\n\t\tpolicy_id: policy.policy_id,\r\n\t\tclient_global_name_id: global_name_id,\r\n\t\tmanual_receipt_number: \"\",\r\n\t\tamount: total,\r\n\t\tpayment_type: \"Advantage General On-line\",\r\n\t\tcurrency: formatCurrency(middlewareReceiptCurrency),\r\n\t\tis_tax_exempt: false,\r\n\t\tsource: \"\",\r\n\t};\r\n\t// }\r\n}\r\n\r\n/**\r\n *\r\n * @param {*} policy\r\n * @param {Boolean} half=\r\n * @param {Number} otherDiscounts\r\n * @returns\r\n */\r\nfunction calculateBreakdown(policy, half = false, otherDiscounts = 0) {\r\n\t/** Calculate the policy */\r\n\tlet breakdownData = {\r\n\t\tmarket_value: 0.0,\r\n\t\ttotal_discounts: 0.0,\r\n\t\ttotal_premium: 0.0,\r\n\t\trenewal_premium: 0.0,\r\n\t\tGCT: 0.0,\r\n\t\ttotal: 0.0,\r\n\t\tname: \"full\",\r\n\t};\r\n\r\n\tfor (let a = 0; a < policy?.risks?.length; a++) {\r\n\t\tlet risk = policy.risks[a];\r\n\r\n\t\t/* Market Value is the sum of insured for all risks */\r\n\t\tbreakdownData.market_value += risk.sum_insured;\r\n\r\n\t\t/* Total Discounts is the some of all the discounts for each risk */\r\n\t\t// discount for this Risk\r\n\t\tlet riskTotalDiscounts = risk.discounts.reduce((total, discount) => total + discount.premium, 0);\r\n\t\tbreakdownData.total_discounts += riskTotalDiscounts;\r\n\r\n\t\t/* Total Premium is the sum of premium for all risks */\r\n\t\tlet riskPremium = risk.renewal_premium - riskTotalDiscounts; // premium for this Risk\r\n\t\tbreakdownData.total_premium += riskPremium;\r\n\r\n\t\t/* Renewal Premium is the sum of the total Premium + total_discounts ? Fact check with Tashani */\r\n\t\tbreakdownData.renewal_premium += riskPremium + riskTotalDiscounts;\r\n\r\n\t\t/* GCT is calculated */\r\n\t}\r\n\r\n\tbreakdownData.renewal_premium = half ? breakdownData.renewal_premium / 2 : policy.renewal_premium;\r\n\r\n\tconst pa_premium = getRiderPremium(\"pa_rider\", policy.risks);\r\n\tconst um_premium = getRiderPremium(\"um_rider\", policy.risks);\r\n\tconst riders_premium = pa_premium + um_premium;\r\n\tbreakdownData.GCT = (policy.tax_percent / 100) * breakdownData.renewal_premium; //removeRiderPremium(\"pa_rider\", policy.risks, breakdownData.renewal_premium);\r\n\r\n\t//This variable is used to decide if discounts should be applied on recalculation\r\n\tlet at_minimum = breakdownData.renewal_premium - riders_premium === policy.renewal_minimum_premium;\r\n\tbreakdownData.renewal_premium = at_minimum\r\n\t\t? breakdownData.renewal_premium\r\n\t\t: breakdownData.renewal_premium - otherDiscounts;\r\n\tbreakdownData.total = breakdownData.renewal_premium + breakdownData.GCT;\r\n\r\n\treturn breakdownData;\r\n}\r\n\r\nfunction getRenewalStartDate(policyRenewalDateString) {\r\n\tconst policyRenewalDate = format(new Date(policyRenewalDateString), \"MM/dd/yyyy H:mm:ss\");\r\n\tlet tempDate = new Date();\r\n\tlet startDate = format(tempDate, \"MM/dd/yyyy H:mm:ss\");\r\n\r\n\tif (isBefore(tempDate, new Date(policyRenewalDateString)) || isEqual(tempDate, new Date(policyRenewalDateString))) {\r\n\t\tconst tempDate = format(add(new Date(policyRenewalDate), { days: 1 }), \"MM/dd/yyyy\");\r\n\t\tstartDate = format(add(new Date(tempDate), { minutes: 1 }), \"MM/dd/yyyy H:mm:ss\");\r\n\t}\r\n\treturn startDate;\r\n}\r\n\r\n/**\r\n * Remove the riders [comprehensive?]\r\n *\r\n * @param {*} ridersList\r\n */\r\nfunction removeRiders(ridersList) {\r\n\tlet tempList = [];\r\n\r\n\tridersList.forEach(function (rider) {\r\n\t\tif (!hasRider(rider.code)) {\r\n\t\t\ttempList.push(rider);\r\n\t\t}\r\n\t});\r\n\treturn tempList;\r\n}\r\n\r\nfunction hasRider(rider_code) {\r\n\treturn Object.keys(applicableRiders).find(val => applicableRiders[val].includes(rider_code) === true);\r\n}\r\n\r\nfunction isComprehensive(prefix) {\r\n\treturn comprehensiveCodes.includes(prefix);\r\n}\r\n\r\nfunction isComprehensiveAgreedValue(prefix) {\r\n\treturn comprehensiveAgreedValueCodes.includes(prefix);\r\n}\r\n\r\n/**\r\n * Checks to see if document's POCA information is valid\r\n * @param startDate Date of policy to be renewed\r\n * @param poca Policy's POCA object\r\n * @returns {boolean|boolean}\r\n */\r\nconst isPocaComplianceCheck = (startDate, poca) => {\r\n\treturn poca.is_poca_compliant && Date.parse(poca.poca_documents_expire) >= Date.parse(startDate);\r\n};\r\n\r\n/**\r\n * Checks to ensure customer has no pending documents outstanding to be submitted\r\n * @param narratives Narratives for the policy\r\n * @param allowedCodes Codes which are permitted for Policy\r\n * @returns {boolean}\r\n */\r\nconst hasNoPendingDocs = (narratives, allowedCodes) => {\r\n\tif (!narratives.length) return false;\r\n\tlet k = 0;\r\n\tfor (let i = 0; i < narratives.length; i++) {\r\n\t\tfor (let j = 0; j < allowedCodes.length; j++) {\r\n\t\t\tif (narratives[i].code === allowedCodes[j]) {\r\n\t\t\t\tk++;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn k !== narratives.length;\r\n};\r\n\r\n/**\r\n * Removes mortgagee from specified policy\r\n * @param policy Specified Policy\r\n * @returns {{global_names}|*}\r\n */\r\nconst removeMortgagee = policy => {\r\n\tif (policy.global_names)\r\n\t\tpolicy.global_names = policy.global_names.filter(name => !name.service_type.toLowerCase().includes(\"mortgagee\"));\r\n\treturn policy;\r\n};\r\n\r\n/**\r\n * This method is used to generate the pdf uri for the payment schedule\r\n *TODO: Should be removed later and placed into a separate file called nodeAxios\r\n * @param {Array} payment_terms\r\n * @param {Object} user\r\n * @param {{policy_number, risks, tax_percent}} policy\r\n */\r\n\r\nasync function getPaymentScheduleInfo(payment_terms, user, { policy_number }) {\r\n\tconst endpoint = \"payments/payment-schedule\";\r\n\r\n\tconst headers = {\r\n\t\t\"Content-Type\": \"application/json\",\r\n\t};\r\n\r\n\t// const taxPercent = 1 + tax_percent / 100;\r\n\t// const totalDeductionWithTax = (removeAllRiderPremiums(risks) / payment_terms?.length) * taxPercent;\r\n\tconst data = payment_terms.map(term => {\r\n\t\treturn {\r\n\t\t\tindex: term.payment_number,\r\n\t\t\tdate: format(subDays(parse(term.effective_date, \"MM/dd/yyyy\", new Date()), 1), \"d-MMM-yyyy\").toUpperCase(),\r\n\t\t\tamount: formatMoney(term.payment_term_premium_with_tax),\r\n\t\t\tstatus: term.status,\r\n\t\t};\r\n\t});\r\n\tdata[0].amount = \"-\";\r\n\r\n\tlet addressInfo = user?.locations?.find(location => location.is_main_location);\r\n\r\n\tlet payload = {\r\n\t\tterms: data,\r\n\t\tpolicy_user: user.first_name || user.last_name ? `${user.first_name} ${user.last_name}` : user.company_name,\r\n\t\tpolicy_number: policy_number,\r\n\t\tpolicy_holder_address: `${addressInfo.street_number} ${addressInfo.street_name} ${addressInfo.street_type}, \r\n\t\t\t\t\t\t\t\t${addressInfo.general_area}, ${addressInfo.town}, ${addressInfo.parish}`,\r\n\t};\r\n\r\n\tlet response = await checkExpToken({ endpoint, payload, headers: headers });\r\n\r\n\treturn response;\r\n}\r\n\r\n/**\r\n * Gets renewal date for a policy based on the start date of the policy\r\n * @param startDate Start date of the policy\r\n * @returns {string}\r\n */\r\nconst getRenewalEndDate = startDate => {\r\n\tlet tempDate = format(subDays(add(new Date(startDate), { months: 12 }), 1), \"MM/dd/yyyy\");\r\n\treturn format(add(new Date(tempDate), { hours: 23, minutes: 59 }), \"MM/dd/yyyy H:mm:ss\");\r\n};\r\n\r\n/**\r\n * Retrieves risk codes from policy's risks array\r\n * @param risks Policy's risks\r\n * @returns {*}\r\n */\r\nconst getRenewalRisk = risks => {\r\n\treturn risks.map(risk => {\r\n\t\tlet temp = { ...risk };\r\n\t\ttemp.ncd_percent = temp.renewal_ncd_percent;\r\n\t\t//temp.manual_rates = temp.manual_rates.filter(rate => rate.code);\r\n\t\treturn temp;\r\n\t});\r\n};\r\n\r\n/**\r\n *\r\n * @param ext\r\n * @param extManRate\r\n * @param manualRates\r\n * @returns {*}\r\n */\r\n//eslint-disable-next-line\r\nconst removeExtFromManulR = (ext, extManRate, manualRates) => {\r\n\tlet deleteArray = [];\r\n\r\n\tfor (let i = 0; i < ext.length; i++) {\r\n\t\tfor (let j = 0; j < extManRate.profile_extensions.length; j++) {\r\n\t\t\tif (ext[i].code && ext[i].extension_code === extManRate.profile_extensions[j].extension_code) {\r\n\t\t\t\tdeleteArray[i] = extManRate.profile_extensions[j].rating_code;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tfor (let i = 0; i < deleteArray.length; i++) {\r\n\t\tfor (let j = 0; j < manualRates.length; j++) {\r\n\t\t\tif (deleteArray[i] === manualRates[j].code) {\r\n\t\t\t\tmanualRates.splice(j, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn manualRates;\r\n};\r\n\r\nconst removeRatingCodesFromRisks = (risks, ratingCodes) => {\r\n\tlet temp_risks;\r\n\r\n\ttemp_risks = risks?.map(risk => {\r\n\t\tlet temp_risk;\r\n\t\tlet tempRates = risk?.manual_rates;\r\n\r\n\t\trisk?.manual_rates?.forEach(rate => {\r\n\t\t\tfor (let i = 0; i < ratingCodes.length; i++) {\r\n\t\t\t\ttempRates = tempRates.filter(tempRate => tempRate.code != ratingCodes[i]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst newRates = tempRates;\r\n\t\ttemp_risk = {\r\n\t\t\t...risk,\r\n\t\t\tmanual_rates: newRates,\r\n\t\t};\r\n\r\n\t\treturn temp_risk;\r\n\t});\r\n\r\n\treturn temp_risks;\r\n};\r\n\r\n/**\r\n *\r\n * @param extensions\r\n * @param position\r\n * @param start_date\r\n * @param riderRates\r\n * @param risks\r\n * @param extension_details\r\n * @returns {Promise<*>}\r\n */\r\nconst addExtension = async (user, policy, extensions, position, start_date, riderRates, risks, extension_details) => {\r\n\tconst rate = riderRates[position] || [];\r\n\tif (extension_details.success) {\r\n\t\tif (APPLICABLE_RIDERS.pa_rider.includes(rate.rating_code || \"\")) {\r\n\t\t\tlet filtered_extension_details = await extension_details.profile_extensions.filter(\r\n\t\t\t\textension => extension.rating_code === rate.rating_code\r\n\t\t\t);\r\n\r\n\t\t\tif (filtered_extension_details[0]) {\r\n\t\t\t\tlet ext = {\r\n\t\t\t\t\ttrans_wording: { trans_wording: \"Personal Accident Extension\" },\r\n\t\t\t\t\tparameter: {\r\n\t\t\t\t\t\textensions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\textension_code: filtered_extension_details[0].extension_code,\r\n\t\t\t\t\t\t\t\tlimit_amount: rate.premium,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t},\r\n\t\t\t\t\taction: \"add_extension\",\r\n\t\t\t\t\teffective_date: start_date,\r\n\t\t\t\t\tis_tax_exempt: true,\r\n\t\t\t\t};\r\n\t\t\t\tawait PolicyNetworkLayer.modifyPolicy(policy.policy_id, ext);\r\n\t\t\t}\r\n\t\t} else if (APPLICABLE_RIDERS.um_rider.includes(rate.rating_code || \"\")) {\r\n\t\t\tlet filtered_extension_details = await extension_details.profile_extensions.filter(\r\n\t\t\t\textension => extension.rating_code === rate.rating_code\r\n\t\t\t);\r\n\r\n\t\t\tif (filtered_extension_details[0]) {\r\n\t\t\t\tlet ext = {\r\n\t\t\t\t\ttrans_wording: {\r\n\t\t\t\t\t\ttrans_wording: \"Uninsured motorist Endorsement\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\tparameter: {\r\n\t\t\t\t\t\textensions: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\textension_code: filtered_extension_details[0].extension_code,\r\n\t\t\t\t\t\t\t\tlimit_amount: rate.premium,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t},\r\n\t\t\t\t\taction: \"add_extension\",\r\n\t\t\t\t\teffective_date: start_date,\r\n\t\t\t\t\tis_tax_exempt: false,\r\n\t\t\t\t};\r\n\t\t\t\tawait PolicyNetworkLayer.modifyPolicy(policy.policy_id, ext);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// todo: ??\r\n\t\treturn riderRates[position + 1]\r\n\t\t\t? await addExtension(user, policy, extensions, position + 1, start_date, riderRates, risks, extension_details)\r\n\t\t\t: null;\r\n\t}\r\n};\r\n\r\n/**\r\n * Retrieves riders for a specified policy\r\n * @returns {any[]}\r\n */\r\nconst loadRiders = policy => {\r\n\tconst risks = policy.risks;\r\n\tlet riders = [];\r\n\trisks.forEach(risk => {\r\n\t\trisk.manual_rates.forEach(rate => {\r\n\t\t\tif (APPLICABLE_RIDERS.pa_rider.includes(rate.code)) {\r\n\t\t\t\triders.push({\r\n\t\t\t\t\trisk_id: risk.risk_id,\r\n\t\t\t\t\trider_name: \"pa_rider\",\r\n\t\t\t\t\tpremium: rate.premium,\r\n\t\t\t\t\trating_code: rate.code,\r\n\t\t\t\t});\r\n\t\t\t} else if (APPLICABLE_RIDERS.um_rider.includes(rate.code)) {\r\n\t\t\t\triders.push({\r\n\t\t\t\t\trisk_id: risk.risk_id,\r\n\t\t\t\t\trider_name: \"um_rider\",\r\n\t\t\t\t\tpremium: rate.premium,\r\n\t\t\t\t\trating_code: rate.code,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\treturn riders;\r\n};\r\n\r\n/**\r\n * Runs functions required to renew and update a specified policy\r\n \r\n * @param {Object} _policy Specified policy\r\n * @param {Object} user\r\n * @param {[]} _codes\r\n * @param {Object} paymentInfo\r\n * @param {React.MutableRefObject<{receipt: Boolean, billing: Boolean, renewal: Boolean}>} completedSteps\r\n * @returns {Promise}\r\n */\r\nconst renewAndUpdatePolicy = async (_policy, user, _codes = [], paymentInfo, completedSteps) => {\r\n\tlet policy = { ..._policy };\r\n\tconst IS_PART_PAYMENT = paymentInfo.paymentPlan.name.toLowerCase().includes(\"full\") === false;\r\n\tconst codes = [..._codes]; //populateTempRates()\r\n\tconst extensionDetails = await PolicyNetworkLayer.getPolicyProfileExt(policy.policy_prefix);\r\n\r\n\tif (!extensionDetails.success) {\r\n\t\tcreateLog({\r\n\t\t\ttrn: user?.national_id,\r\n\t\t\ttype: `Renewal-Paymentform-getPolicyProfileExt`,\r\n\t\t\tdata: {\r\n\t\t\t\textensionDetails,\r\n\t\t\t},\r\n\t\t\terrors: { message: !extensionDetails?.success ? extensionDetails?.error_message : \"\" },\r\n\t\t});\r\n\t}\r\n\r\n\tconst startDate = getRenewalStartDate(policy.end_date) || \"\";\r\n\tconst endDate = getRenewalEndDate(startDate) || \"\";\r\n\tconst risk = getRenewalRisk(policy.risks) || [];\r\n\r\n\t// If type of cover is a PPV then only offer cover for 7 days, otherwise give the 30\r\n\tconst effectiveCover =\r\n\t\tpolicy.type_of_cover && policy.type_of_cover.toLowerCase().includes(\"passenger vehicle\") ? 30 : 7;\r\n\r\n\tconst isPocaCompliant = isPocaComplianceCheck(format(new Date(startDate), \"MM/dd/yyyy\"), user.poca);\r\n\tconst noPendingDocuments = listMissingDocuments(policy.renewal_narratives).length === 0;\r\n\t// [LOADER]\r\n\r\n\tlet paymentPlanId = \"\";\r\n\tif (IS_PART_PAYMENT) {\r\n\t\t/* const paymentPlanResult = await PolicyNetworkLayer.getPaymentPlans(\r\n\t\t\t\r\n\t\t\tuser.national_id,\r\n\t\t\t\"JA\",\r\n\t\t\tpolicy.policy_prefix\r\n\t\t); */\r\n\t\tpaymentPlanId = paymentInfo.paymentPlan.id; //paymentPlanResult.payment_plans[0].id;\r\n\t}\r\n\r\n\r\n\tif (completedSteps.current.renewal?.success !== true) {\r\n\t\tlet shouldCreateCertificate = isPocaCompliant && noPendingDocuments;\r\n\t\tlet shouldCreateCoverNote = !shouldCreateCertificate;\r\n\r\n\t\tif (policy.department_class.toLowerCase() === \"fire\") {\r\n\t\t\tshouldCreateCertificate = false;\r\n\t\t\tshouldCreateCoverNote = false;\r\n\t\t}\r\n\r\n\t\tconst renewalResult = await PolicyNetworkLayer.renewAndUpdatePolicy(\r\n\t\t\tpolicy,\r\n\t\t\tpaymentPlanId,\r\n\t\t\tcodes,\r\n\t\t\tshouldCreateCertificate,\r\n\t\t\tshouldCreateCoverNote,\r\n\t\t\teffectiveCover,\r\n\t\t\tidentifyPolicyType(policy, \"home\"),\r\n\t\t\tstartDate,\r\n\t\t\tendDate,\r\n\t\t\trisk,\r\n\t\t\tuser\r\n\t\t);\r\n\r\n\t\tif (!renewalResult.success) return { ...renewalResult };\r\n\t\telse completedSteps.current = { ...completedSteps.current, renewal: true };\r\n\r\n\t\treturn {\r\n\t\t\t...renewalResult,\r\n\t\t\tisPocaCompliant: isPocaCompliant,\r\n\t\t\tnoPendingDocuments: noPendingDocuments,\r\n\t\t\tpaymentInfo: paymentInfo,\r\n\t\t\tstartDate: startDate,\r\n\t\t\textensionDetails: extensionDetails,\r\n\t\t};\r\n\t}\r\n};\r\n\r\n/** Extends a policy */\r\nasync function extendPolicy(policy, paymentPlan, total, national_id) {\r\n\t// extend policy\r\n\tconst today = new Date();\r\n\tlet effectiveTime = format(today, \"HH:mm\");\r\n\r\n\t//if (isAfter(expiryDate, today)) { // expiry isAfter today\r\n\t/**\r\n\t * @returns {{transaction_id: String; success: Boolean}}\r\n\t */\r\n\r\n\tlet extensionResponse = await PolicyNetworkLayer.extendPolicy(policy, effectiveTime, total);\r\n\r\n\treturn extensionResponse;\r\n}\r\n\r\n/**\r\n * Generates Extension documents\r\n * @param {*} policy\r\n * @param {*} national_id\r\n * @param {*} transaction_id\r\n */\r\nasync function generateExtensionDocuments(policy, national_id, transaction_id) {\r\n\tlet scheduleResponse = await PolicyNetworkLayer.getTransactionSchedule(transaction_id);\r\n\r\n\tlet files = [];\r\n\tif (scheduleResponse?.data?.data) {\r\n\t\tfiles.push({\r\n\t\t\t//...scheduleResponse.data,\r\n\t\t\tfilename: \"Policy_Schedule.pdf\" /* scheduleResponse.data.file_name */,\r\n\t\t\tfileContent: scheduleResponse.data.data,\r\n\t\t\tmime_type: \"application/pdf\",\r\n\t\t\t/*file_name: undefined,\r\n\t\t\tdata: undefined,*/\r\n\t\t});\r\n\t}\r\n\r\n\tif (policy.department_class.toLowerCase() !== \"fire\")\r\n\t\tfiles = files.concat(await getCertsForRisks(policy.policy_id, policy.risks));\r\n\r\n\treturn files;\r\n}\r\n\r\n/**\r\n * Handles the generation of documents for user renewal\r\n * @param {*} _policy\r\n * @param {*} user\r\n * @param {*} renewalResult - Contains poca and pending document check results\r\n */\r\nconst generateDocuments = async (_policy, user, renewalResult, paymentInfo) => {\r\n\tlet files;\r\n\tlet policy = { ..._policy };\r\n\tconst { isPocaCompliant, noPendingDocuments, startDate, extensionDetails } = renewalResult;\r\n\tconst resp_transaction_schedule = await PolicyNetworkLayer.getTransactionSchedule(renewalResult.transaction_id);\r\n\r\n\tif (resp_transaction_schedule.success) {\r\n\t\tconst transactionscheduledata = resp_transaction_schedule.data;\r\n\t\tfiles = [\r\n\t\t\t{\r\n\t\t\t\tfilename: \"Policy_Schedule.pdf\",\r\n\t\t\t\tfileContent: transactionscheduledata.data,\r\n\t\t\t\tmime_type: \"application/pdf\",\r\n\t\t\t},\r\n\t\t];\r\n\t}\r\n\r\n\tif (policy.department_class.toLowerCase() !== \"fire\") {\r\n\t\t// the certificates are generated under this condition\r\n\t\tif (isPocaCompliant && noPendingDocuments) {\r\n\t\t\tfiles = files.concat(await getCertsForRisks(policy.policy_id, policy.risks));\r\n\t\t} else {\r\n\t\t\tfiles = files.concat(await getCoverNotesForRisks(policy.policy_id, policy.risks));\r\n\t\t}\r\n\t}\r\n\r\n\treturn files;\r\n};\r\n\r\n/**\r\n * fetch the covernote for array of risks\r\n *\r\n \r\n * @param {String} policy_id\r\n * @param {*} risks\r\n * @returns\r\n */\r\nasync function getCoverNotesForRisks(policy_id, risks) {\r\n\tlet files = [];\r\n\r\n\tif (!risks || !Array.isArray(risks)) throw new Error(\"empty list\");\r\n\tconst resp_covernotes = await Promise.all(\r\n\t\trisks.map(risk => PolicyNetworkLayer.getCoverNote(policy_id, risk.risk_id))\r\n\t);\r\n\r\n\tconst someFetched = resp_covernotes.filter(res => res.success);\r\n\r\n\tif (someFetched.length) {\r\n\t\tresp_covernotes.forEach((noteResp, index) => {\r\n\t\t\tif (noteResp.success) {\r\n\t\t\t\tfiles.push({\r\n\t\t\t\t\tfilename: `Cover_Note_For_${risks[index]?.make?.toUpperCase()}_${risks[index]?.registration_number}.pdf`,\r\n\t\t\t\t\tfileContent: noteResp.data.data,\r\n\t\t\t\t\tmime_type: \"application/pdf\",\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\treturn files;\r\n}\r\n\r\n/**\r\n * fetch the certificates for array of risks\r\n *\r\n \r\n * @param {String} policy_id\r\n * @param {*} risks\r\n * @returns\r\n */\r\nasync function getCertsForRisks(policy_id, risks) {\r\n\tlet files = [];\r\n\r\n\tif (!risks || !Array.isArray(risks)) throw new Error(\"empty list\");\r\n\r\n\tconst resp_certificates = await Promise.all(\r\n\t\trisks.map(risk => PolicyNetworkLayer.getCertificate(policy_id, risk.risk_id))\r\n\t);\r\n\r\n\tconst someFetched = resp_certificates.filter(res => res.success);\r\n\r\n\tif (someFetched.length) {\r\n\t\tresp_certificates.forEach((certResp, index) => {\r\n\t\t\tif (certResp.success) {\r\n\t\t\t\tfiles.push({\r\n\t\t\t\t\tfilename: `Certificate_Of_Insurance_For_${risks[index]?.make?.toUpperCase()}_\r\n\t\t\t\t\t${risks[index]?.registration_number}.pdf`,\r\n\t\t\t\t\tfileContent: certResp.data.data,\r\n\t\t\t\t\tmime_type: \"application/pdf\",\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\treturn files;\r\n}\r\n\r\nfunction addRidersToPremium(payment_plan, renewal_premium, ridersList) {\r\n\tlet new_premium = { ...payment_plan };\r\n\tridersList.forEach(function (rider) {\r\n\t\tif (hasRider(rider.code)) {\r\n\t\t\tnew_premium.payment_terms[0].payment_term_premium =\r\n\t\t\t\tnew_premium.payment_terms[0].payment_term_premium + rider.premium;\r\n\t\t\tnew_premium = { ...new_premium, renewal_premium: renewal_premium + rider.premium };\r\n\t\t}\r\n\t});\r\n\treturn new_premium;\r\n}\r\n\r\nasync function getPremiumFromCalculator(branch, policy, user, currency /* , originalRisks */, full = false) {\r\n\t// Mutability reasons\r\n\tlet risks = [...policy?.risks];\r\n\trisks[0] = { ...risks[0] };\r\n\r\n\tlet planIds = [];\r\n\tconst { success, payment_plans: plans } = await PolicyNetworkLayer.getPaymentPlans(currency, policy.policy_prefix);\r\n\r\n\t// extract an array of payment plan ids from plans array\r\n\tplanIds = plans?.map(({ id }) => id);\r\n\r\n\tconst premiumCalculatorResults = await PolicyNetworkLayer.premiumCalculator(policy, risks, planIds);\r\n\r\n\tlet finalPremiums = premiumCalculatorResults.policy_payment_plans;\r\n\r\n\tif (policy.risks[0].manual_rates) {\r\n\t\tif (success && premiumCalculatorResults.success) {\r\n\t\t\t// calculate full payment\r\n\t\t\tlet full_payment = premiumCalculatorResults.renewal_premium;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tsuccess: true,\r\n\t\t\t\tfull_payment,\r\n\t\t\t\tpayment_plans: finalPremiums,\r\n\t\t\t\trisks: premiumCalculatorResults.risk_ratings,\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn { success: false };\r\n\t\t}\r\n\t}\r\n}\r\n/**\r\n * Creates the detailed breakdown of the cash payment instructions\r\n * @param {*} total\r\n * @param {*} user\r\n * @param {*} policy\r\n * @param {*} service_charge\r\n * @param {*} part_payment\r\n * @param {Boolean} isRenewal\r\n */\r\nfunction cashPaymentInstructions(total, user, policy, service_charge, part_payment, isRenewal, lateFee) {\r\n\tconst total_premium = total.toFixed(2);\r\n\tlet premium_instructions = \"\";\r\n\tlet pa_instructions = \"\\nSeparate Transaction:\\n\";\r\n\tlet um_instructions = \"\";\r\n\tlet trn_instructions = \"\\nTRN: \" + user.national_id;\r\n\tlet paRiderCount = 0;\r\n\r\n\tif (!isRenewal) {\r\n\t\tpremium_instructions = \"Total Premium\\n\";\r\n\t\tpremium_instructions += formatMoney(total_premium) + \"\\n\";\r\n\t} else {\r\n\t\tpremium_instructions = lateFee ? `Late Fee: ${lateFee}\\n` : \"\";\r\n\t\tpremium_instructions += \"Total Premium\\n\";\r\n\t\tpremium_instructions += formatMoney(total_premium) + \"\\n\";\r\n\t}\r\n\r\n\treturn premium_instructions /* + (paRiderCount > 0 ? pa_instructions : \"\") + um_instructions */ + trn_instructions;\r\n}\r\n\r\nconst isPromoCodeApplicable = policy_prefix => {\r\n\treturn applicable_policy_prefix_promo.includes(policy_prefix);\r\n};\r\n\r\nconst populateParishTowns = async () => {\r\n\ttry {\r\n\t\tvar parishTowns = [];\r\n\t\tlet request = await PolicyNetworkLayer.getParishTowns();\r\n\t\tif (request.success) {\r\n\t\t\tconst { data } = request;\r\n\t\t\tparishTowns = data;\r\n\t\t} else {\r\n\t\t\tparishTowns = [];\r\n\t\t}\r\n\t} catch (e) {\r\n\t\tparishTowns = [];\r\n\t}\r\n\treturn parishTowns;\r\n};\r\n\r\nconst populateStreetTypes = async () => {\r\n\ttry {\r\n\t\tvar streetTypes = [];\r\n\t\tlet request = await PolicyNetworkLayer.getStreetTypes();\r\n\t\tif (request.success) {\r\n\t\t\tconst { data } = request;\r\n\t\t\tstreetTypes = data;\r\n\t\t} else {\r\n\t\t\tstreetTypes = [];\r\n\t\t}\r\n\t} catch (e) {\r\n\t\tstreetTypes = [];\r\n\t}\r\n\treturn streetTypes;\r\n};\r\n\r\nconst populateGeneralAreas = async () => {\r\n\ttry {\r\n\t\tvar generalAreas = [];\r\n\t\tlet request = await PolicyNetworkLayer.getGeneralAreas();\r\n\t\tif (request.success) {\r\n\t\t\tconst { data } = request;\r\n\t\t\tgeneralAreas = data;\r\n\t\t} else {\r\n\t\t\tgeneralAreas = [];\r\n\t\t}\r\n\t} catch (e) {\r\n\t\tgeneralAreas = [];\r\n\t}\r\n\treturn generalAreas;\r\n};\r\n\r\nconst checkGlassLimits = limitsArray => {\r\n\tif (limitsArray?.length > 0) {\r\n\t\tfor (let i = 0; i < limitsArray.length; i++) {\r\n\t\t\tconst limit = limitsArray[i];\r\n\t\t\tif (limit.limit_code === \"Glass_AOE\" || limit.limit_code === \"Glass_AOP\") {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nexport const refreshPolicies = async (user, policy, transactionType) => {\r\n\tconst { is_a_company } = user;\r\n\r\n\tconst userId = user.global_name_id;\r\n\tconst globalName = user.maiden_name;\r\n\tconst national_id = is_a_company ? user.national_id : user.drivers_licence_number;\r\n\r\n\tconst policyNum = policy.policy_number;\r\n\tconst licenseNum = policy.risks[0].registration_number;\r\n\tconst chassisNum = policy.risks[0].chassis_number;\r\n\r\n\ttry {\r\n\t\tlet response;\r\n\t\tlet count = 2;\r\n\t\tlet isClaims = false;\r\n\t\tlet isPolicyManager = true;\r\n\r\n\t\twhile (count > 0) {\r\n\t\t\tresponse = await AuthNetworkLayer.alternateVerification(\r\n\t\t\t\tisClaims,\r\n\t\t\t\tisPolicyManager,\r\n\t\t\t\tuserId, // change with the otp thing\r\n\t\t\t\tlicenseNum,\r\n\t\t\t\tpolicyNum,\r\n\t\t\t\tchassisNum,\r\n\t\t\t\tnational_id,\r\n\t\t\t\tglobalName,\r\n\t\t\t\ttransactionType,\r\n\t\t\t\tis_a_company\r\n\t\t\t);\r\n\r\n\t\t\tif (!response.success && response.message?.includes(\"status code 401\")) {\r\n\t\t\t\t//_token = (await getNewGlobalToken(3)).token;\r\n\t\t\t\t--count;\r\n\t\t\t} else {\r\n\t\t\t\tcount = -1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!response.success)\r\n\t\t\tthrow `Oops! Your changes were successful. However, we are having a challenge retrieving your newly edited data.\r\n\t\t\t Please do not seek to make the same changes again.`;\r\n\r\n\t\t/** @type {Object} */\r\n\t\tconst data = jwtDecoder(response.data);\r\n\t\t// check for jwt\r\n\t\tconst jwt_auth = process.env.REACT_APP_JWT_AUTHENTICATION;\r\n\t\tif (jwt_auth) {\r\n\t\t\tstore.dispatch(setToken(data.token));\r\n\t\t}\r\n\t\tstore.dispatch(setCurrentUser(data.user));\r\n\t\tlet activePolicies = PolicyHelper.findAllActiveAndRenewablePolicies(data.policies);\r\n\t\tlet motorPolicies = activePolicies\r\n\t\t\t.filter(policy => policy.department_class !== \"Liability\")\r\n\t\t\t.filter(policy => policy.department_class !== \"Fire\");\r\n\r\n\t\tstore.dispatch(setActivePolicies(motorPolicies));\r\n\t\t//history.push(\"/update-your-policy/policy-listing\");\r\n\t} catch (e) {\r\n\t\tthrow e;\r\n\t}\r\n};\r\n\r\nexport {\r\n\tcheckGlassLimits,\r\n\ttoProperCase,\r\n\tpopulateStreetTypes,\r\n\tpopulateGeneralAreas,\r\n\tpopulateParishTowns,\r\n\tgetAdditionalBenefits,\r\n\tgetRenewalEndDate,\r\n\tgetRisksofType,\r\n\tgetRenewalRisk,\r\n\tfilterForClaims,\r\n\tfilterForRenewal,\r\n\tfilterForExtension,\r\n\tfilterForPoliciesWithNoPlateRisks,\r\n\tfindAllActivePolicies,\r\n\tfindAllActiveAndRenewablePolicies,\r\n\tisPocaComplianceCheck,\r\n\tlistMissingDocuments,\r\n\tidentifyPolicyType,\r\n\tisPARider,\r\n\tisUMRider,\r\n\tisUpsellingApproved,\r\n\ttoBase64,\r\n\tformatMoney,\r\n\tformatPhoneNumber,\r\n\tcalculateBreakdown,\r\n\tgetRenewalStartDate,\r\n\tisComprehensive,\r\n\tisComprehensiveAgreedValue,\r\n\tgetPremiumFromCalculator,\r\n\tremoveRiderPremium,\r\n\tremoveRiders,\r\n\tcalculatePayment,\r\n\trenewAndUpdatePolicy,\r\n\tgenerateDocuments,\r\n\tremoveMortgagee,\r\n\tcalcPremiumPA_UM,\r\n\thasNoPendingDocs,\r\n\tassignReceipt,\r\n\tgetPaymentScheduleInfo,\r\n\textendPolicy,\r\n\tgenerateExtensionDocuments,\r\n\tremoveAllRiderPremiums,\r\n\tcashPaymentInstructions,\r\n\tisPromoCodeApplicable,\r\n\tformatPolicyForRenewal,\r\n\tremoveRatingCodesFromRisks,\r\n};\r\n","const branchData = [\r\n\t{\r\n\t\ttitle: \"Head Office\",\r\n\t\tstreet: \"18 Belmont Road\",\r\n\t\ttown: \"Kingston 5\",\r\n\t\t/* registryAddress: \"New kingston\", \r\n\t\tcode: \"RAGICSSNK\",*/\r\n\t\tparish: \" Kingston\",\r\n\t\ttelephone: \"876 978-3690\",\r\n\t\text: \"-9\",\r\n\t\tlatitude: 18.00306371315032,\r\n\t\tlongitude: -76.78359235370547,\r\n\t},\r\n\t{\r\n\t\ttitle: \"New Kingston\",\r\n\t\tstreet: \"70-72 Lady Musgrave Road\",\r\n\t\ttown: \"Kingston 5\",\r\n\t\tregistryAddress: \"New kingston\",\r\n\t\tcode: \"RAGICSSNK\",\r\n\t\tparish: \" Kingston\",\r\n\t\ttelephone: \"876-978-3690\",\r\n\t\text: \"-9\",\r\n\t\tlatitude: 18.00768,\r\n\t\tlongitude: -76.78078,\r\n\t},\r\n\t{\r\n\t\ttitle: \"May Pen\",\r\n\t\tstreet: \"48-50 Main Street\",\r\n\t\ttown: \"May Pen\",\r\n\t\tcode: \"RAGICSSMP\",\r\n\t\tparish: \" Clarendon\",\r\n\t\ttelephone: \"876-786-3617\",\r\n\t\text: \"\",\r\n\t\tlatitude: 17.969386,\r\n\t\tlongitude: -77.242971,\r\n\t},\r\n\t{\r\n\t\ttitle: \"Port Antonio\",\r\n\t\tstreet: \"2A Harpers Lane\",\r\n\t\ttown: \"Port Antonio\",\r\n\t\tcode: \"RAGICSSPA\",\r\n\t\tparish: \" Portland\",\r\n\t\ttelephone: \"876-993-2626\",\r\n\t\text: \"\",\r\n\t\tlatitude: 18.175716,\r\n\t\tlongitude: -76.444816,\r\n\t},\r\n\t{\r\n\t\ttitle: \"Black River\",\r\n\t\tstreet: \"CGB Plaza, Shop 2, 30-32 North Street\",\r\n\t\ttown: \"Black River\",\r\n\t\tcode: \"RAGICSSBR\",\r\n\t\tparish: \"St. Elizabeth\",\r\n\t\ttelephone: \"876-965-2755\",\r\n\t\text: \"\",\r\n\t\tlatitude: 18.033572,\r\n\t\tlongitude: -77.856732,\r\n\t},\r\n\t{\r\n\t\ttitle: \"Montego Bay\",\r\n\t\tstreet: \"Shop#15B, Fairview Commercial Centre\",\r\n\t\ttown: \"Montego Bay\",\r\n\t\tcode: \"RAGICSSMB\",\r\n\t\tparish: \"St. James\",\r\n\t\ttelephone: \"876-952-3293\",\r\n\t\text: \"\",\r\n\t\tlatitude: 18.453608,\r\n\t\tlongitude: -77.924451,\r\n\t},\r\n\t{\r\n\t\ttitle: \"Portmore\",\r\n\t\tstreet: \"31 East Trade Way\",\r\n\t\ttown: \"Portmore\",\r\n\t\tcode: \"RAGICSSPM\",\r\n\t\tparish: \"St. Catherine\",\r\n\t\ttelephone: \"876-998-6157\",\r\n\t\text: \"\",\r\n\t\tlatitude: 17.95458,\r\n\t\tlongitude: -76.881989,\r\n\t},\r\n\t{\r\n\t\ttitle: \"Christiana\",\r\n\t\tstreet: \"Shop 1, Super Plus Centre, Main Street\",\r\n\t\ttown: \"Christiana\",\r\n\t\tcode: \"RAGICSSCA\",\r\n\t\tparish: \"Manchester\",\r\n\t\ttelephone: \"876-964-7111\",\r\n\t\text: \"\",\r\n\t\tlatitude: 18.172989,\r\n\t\tlongitude: -77.490294,\r\n\t},\r\n\t{\r\n\t\ttitle: \"Mandeville\",\r\n\t\tstreet: \"Sagicor Life Building, 59 Main Street \",\r\n\t\ttown: \" Mandeville\",\r\n\t\tcode: \"RAGICSSMV\",\r\n\t\tparish: \"Manchester\",\r\n\t\ttelephone: \"876-962-3315\",\r\n\t\text: \"\",\r\n\t\tlatitude: 18.036951,\r\n\t\tlongitude: -77.510944,\r\n\t},\r\n\t{\r\n\t\ttitle: \"Savanna-La-Mar\",\r\n\t\tstreet: \"Shop 9A, Beckford Plaza, 33-35A Beckford Street\",\r\n\t\ttown: \"Savanna La Mar\",\r\n\t\tcode: \"RAGICSSSM\",\r\n\t\tparish: \"Westmoreland\",\r\n\t\ttelephone: \"876-918-0264\",\r\n\t\text: \"-6\",\r\n\t\tlatitude: 18.224748,\r\n\t\tlongitude: -78.133304,\r\n\t},\r\n\t{\r\n\t\ttitle: \"Ocho Rios\",\r\n\t\tstreet: \" Shops #36 & 37, Soni’s Plaza, 50 Main Street,\",\r\n\t\ttown: \"Ocho Rios\",\r\n\t\tcode: \"RAGICSSOR\",\r\n\t\tparish: \"St. Ann\",\r\n\t\ttelephone: \"876-974-4085\",\r\n\t\text: \"-7\",\r\n\t\tlatitude: 18.410443,\r\n\t\tlongitude: -77.101182,\r\n\t},\r\n];\r\n\r\nexport default branchData;\r\n","import React from \"react\";\r\nimport Obfuscate from \"react-obfuscate\";\r\n\r\n/**\r\n *\r\n * @param {Object} props\r\n * @param {Object} props.data\r\n * @param {(Object) => void} props.locate\r\n * @param {Boolean} props.active\r\n */\r\nfunction Branches({ data, locate, active }) {\r\n\tfunction changeLocation() {\r\n\t\tlocate(data);\r\n\t}\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n}\r\n\r\nfunction BranchAddress({ active = false, data }) {\r\n\treturn (\r\n\t\t

\r\n\t\t\t{data.title}\r\n\t\t\t {data.street}\r\n\t\t\t\r\n\t\t\t\t{data.town}, {data.parish}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{data.telephone}\r\n\t\t\t\t\t{data.ext}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t

\r\n\t);\r\n}\r\n\r\nexport default Branches;\r\n\r\nexport { BranchAddress };\r\n","import React, { useState } from \"react\";\r\nimport { Formik, Form, Field } from \"formik\";\r\nimport { toast } from \"react-toastify\";\r\nimport { string, object } from \"yup\";\r\nimport axios from \"axios\";\r\n\r\nconst defaultFormValues = {\r\n\tname: \"\",\r\n\temail: \"\",\r\n\tsubject: \"\",\r\n\tmessage: \"\",\r\n};\r\n\r\nconst formStates = {\r\n\tDEFAULT: \"Default\",\r\n\tACTIVE: \"Active\",\r\n\tERROR: \"Error\",\r\n\tSENDING: \"Sending\",\r\n\tSENT: \"Sent\",\r\n};\r\n\r\nconst contactFormSchema = object().shape({\r\n\tname: string().trim().required(\"Your Name is Required\"),\r\n\temail: string().trim().email().required(\"Your Email is Required\"),\r\n\tsubject: string().trim().required(\"A Subject is Required\"),\r\n\tmessage: string().trim().required(\"A Message is Required\"),\r\n});\r\n\r\nfunction ContactForm() {\r\n\t/** @type {[String, React.Dispatch>]} */\r\n\tconst [formState, setFormState] = useState(formStates.DEFAULT);\r\n\r\n\t/** Async function to allow Formik to return to proper state when promise is resolved */\r\n\tasync function handleSubmit(values, { resetForm }) {\r\n\t\tsetFormState(formStates.SENDING);\r\n\t\taxios\r\n\t\t\t.post(`${process.env.REACT_APP_API_URL}/email`, values, {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t.then(() => {\r\n\t\t\t\ttoast.success(\"Your email has been sent!\");\r\n\t\t\t\tsetFormState(formStates.SENT);\r\n\t\t\t\tresetForm({ name: \"\", email: \"\", subject: \"\", message: \"\" });\r\n\t\t\t\tsetTimeout(() => setFormState(formStates.ACTIVE), 4000);\r\n\t\t\t})\r\n\t\t\t.catch(() => setFormState(formStates.ERROR));\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{({ isSubmitting, errors, isValid, touched }) => (\r\n\t\t\t\t<>\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tEmail Us\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
{errors && errors[0]}
\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{formState === formStates.SENDING && (\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\tSending .\r\n\t\t\t\t\t\t\t\t\t\t.\r\n\t\t\t\t\t\t\t\t\t\t.\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t{formState === formStates.SENT &&

Sent

}\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default ContactForm;\r\n","export const PAID = \"Paid\",\r\n\tPAST_DUE = \"Past Due*\",\r\n\tDUE_NOW = \"Due Now\",\r\n\tDUE_SOON = \"Due Soon\";\r\n\r\nexport const LATE_DAY_PERIOD = 30;\r\n","import axios from \"axios\";\r\n\r\nexport default axios.create({\r\n\tbaseURL: process.env.REACT_APP_API_URL,\r\n});\r\n","export default __webpack_public_path__ + \"static/media/upload_white.9464efa0.svg\";","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { store, persistor } from \"./globals\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport { PersistGate } from \"redux-persist/integration/react\";\r\nimport { withSuspense } from \"components\";\r\nimport { lazy } from \"helpers\";\r\n\r\n//Ensure bootstrap css is loaded before application styling so that it can be overriden in most cases\r\nimport \"normalize.css\";\r\nimport \"./bootstrap.min.css\";\r\nimport \"animate.css\";\r\nimport \"./index.scss\";\r\n\r\nconst MaxLoader =
Loading...
;\r\n\r\nconst Provider = withSuspense(\r\n\tlazy(() => import(\"react-redux\"), \"Provider\"),\r\n\tMaxLoader\r\n);\r\nconst App = withSuspense(\r\n\tlazy(() => import(\"./App\")),\r\n\tMaxLoader\r\n);\r\n\r\nReactDOM.render(\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t,\r\n\tdocument.getElementById(\"root\")\r\n);\r\n\r\nimport(\"./serviceWorker\").then(serviceWorker => serviceWorker.unregister());\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { fullLogout } from \"globals/misc\";\r\n\r\nconst defaultState = {\r\n\tpolicyForClaims: {},\r\n\tclaimHandlerID: \"\",\r\n\tpassengers: [],\r\n\tcompletedSteps: [],\r\n\tclaimsQuestions: [],\r\n\tclaimsNoteQuestions: [],\r\n\tclaimsDamageQuestion: [],\r\n\tselectedAccidentType: \"\",\r\n\tselectedFile: [],\r\n\tquestions: [],\r\n\tsourceType: \"\",\r\n\tcurrentBlob: null,\r\n\tanswer: [],\r\n\tisClaimSearch: null,\r\n\twitnesses: [],\r\n\tregistryTypes: [],\r\n\tregistry_id: \"\",\r\n\thasWitnesses: null,\r\n\tdocumentTypes: [],\r\n\tpoliceReceipt: [],\r\n\temailSent: null,\r\n\temail: \"\",\r\n\treceived_from: \"\",\r\n\treportedToPolice: null,\r\n\tcustomerAtFault: null,\r\n\tclaimsRepairEstimatesDocuments: [],\r\n\tclaimsSubmitUploadDocuments: {},\r\n\tclaimSuccessDocuments: [],\r\n\tclaimToDamages: null,\r\n\thasRepairEstimateFiles: null,\r\n\tnote: \"\",\r\n\tcurrentPolicyNumber: \"\",\r\n\tdescriptionNote: \"\",\r\n\tdescriptionDocument: \"\",\r\n\taccidentTypeQuestion: \"\",\r\n\triskId: null,\r\n\tcurrentClaimId: \"\",\r\n\tcurrentBlobModal: false,\r\n\tclaimId: \"\",\r\n\tdateReported: \"\",\r\n\tlossDate: \"\",\r\n\tfullAddress: \"\",\r\n\tstreetNumber: \"\",\r\n\tstreetType: \"\",\r\n\tstreetName: \"\",\r\n\tparish: \"\",\r\n\ttown: \"\",\r\n\tgeneral_area: \"\",\r\n\tlossResult: \"\",\r\n\tclaimReview: {},\r\n\tauthorizationDetails: {},\r\n\tallImages: [],\r\n\taccidentAffected: \"\",\r\n\tclaimValue: \"\",\r\n\tisOpened: false,\r\n\tcurrentPolicyDate: \"\",\r\n\tindicatorUpdater: \"\",\r\n\ttimeDisplayed: \"\",\r\n\tlossResults: [],\r\n\ttimeMeridian: \"\",\r\n\tthirdPartyDetails: [],\r\n\tyourAccidentDetails: [],\r\n\tserviceProvider: {},\r\n\totherServiceProviderName: \"\",\r\n\testimateFile: [],\r\n\tthirdPartyCounter: 1,\r\n\tthirdPartyOccupantAnswer: \"\",\r\n\tclaimDocumentsSent: false,\r\n\tinsuredName: \"\",\r\n\tinsuredVehicleDamagePanel: [],\r\n\tinsuredDriverWasInjured: null,\r\n\totherPartyDocs: [],\r\n\tdriverInfoDocs: [],\r\n\totherDetails: {},\r\n\tinsuredDamageDocs: [],\r\n\tisLateClaim: null,\r\n\toutstandingDocuments: [],\r\n\tcurrentLossDate: \"\",\r\n\tclaimSubmittedSuccessfully: false,\r\n\tregistryCreatedSuccessfully: false,\r\n\tisSCDFlow: null,\r\n\tpolicyId: \"\",\r\n\tregNo: \"\",\r\n\trenewalSumMarketValueFile: [],\r\n\tclaimsForTracking:[],\r\n\tactiveClaimForTracking: {},\r\n\tclaimsStatuses:[],\r\n};\r\n\r\nlet claimSlice = createSlice({\r\n\tname: \"claim\",\r\n\tinitialState: defaultState,\r\n\treducers: {\r\n\t\tsetPolicyForClaims: (state, action) => {\r\n\t\t\tstate.policyForClaims = action.payload;\r\n\t\t},\r\n\t\tsetOutstandingDocuments: (state, action) => {\r\n\t\t\tstate.outstandingDocuments = action.payload;\r\n\t\t},\r\n\t\tsetClaimHandlerID: (state, action) => {\r\n\t\t\tstate.claimHandlerID = action.payload;\r\n\t\t},\r\n\t\tsetRegNo: (state, action) => {\r\n\t\t\tstate.regNo = action.payload;\r\n\t\t},\r\n\t\tsetInsuredName: (state, action) => {\r\n\t\t\tstate.insuredName = action.payload;\r\n\t\t},\r\n\t\tsetClaimSubmittedSuccessfully: (state, action) => {\r\n\t\t\tstate.claimSubmittedSuccessfully = action.payload;\r\n\t\t},\r\n\t\tsetRegistryCreatedSuccessfully: (state, action) => {\r\n\t\t\tstate.registryCreatedSuccessfully = action.payload;\r\n\t\t},\r\n\t\tsetRegistryTypes: (state, action) => {\r\n\t\t\tstate.registryTypes = action.payload;\r\n\t\t},\r\n\t\tsetIsSCDFlow: (state, action) => {\r\n\t\t\tstate.isSCDFlow = action.payload;\r\n\t\t},\r\n\t\tsetRegistryId: (state, action) => {\r\n\t\t\tstate.registry_id = action.payload;\r\n\t\t},\r\n\t\tsetCurrentLossDate: (state, action) => {\r\n\t\t\tstate.currentLossDate = action.payload;\r\n\t\t},\r\n\t\tsetSpecificOutstandingDocument: (state, action) => {\r\n\t\t\tstate.outstandingDocuments[action.payload.key][action.payload.index] = action.payload.data;\r\n\t\t},\r\n\t\tsetInsuredDamageDocs: (state, action) => {\r\n\t\t\tstate.insuredDamageDocs = action.payload;\r\n\t\t},\r\n\t\tsetEmail: (state, action) => {\r\n\t\t\tstate.email = action.payload;\r\n\t\t},\r\n\t\tsetReceivedFrom: (state, action) => {\r\n\t\t\tstate.received_from = action.payload;\r\n\t\t},\r\n\t\tsetGlobalSourceType: (state, action) => {\r\n\t\t\tstate.sourceType = action.payload;\r\n\t\t},\r\n\r\n\t\tsetCurrentBlobModal: (state, action) => {\r\n\t\t\tstate.currentBlobModal = action.payload;\r\n\t\t},\r\n\t\tsetClaimSuccessDocuments: (state, action) => {\r\n\t\t\tstate.claimSuccessDocuments = action.payload;\r\n\t\t},\r\n\t\tsetCurrentBlob: (state, action) => {\r\n\t\t\tstate.currentBlob = action.payload;\r\n\t\t},\r\n\t\tsetcurrentClaimId: (state, action) => {\r\n\t\t\tstate.currentClaimId = action.payload;\r\n\t\t},\r\n\t\tsetOtherDetails: (state, action) => {\r\n\t\t\tstate.otherDetails = action.payload;\r\n\t\t},\r\n\t\tsetIsClaimSearch: (state, action) => {\r\n\t\t\tstate.isClaimSearch = action.payload;\r\n\t\t},\r\n\t\tsetDriverInfoDocs: (state, action) => {\r\n\t\t\tstate.driverInfoDocs = action.payload;\r\n\t\t},\r\n\t\tsetEmailSent: (state, action) => {\r\n\t\t\tstate.emailSent = action.payload;\r\n\t\t},\r\n\r\n\t\tsetCurrentPolicyNumber: (state, action) => {\r\n\t\t\tstate.currentPolicyNumber = action.payload;\r\n\t\t},\r\n\t\tsetPassengerDetails: (state, action) => {\r\n\t\t\tstate.passengers = action.payload;\r\n\t\t},\r\n\t\tsetIsLateClaim: (state, action) => {\r\n\t\t\tstate.isLateClaim = action.payload;\r\n\t\t},\r\n\t\tsetOtherPartyDocs: (state, action) => {\r\n\t\t\tstate.otherPartyDocs = action.payload;\r\n\t\t},\r\n\t\tsetinsuredDriverWasInjured: (state, action) => {\r\n\t\t\tstate.insuredDriverWasInjured = action.payload;\r\n\t\t},\r\n\t\tsetThirdPartyOccupantAnswer: (state, action) => {\r\n\t\t\tstate.thirdPartyOccupantAnswer = action.payload;\r\n\t\t},\r\n\t\tsetThirdPartyCounter: (state, action) => {\r\n\t\t\tstate.thirdPartyCounter = action.payload;\r\n\t\t},\r\n\t\tsetThirdPartyDetails: (state, action) => {\r\n\t\t\tstate.thirdPartyDetails = action.payload;\r\n\t\t},\r\n\t\tsetAllImages: (state, action) => {\r\n\t\t\tstate.allImages = action.payload;\r\n\t\t},\r\n\t\tsetServiceProvider: (state, action) => {\r\n\t\t\tstate.serviceProvider = action.payload;\r\n\t\t},\r\n\t\tsetOtherServiceProviderName: (state, action) => {\r\n\t\t\tstate.otherServiceProviderName = action.payload;\r\n\t\t},\r\n\t\tsetTimeDisplayed: (state, action) => {\r\n\t\t\tstate.timeDisplayed = action.payload;\r\n\t\t},\r\n\t\tsetTimeMeridian: (state, action) => {\r\n\t\t\tstate.timeMeridian = action.payload;\r\n\t\t},\r\n\t\tsetIndicatorUpdater: (state, action) => {\r\n\t\t\tstate.indicatorUpdater = action.payload;\r\n\t\t},\r\n\r\n\t\tsetEstimateFile: (state, action) => {\r\n\t\t\tstate.estimateFile = action.payload;\r\n\t\t},\r\n\r\n\t\tsetCurrentPolicyDate: (state, action) => {\r\n\t\t\tstate.currentPolicyDate = action.payload;\r\n\t\t},\r\n\t\tsetIsOpened: (state, action) => {\r\n\t\t\tstate.isOpened = action.payload;\r\n\t\t},\r\n\t\tsetCompletedSteps: (state, action) => {\r\n\t\t\tlet processNumber = action.payload;\r\n\t\t\tlet oldSteps = state.completedSteps;\r\n\t\t\toldSteps.push(processNumber);\r\n\t\t\tstate.completedSteps = [...new Set(oldSteps)];\r\n\t\t},\r\n\t\tsetFullAddress: (state, action) => {\r\n\t\t\tstate.fullAddress = action.payload;\r\n\t\t},\r\n\t\tsetStreetNumber: (state, action) => {\r\n\t\t\tstate.streetNumber = action.payload;\r\n\t\t},\r\n\t\tsetStreetType: (state, action) => {\r\n\t\t\tstate.streetType = action.payload;\r\n\t\t},\r\n\t\tsetStreetName: (state, action) => {\r\n\t\t\tstate.streetName = action.payload;\r\n\t\t},\r\n\t\tsetParish: (state, action) => {\r\n\t\t\tstate.parish = action.payload;\r\n\t\t},\r\n\t\tsetDocumentTypes: (state, action) => {\r\n\t\t\tstate.documentTypes = action.payload;\r\n\t\t},\r\n\t\tsetTown: (state, action) => {\r\n\t\t\tstate.town = action.payload;\r\n\t\t},\r\n\t\tsetLossResult: (state, action) => {\r\n\t\t\tstate.lossResult = action.payload;\r\n\t\t},\r\n\t\tsetLossResults: (state, action) => {\r\n\t\t\tstate.lossResults = action.payload;\r\n\t\t},\r\n\r\n\t\tsetRiskId: (state, action) => {\r\n\t\t\tstate.riskId = action.payload;\r\n\t\t},\r\n\t\tsetClaimId: (state, action) => {\r\n\t\t\tstate.claimId = action.payload;\r\n\t\t},\r\n\t\tsetClaimsForTracking: (state, action)=>{\r\n\t\t\tstate.claimsForTracking = action.payload;\r\n\t\t},\r\n\t\tsetActiveClaimForTracking: (state, action)=>{\r\n\t\t\tstate.activeClaimForTracking = action.payload;\r\n\t\t},\r\n\t\tsetPolicyId: (state, action) => {\r\n\t\t\tstate.policyId = action.payload;\r\n\t\t},\r\n\t\tsetDateReported: (state, action) => {\r\n\t\t\tstate.dateReported = action.payload;\r\n\t\t},\r\n\t\tsetLossDate: (state, action) => {\r\n\t\t\tstate.lossDate = action.payload;\r\n\t\t},\r\n\t\tsetNote: (state, action) => {\r\n\t\t\tstate.note = action.payload;\r\n\t\t},\r\n\t\tsetDescriptionNote: (state, action) => {\r\n\t\t\tstate.descriptionNote = action.payload;\r\n\t\t},\r\n\t\tsetDescriptionDocument: (state, action) => {\r\n\t\t\tstate.descriptionDocument = action.payload;\r\n\t\t},\r\n\r\n\t\tsetAccidentTypeQuestion: (state, action) => {\r\n\t\t\tstate.accidentTypeQuestion = action.payload;\r\n\t\t},\r\n\r\n\t\tsetClaimsQuestions: (state, action) => {\r\n\t\t\tstate.claimsQuestions = action.payload;\r\n\t\t},\r\n\r\n\t\tsetClaimsNoteQuestions: (state, action) => {\r\n\t\t\tstate.claimsNoteQuestions = action.payload;\r\n\t\t},\r\n\r\n\t\tsetclaimsDamageQuestion: (state, action) => {\r\n\t\t\tstate.claimsDamageQuestion = action.payload;\r\n\t\t},\r\n\r\n\t\tsetAccidentType: (state, action) => {\r\n\t\t\tstate.selectedAccidentType = action.payload;\r\n\t\t},\r\n\t\tsetSelectedFile: (state, action) => {\r\n\t\t\tstate.selectedFile = action.payload;\r\n\t\t},\r\n\t\taddAnswer: (state, action) => {\r\n\t\t\tstate.answer = action.payload;\r\n\t\t},\r\n\t\tsetQuestion: (state, action) => {\r\n\t\t\tstate.questions = action.payload;\r\n\t\t},\r\n\t\tsetGeneralArea: (state, action) => {\r\n\t\t\tstate.general_area = action.payload;\r\n\t\t},\r\n\t\tsetClaimReview: (state, action) => {\r\n\t\t\tstate.claimReview = action.payload;\r\n\t\t},\r\n\t\tsetAuthorizationDetails: (state, action) => {\r\n\t\t\tstate.authorizationDetails = action.payload;\r\n\t\t},\r\n\t\tsetAccidentAffected: (state, action) => {\r\n\t\t\tstate.accidentAffected = action.payload;\r\n\t\t},\r\n\t\tsetYourAccidentDetails: (state, action) => {\r\n\t\t\tstate.yourAccidentDetails = action.payload;\r\n\t\t},\r\n\t\tsetClaimValue: (state, action) => {\r\n\t\t\tstate.claimValue = action.payload;\r\n\t\t},\r\n\t\tsetClaimDocumentsSent: (state, action) => {\r\n\t\t\tstate.claimDocumentsSent = action.payload;\r\n\t\t},\r\n\r\n\t\tsetInsuredVehicleDamagePanel: (state, action) => {\r\n\t\t\tstate.insuredVehicleDamagePanel = action.payload;\r\n\t\t},\r\n\t\tsetWitnesses: (state, action) => {\r\n\t\t\tstate.witnesses = action.payload;\r\n\t\t},\r\n\t\tsetHasWitness: (state, action) => {\r\n\t\t\tstate.hasWitnesses = action.payload;\r\n\t\t},\r\n\t\tsetPoliceReceipt: (state, action) => {\r\n\t\t\tstate.policeReceipt = action.payload;\r\n\t\t},\r\n\t\tsetWasReportedToPolice: (state, action) => {\r\n\t\t\tstate.reportedToPolice = action.payload;\r\n\t\t},\r\n\t\tsetCustomerIsAtFault: (state, action) => {\r\n\t\t\tstate.customerAtFault = action.payload;\r\n\t\t},\r\n\t\tsetClaimRepairsEstimateFiles: (state, action) => {\r\n\t\t\tstate.claimsRepairEstimatesDocuments = action.payload;\r\n\t\t},\r\n\t\tsetClaimSubmitUploadFiles: (state, action) => {\r\n\t\t\tstate.claimsSubmitUploadDocuments = action.payload;\r\n\t\t},\r\n\t\tsetClaimToDamages: (state, action) => {\r\n\t\t\tstate.claimToDamages = action.payload;\r\n\t\t},\r\n\t\tsetClaimsStatuses: (state, action) => {\r\n\t\t\tstate.claimsStatuses= action.payload;\r\n\t\t},\r\n\t\tsetHasRepairsEstimate: (state, action) => {\r\n\t\t\tstate.hasRepairEstimateFiles = action.payload;\r\n\t\t},\r\n\t\tsetRenewalSumMarketValueFile: (state, action) => {\r\n\t\t\tstate.renewalSumMarketValueFile = Array.isArray(action.payload) ? action.payload : [action.payload];\r\n\t\t},\r\n\t\tsetDefault: () => defaultState,\r\n\t},\r\n\textraReducers: builder => {\r\n\t\tbuilder.addCase(fullLogout, (state, action) => defaultState);\r\n\t},\r\n});\r\n\r\nexport const getPolicyForClaims = ({ claim: state }) => state.policyForClaims;\r\nexport const getInsuredDamageDocs = ({ claim: state }) => state.insuredDamageDocs;\r\nexport const getOtherDetails = ({ claim: state }) => state.otherDetails;\r\nexport const getClaimHandlerID = ({ claim: state }) => state.claimHandlerID;\r\nexport const getRegNo = ({ claim: state }) => state.regNo;\r\nexport const getPassengerDetails = ({ claim: state }) => state.passengers;\r\nexport const getSourceType = ({ claim: state }) => state.sourceType;\r\nexport const getCurrentLossDate = ({ claim: state }) => state.currentLossDate;\r\nexport const getDriverInfoDocs = ({ claim: state }) => state.driverInfoDocs;\r\nexport const getIsClaimSearch = ({ claim: state }) => state.isClaimSearch;\r\nexport const getOtherPartyDocs = ({ claim: state }) => state.otherPartyDocs;\r\nexport const getInsuredVehicleDamagePanel = ({ claim: state }) => state.insuredVehicleDamagePanel;\r\nexport const getThirdPartOccupantAnswer = ({ claim: state }) => state.thirdPartyOccupantAnswer;\r\nexport const getThirdPartyCounter = ({ claim: state }) => state.thirdPartyCounter;\r\nexport const getThirdPartyDetails = ({ claim: state }) => state.thirdPartyDetails;\r\nexport const getInusredName = ({ claim: state }) => state.insuredName;\r\nexport const getTimeDisplayed = ({ claim: state }) => state.timeDisplayed;\r\nexport const getTimeMeridian = ({ claim: state }) => state.timeMeridian;\r\nexport const getIsOpened = ({ claim: state }) => state.isOpened;\r\nexport const getIsClose = ({ claim: state }) => state.isClose;\r\nexport const getCompletedSteps = ({ claim: state }) => state.completedSteps;\r\nexport const getIsSCDFlow = ({ claim: state }) => state.isSCDFlow;\r\nexport const getClaimValue = ({ claim: state }) => state.claimValue;\r\nexport const getRiskId = ({ claim: state }) => state.riskId;\r\nexport const getIsLateClaim = ({ claim: state }) => state.isLateClaim;\r\nexport const getEmail = ({ claim: state }) => state.email;\r\nexport const getClaimSubmittedSuccessfully = ({ claim: state }) => state.claimSubmittedSuccessfully;\r\nexport const getRegistryCreatedSuccessfully = ({ claim: state }) => state.registryCreatedSuccessfully;\r\nexport const getReceivedFrom = ({ claim: state }) => state.received_from;\r\nexport const getServiceProvider = ({ claim: state }) => state.serviceProvider;\r\nexport const getOtherServiceProviderName = ({ claim: state }) => state.otherServiceProviderName;\r\nexport const getAllImages = ({ claim: state }) => state.allImages;\r\nexport const getClaimId = ({ claim: state }) => state.claimId;\r\nexport const getLossDate = ({ claim: state }) => state.lossDate;\r\nexport const getRegistryId = ({ claim: state }) => state.registry_id;\r\nexport const getDateReported = ({ claim: state }) => state.dateReported;\r\nexport const getcurrentClaimId = ({ claim: state }) => state.currentClaimId;\r\nexport const getRegistryTypes = ({ claim: state }) => state.registryTypes;\r\nexport const getDocumentTypes = ({ claim: state }) => state.documentTypes;\r\nexport const getClaimsQuestions = ({ claim: state }) => state.claimsQuestions;\r\nexport const getClaimsNoteQuestions = ({ claim: state }) => state.claimsNoteQuestions;\r\nexport const getclaimsDamageQuestion = ({ claim: state }) => state.claimsDamageQuestion;\r\nexport const getAccidentType = ({ claim: state }) => state.selectedAccidentType;\r\nexport const getAccidentTypeQuestion = ({ claim: state }) => state.accidentTypeQuestion;\r\nexport const getOutstandingDocuments = ({ claim: state }) => state.outstandingDocuments;\r\nexport const getSelectedFile = ({ claim: state }) => state.selectedFile;\r\nexport const getQuestion = ({ claim: state }) => state.questions;\r\nexport const getAnswer = ({ claim: state }) => state.answer;\r\nexport const getCurrentBlob = ({ claim: state }) => state.currentBlob;\r\nexport const getNote = ({ claim: state }) => state.note;\r\nexport const getCurrentBlobModal = ({ claim: state }) => state.currentBlobModal;\r\nexport const getLossResults = ({ claim: state }) => state.lossResults;\r\nexport const getInsuredDriverWasInjured = ({ claim: state }) => state.insuredDriverWasInjured;\r\nexport const getEstimateFile = ({ claim: state }) => state.estimateFile;\r\nexport const getDescriptionNote = ({ claim: state }) => state.descriptionNote;\r\nexport const getDescriptionDocument = ({ claim: state }) => state.descriptionDocument;\r\nexport const getGeneralArea = ({ claim: state }) => state.general_area;\r\nexport const getLossResult = ({ claim: state }) => state.lossResult;\r\nexport const getFullAddress = ({ claim: state }) => state.fullAddress;\r\nexport const getPolicyId = ({ claim: state }) => state.policyId;\r\nexport const getStreetNumber = ({ claim: state }) => state.streetNumber;\r\nexport const getStreetName = ({ claim: state }) => state.streetName;\r\nexport const getCurrentPolicyNumber = ({ claim: state }) => state.currentPolicyNumber;\r\nexport const getStreetType = ({ claim: state }) => state.streetType;\r\nexport const getParish = ({ claim: state }) => state.parish;\r\nexport const getTown = ({ claim: state }) => state.town;\r\nexport const getClaimReview = ({ claim: state }) => state.claimReview;\r\nexport const getAuthorizationDetails = ({ claim: state }) => state.authorizationDetails;\r\nexport const getAccidentAffected = ({ claim: state }) => state.accidentAffected;\r\nexport const getCurrentPolicyDate = ({ claim: state }) => state.currentPolicyDate;\r\nexport const getIndicatorUpdater = ({ claim: state }) => state.indicatorUpdater;\r\nexport const getYourAccidentDetails = ({ claim: state }) => state.yourAccidentDetails;\r\nexport const getClaimDocumentsSent = ({ claim: state }) => state.claimDocumentsSent;\r\nexport const getClaimWitnesse = ({ claim: state }) => state.witnesses;\r\nexport const getHasWitnesses = ({ claim: state }) => state.hasWitnesses;\r\nexport const wasEmailSent = ({ claim: state }) => state.emailSent;\r\nexport const getCustomerIsAtFault = ({ claim: state }) => state.customerAtFault;\r\nexport const getWasReportedToPolice = ({ claim: state }) => state.reportedToPolice;\r\nexport const getPoliceReceipt = ({ claim: state }) => state.policeReceipt;\r\nexport const getClaimToDamages = ({ claim: state }) => state.claimToDamages;\r\nexport const getHasRepairEstimates = ({ claim: state }) => state.hasRepairEstimateFiles;\r\nexport const getClaimsRepairsEstimateFiles = ({ claim: state }) => state.claimsRepairEstimatesDocuments;\r\nexport const getClaimsSuccessDocuments = ({ claim: state }) => state.claimSuccessDocuments;\r\nexport const getClaimsSubmitUploadFiles = ({ claim: state }) => state.claimsSubmitUploadDocuments;\r\nexport const getRenewalSumMarketValueFile = ({ claim: state }) => state.renewalSumMarketValueFile;\r\nexport const getClaimsForTracking = ({claim: state})=> state.claimsForTracking;\r\nexport const getClaimsStatuses = ({claim: state})=>state.claimsStatuses;\r\nexport const getActiveClaimForTracking = ({claim: state}) => state.activeClaimForTracking;\r\n\r\nexport const {\r\n\tsetPolicyForClaims,\r\n\tsetClaimHandlerID,\r\n\tsetPassengerDetails,\r\n\tsetWitnesses,\r\n\tsetRegistryId,\r\n\tsetHasWitness,\r\n\tsetCompletedSteps,\r\n\tsetCurrentLossDate,\r\n\tsetCurrentBlob,\r\n\tsetGlobalSourceType,\r\n\tsetClaimsQuestions,\r\n\tsetClaimsNoteQuestions,\r\n\tsetRegNo,\r\n\tsetClaimToDamages,\r\n\tsetclaimsDamageQuestion,\r\n\tsetRegistryTypes,\r\n\tsetClaimRepairsEstimateFiles,\r\n\tsetClaimSubmitUploadFiles,\r\n\tsetcurrentClaimId,\r\n\tsetInsuredName,\r\n\tsetHasRepairsEstimate,\r\n\tsetQuestion,\r\n\tsetIsClaimSearch,\r\n\tsetAccidentType,\r\n\tsetPolicyId,\r\n\taddAnswer,\r\n\tsetIsSCDFlow,\r\n\tsetCurrentPolicyNumber,\r\n\tsetSelectedFile,\r\n\tsetinsuredDriverWasInjured,\r\n\tsetClaimSuccessDocuments,\r\n\tsetDefault,\r\n\tsetEmailSent,\r\n\tsetNote,\r\n\tsetClaimId,\r\n\tsetClaimsForTracking,\r\n\tsetActiveClaimForTracking,\r\n\tsetServiceProvider,\r\n\tsetOtherServiceProviderName,\r\n\tsetAllImages,\r\n\tsetAccidentTypeQuestion,\r\n\tsetRiskId,\r\n\tsetEmail,\r\n\tsetReceivedFrom,\r\n\tsetDateReported,\r\n\tsetDocumentTypes,\r\n\tsetLossDate,\r\n\tsetDescriptionNote,\r\n\tsetDescriptionDocument,\r\n\tsetGeneralArea,\r\n\tsetEstimateFile,\r\n\tsetLossResult,\r\n\tsetFullAddress,\r\n\tsetParish,\r\n\tsetStreetName,\r\n\tsetStreetNumber,\r\n\tsetStreetType,\r\n\tsetTown,\r\n\tsetClaimReview,\r\n\tsetClaimSubmittedSuccessfully,\r\n\tsetRegistryCreatedSuccessfully,\r\n\tsetAuthorizationDetails,\r\n\tsetAccidentAffected,\r\n\tsetIsLateClaim,\r\n\tsetClaimValue,\r\n\tsetCurrentBlobModal,\r\n\tsetIsOpened,\r\n\tsetCurrentPolicyDate,\r\n\tsetIndicatorUpdater,\r\n\tsetTimeDisplayed,\r\n\tsetLossResults,\r\n\tsetTimeMeridian,\r\n\tsetYourAccidentDetails,\r\n\tsetThirdPartyDetails,\r\n\tsetThirdPartyCounter,\r\n\tsetThirdPartyOccupantAnswer,\r\n\tsetClaimDocumentsSent,\r\n\tsetInsuredVehicleDamagePanel,\r\n\tsetCustomerIsAtFault,\r\n\tsetPoliceReceipt,\r\n\tsetWasReportedToPolice,\r\n\tsetOtherPartyDocs,\r\n\tsetDriverInfoDocs,\r\n\tsetOtherDetails,\r\n\tsetInsuredDamageDocs,\r\n\tsetSpecificOutstandingDocument,\r\n\tsetOutstandingDocuments,\r\n\tsetRenewalSumMarketValueFile,\r\n\tsetClaimsStatuses\r\n} = claimSlice.actions;\r\nexport default claimSlice.reducer;\r\n","import { createAction } from \"@reduxjs/toolkit\";\r\n\r\nexport const fullLogout = createAction(\"LOGOUT\");\r\nexport const changePolicy = createAction(\"CHANGE_POL\");\r\nexport const clearPolicyInfo = createAction(\"CLEAR_POLICY_UPDATE_INFO\");\r\n\r\n","import { checkExpToken, checkKey, checkWeirdBadKey } from \"helpers/auth\";\r\n\r\nexport const getPolicy = async (policyId, isRenewal) => {\r\n\tlet policy = {};\r\n\tconst endpoint = `getPolicy`;\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tpolicyID: policyId,\r\n\t\t\tisRenewal: isRenewal,\r\n\t\t},\r\n\t};\r\n\tconst reqType = \"get\";\r\n\r\n\tpolicy = await checkKey({ endpoint, payload, reqType });\r\n\r\n\treturn policy;\r\n};\r\n\r\nexport const getPolicyRisks = async ( policyId, isRenewal) => {\r\n\tlet risks = {};\r\n\r\n\tconst endpoint = `/getPolicyRisks`;\r\n\tconst reqType = \"get\";\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tpolicyID: policyId,\r\n\t\t\tisRenewal: isRenewal,\r\n\t\t},\r\n\t};\r\n\r\n\trisks = await checkKey({ endpoint, payload, reqType });\r\n\r\n\treturn risks;\r\n};\r\n\r\nexport const getPolicyExtensions = async ( policyId) => {\r\n\tlet extensions = {};\r\n\tconst endpoint = `/getPolicyExtensions`;\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tpolicyID: policyId,\r\n\t\t},\r\n\t};\r\n\tconst reqType = \"get\";\r\n\r\n\textensions = await checkKey({ endpoint, payload, reqType });\r\n\t// let policy_id = encodeURIComponent(policyId)\r\n\t// await dNet.get(`/getPolicyExtensions?token=${token}&policyID=${policy_id}`).then(res => {\r\n\t// extensions = res.data\r\n\t// })\r\n\treturn extensions;\r\n};\r\n\r\nexport const getPolicyProfExt = async ( policyPrefix) => {\r\n\tlet extensions = {};\r\n\r\n\tconst endpoint = `/getPolicyProfExt`;\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tpolicyPrefix: policyPrefix,\r\n\t\t},\r\n\t};\r\n\tconst reqType = \"get\";\r\n\r\n\textensions = checkKey({ endpoint, payload, reqType });\r\n\r\n\treturn extensions;\r\n};\r\n\r\nexport const checkPromoCode = async ( code) => {\r\n\tconst endpoint = `/checkPromoCode`;\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tratingCode: code,\r\n\t\t},\r\n\t};\r\n\tconst reqType = \"post\";\r\n\r\n\tlet ratingCode = checkKey({ endpoint, payload: null, reqType }, payload);\r\n\r\n\treturn ratingCode;\r\n};\r\n\r\nexport const getPolicyByParams = async ( params) => {\r\n\tconst endpoint = `/getPolicyByParams`;\r\n\tconst reqType = \"get\";\r\n\tlet policy = {};\r\n\tlet payload = {\r\n\t\tparams: {\r\n\t\t\tpolicyNo: params.policy_number,\r\n\t\t\tregNo: params.regNo,\r\n\t\t},\r\n\t};\r\n\r\n\tpolicy = checkKey({ endpoint, payload, reqType });\r\n\treturn policy;\r\n};\r\n\r\nexport const getPolicyProfRatingCodes = async ( policyPrefix) => {\r\n\tlet extensions = {};\r\n\r\n\tconst endpoint = `/getRatingCodes`;\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tpolicyPrefix: policyPrefix,\r\n\t\t},\r\n\t};\r\n\tconst reqType = \"get\";\r\n\r\n\textensions = checkKey({ endpoint, payload, reqType });\r\n\r\n\treturn extensions;\r\n};\r\n\r\nexport const getExchangeRate = async ( from, to, effective_date, country) => {\r\n\tlet rate = {};\r\n\r\n\tconst endpoint = `/getExchangeRate`;\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tfrom: from,\r\n\t\t\tto: to,\r\n\t\t\tdate: effective_date,\r\n\t\t\tcountry: country,\r\n\t\t},\r\n\t};\r\n\r\n\tconst reqType = `get`;\r\n\r\n\trate = checkKey({ endpoint, payload, reqType });\r\n\r\n\treturn rate;\r\n};\r\n\r\nexport const getPaymentPlans = async ( currency, policyPrefix) => {\r\n\tlet paymentPlans = {};\r\n\tconst endpoint = `/getPaymentPlans`;\r\n\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tcurrency: currency,\r\n\t\t\tprefix: policyPrefix,\r\n\t\t},\r\n\t};\r\n\r\n\tconst reqType = \"get\";\r\n\r\n\tpaymentPlans = await checkKey({ endpoint, payload, reqType });\r\n\r\n\treturn paymentPlans;\r\n};\r\n\r\nexport const getTransactionSchedule = async ( transactionId) => {\r\n\tlet schedule = {};\r\n\tlet endpoint = `/getTransactionSchedule`;\r\n\tlet payload = {\r\n\t\ttransaction_id: transactionId,\r\n\t};\r\n\r\n\tschedule = await checkKey({ endpoint, payload });\r\n\r\n\treturn schedule;\r\n};\r\n\r\nexport const getPolicyTransactions = async ( policyId) => {\r\n\tlet transactions = {};\r\n\tlet endpoint = `/getPolicyTransactions`;\r\n\tconst payload = {\r\n\t\tpolicy_id: policyId,\r\n\t};\r\n\ttransactions = await checkKey({ endpoint, payload });\r\n\treturn transactions;\r\n};\r\n\r\n/**\r\n \r\n * @param {{ auto_authorize: boolean; branch: string; receipt_date: string; policy_id: any; amount: number; payment_type: string; currency: string; is_tax_exempt: boolean; }[]} receiptArray\r\n */\r\nexport const drawReceiptBatch = async ( receiptArray) => {\r\n\tlet payload = {\r\n\t\treceiptArray,\r\n\t};\r\n\r\n\tlet endpoint = `/drawReceiptBatch`;\r\n\r\n\treturn await checkWeirdBadKey({ endpoint, payload });\r\n};\r\n\r\n/**\r\n \r\n * @param {{ auto_authorize: boolean; branch: string; receipt_date: string; policy_id: any; client_global_name_id: string; amount: number; payment_type: string; manual_receipt_number: string; currency: string; is_tax_exempt: boolean; }[]} receiptArray\r\n */\r\nexport const drawReceipt = async ( receipt) => {\r\n\tlet payload = {\r\n\t\t...receipt,\r\n\t};\r\n\r\n\tlet endpoint = `/drawReceipt`;\r\n\r\n\treturn await checkKey({ endpoint, payload });\r\n};\r\n\r\nexport const getPolicyPaymentPlan = async ( policyId) => {\r\n\tlet pPaymentPlan = {};\r\n\r\n\tconst endpoint = `/getPolicyPaymentPlan`;\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tpolicy_id: policyId,\r\n\t\t},\r\n\t};\r\n\tconst reqType = `get`;\r\n\r\n\tpPaymentPlan = checkKey({ endpoint, payload, reqType });\r\n\r\n\treturn pPaymentPlan;\r\n};\r\n\r\nexport const getStreetTypes = async () => {\r\n\tlet response = {};\r\n\r\n\tconst endpoint = \"/getStreetTypes\";\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t},\r\n\t};\r\n\r\n\tconst reqType = `get`;\r\n\tresponse = await checkKey({ endpoint, payload, reqType });\r\n\treturn response;\r\n};\r\n\r\nexport const getParishTowns = async ( param) => {\r\n\tlet response = {};\r\n\tconst endpoint = \"/getParishTowns\";\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tparam: param,\r\n\t\t},\r\n\t};\r\n\tconst reqType = `get`;\r\n\tresponse = await checkKey({ endpoint, payload, reqType });\r\n\treturn response;\r\n};\r\n\r\nexport const getGeneralAreas = async ( param) => {\r\n\tlet response = {};\r\n\tconst endpoint = \"/getGeneralAreas\";\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tparam: param,\r\n\t\t},\r\n\t};\r\n\tconst reqType = `get`;\r\n\tresponse = await checkKey({ endpoint, payload, reqType });\r\n\treturn response;\r\n};\r\n\r\nexport const genPolicyModification = async ( payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = `/policyModification`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\nexport const policyModification = async (\r\n\t\r\n\tpolicyId,\r\n\teffective_date,\r\n\tend_date,\r\n\trisk_increase_sum_insured,\r\n\trisk_id\r\n) => {\r\n\tlet modifications = {};\r\n\r\n\tconst endpoint = `/policyModification`;\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tpolicy_id: policyId,\r\n\t\t\teffective_date: effective_date,\r\n\t\t\tend_date: end_date,\r\n\t\t\trisk_increase_sum_insured: risk_increase_sum_insured,\r\n\t\t\trisk_id: risk_id,\r\n\t\t},\r\n\t};\r\n\tmodifications = checkKey({ endpoint, payload });\r\n\r\n\treturn modifications;\r\n};\r\n\r\n/**\r\n *\r\n * @param {Object} args\r\n * @param {string} args.policyId\r\n * @param {string} args.effective_date\r\n * @param {string} args.end_date\r\n * @param {string} args.action\r\n * @param {string} args.trans_wording\r\n * @param {string} args.risk_id\r\n * @param {string} args.sum_insured\r\n * @param {boolean} args.is_do_not_prorate\r\n * @returns\r\n */\r\nexport const updatRiskSumInsured = async ({\r\n\t\r\n\tpolicyId,\r\n\teffective_date,\r\n\tend_date,\r\n\taction,\r\n\ttrans_wording,\r\n\trisk_id,\r\n\tsum_insured,\r\n\tis_do_not_prorate\r\n}) => {\r\n\tlet modifications = {};\r\n\r\n\tconst endpoint = `/policyModification`;\r\n\tconst payload = {\r\n\t\tauthorize_transaction: true,\r\n\t\tpolicy_id: policyId,\r\n\t\teffective_date: effective_date,\r\n\t\tend_date: end_date,\r\n\t\tis_do_not_prorate,\r\n\t\taction: action,\r\n\t\ttrans_wordings: {\r\n\t\t\ttrans_wording: trans_wording,\r\n\t\t},\r\n\t\ttransaction_premium: 0,\r\n\t\tparameters: {\r\n\t\t\trisk_id: risk_id,\r\n\t\t\tsum_insured: sum_insured,\r\n\t\t},\r\n\t\texternal_reference_number: \"\",\r\n\t\tis_tax_exempt: false,\r\n\t\tservice_charge_type: \"\",\r\n\t\tservice_charge_value: 0,\r\n\t};\r\n\tmodifications = checkKey({ endpoint, payload });\r\n\r\n\treturn modifications;\r\n};\r\n\r\nexport const getNewCalculatedPremium = async ({\r\n\t\r\n\tpolicyId,\r\n\teffective_date,\r\n\tend_date,\r\n\taction,\r\n\ttrans_wording,\r\n\trisk_id,\r\n\tsum_insured,\r\n}) => {\r\n\tlet modifications = {};\r\n\tconst endpoint = `/policyModification`;\r\n\tconst payload = {\r\n\t\tauthorize_transaction: true,\r\n\t\tpolicy_id: policyId,\r\n\t\teffective_date: effective_date,\r\n\t\tend_date: end_date,\r\n\t\tis_do_not_prorate: false,\r\n\t\taction: action,\r\n\t\ttrans_wordings: {\r\n\t\t\ttrans_wording: trans_wording,\r\n\t\t},\r\n\t\ttransaction_premium: 0,\r\n\t\tparameters: {\r\n\t\t\trisk_id: risk_id,\r\n\t\t\tsum_insured: sum_insured,\r\n\t\t},\r\n\t\texternal_reference_number: \"\",\r\n\t\tis_tax_exempt: false,\r\n\t\tservice_charge_type: \"\",\r\n\t\tservice_charge_value: 0,\r\n\t\tonly_calculate_premium: true,\r\n\t};\r\n\tmodifications = checkKey({ endpoint, payload });\r\n\r\n\treturn modifications;\r\n};\r\n\r\nexport const createPolicy = async ( payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = `createPolicy`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\n/**\r\n *\r\n * @param {Object} args\r\n * @param {string} args.policy_id\r\n * @param {string=} args.narratives_to_add\r\n * @param {string=} args.narratives_to_remove\r\n * @returns\r\n */\r\nexport const updatePolicyNarratives = async ({ policy_id, narratives_to_add, narratives_to_remove }) => {\r\n\tlet endpoint = \"/updatePolicyNarratives\";\r\n\r\n\tlet response = await checkKey({\r\n\t\tendpoint,\r\n\t\t\r\n\t\tpayload: {\r\n\t\t\tpolicy_id,\r\n\t\t\tnarratives_to_add,\r\n\t\t\tnarratives_to_remove,\r\n\t\t},\r\n\t});\r\n\r\n\treturn response;\r\n};\r\n\r\n/**\r\n *\r\n * @param {Object} args\r\n \r\n * @param {string} args.policy_id\r\n * @param {string} args.policy_start_date\r\n * @param {string} args.policy_end_date\r\n * @param {string} args.risk_id\r\n * @param {string} args.registration_number\r\n * @param {boolean} args.is_do_not_prorate\r\n * @returns\r\n */\r\nexport const notingRegistrationNumber = async ({\r\n\t\r\n\tpolicy_id,\r\n\tpolicy_start_date,\r\n\tpolicy_end_date,\r\n\trisk_id,\r\n\tregistration_number,\r\n\tis_do_not_prorate,\r\n}) => {\r\n\tlet endpoint = \"/policyModification\";\r\n\r\n\tlet response = await checkKey({\r\n\t\tendpoint,\r\n\t\t\r\n\t\tpayload: {\r\n\t\t\tauthorize_transaction: true,\r\n\t\t\tpolicy_id,\r\n\t\t\teffective_date: policy_start_date,\r\n\t\t\tend_date: policy_end_date,\r\n\t\t\tis_do_not_prorate: is_do_not_prorate == null ? false : is_do_not_prorate,\r\n\t\t\taction: \"noting_registration_number\",\r\n\t\t\ttrans_wordings: {\r\n\t\t\t\ttrans_wording: \"Noting Registration No. U.\",\r\n\t\t\t},\r\n\t\t\ttransaction_premium: 0,\r\n\t\t\tparameters: {\r\n\t\t\t\trisk_id,\r\n\t\t\t\tregistration_number,\r\n\t\t\t},\r\n\t\t\texternal_reference_number: \"\",\r\n\t\t\tis_tax_exempt: false,\r\n\t\t\tservice_charge_type: \"\",\r\n\t\t\tservice_charge_value: 0,\r\n\t\t},\r\n\t});\r\n\r\n\treturn response;\r\n};\r\n/**\r\n *\r\n * @param {object} args\r\n \r\n * @param {string} args.national_id\r\n * @param {string} args.national_id_type\r\n * @returns\r\n */\r\nexport const getPoliciesByInsuredID = async ({ national_id, national_id_type }) => {\r\n\tlet endpoint = \"/getPoliciesByInsuredID\";\r\n\tconst reqType = \"get\";\r\n\tlet response = await checkKey({\r\n\t\tendpoint,\r\n\t\tpayload: {\r\n\t\t\tparams: { national_id, national_id_type, active_only: true },\r\n\t\t},\r\n\t\t\r\n\t\treqType,\r\n\t});\r\n\treturn response;\r\n};\r\n\r\nexport const setToCancel = async ({ policy_id, effective_date, is_manual_premium, reason, transaction_premium }) => {\r\n\tlet endpoint = \"/setToCancel\";\r\n\r\n\tlet response = await checkKey({\r\n\t\tendpoint,\r\n\t\t\r\n\t\tpayload: {\r\n\t\t\tpolicy_id,\r\n\t\t\teffective_date,\r\n\t\t\tis_manual_premium,\r\n\t\t\treason,\r\n\t\t\ttransaction_premium\r\n\t\t},\r\n\t});\r\n\r\n\treturn response;\r\n};\r\n\r\nexport const cancelPolicy = async ({ policy_id, effective_date, authorize_transaction, trans_wording,\r\n\tis_manual_premium, reason, external_reference_number, transaction_premium }) => {\r\n\tlet endpoint = \"/cancelPolicy\";\r\n\r\n\tlet response = await checkKey({\r\n\t\tendpoint,\r\n\t\t\r\n\t\tpayload: {\r\n\t\t\tpolicy_id,\r\n\t\t\teffective_date,\r\n\t\t\tis_manual_premium,\r\n\t\t\treason,\r\n\t\t\ttransaction_premium,\r\n\t\t\tauthorize_transaction,\r\n\t\t\ttrans_wording,\r\n\t\t\texternal_reference_number,\r\n\t\t},\r\n\t});\r\n\r\n\treturn response;\r\n};\r\n\r\nexport const validateRegNo = async (registration_number, chassisNo) => {\r\n\tlet payload ={registration_number, chassisNo}\r\n\tlet response = {};\r\n\tconst endpoint = `/misc/validate/regno`;\r\n\r\n\tresponse = await checkExpToken({ endpoint, payload});\r\n\treturn response;\r\n};\r\n","import { checkExpToken, checkKey } from \"helpers/auth\";\r\n\r\nexport const getPolicy = async ( payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = \"/getPolicyForClaim\";\r\n\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\nexport const getClaimsHandler = async ( payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = \"/getUsers\";\r\n\r\n\tresponse = await checkKey({ endpoint, payload, reqType: \"get\" });\r\n\treturn response;\r\n};\r\n\r\nexport const updateClaim = async ( payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = `/claimUpdate`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\nexport const getClaimLossResult = async ( payload) => {\r\n\tconst endpoint = `/getClaimLossResult`;\r\n\tlet response = {};\r\n\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\nexport const getSourceTypes = async ( payload) => {\r\n\tconst endpoint = \"/getSources\";\r\n\tlet response = {};\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\nexport const getClaimLossCauses = async ( payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = `/getClaimLossCauses`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\nexport const getClaim = async ( payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = `/searchClaim`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\nexport const getPolicyClaim = async (claim_id) => {\r\n\tlet payload = {params: { claimID: claim_id}\r\n};\r\n\tlet response = {};\r\n\tconst endpoint = `/getClaim`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload, reqType: \"get\" });\r\n\treturn response;\r\n};\r\n\r\nexport const getClaims = async ( payload) => {\r\n\tlet response = {};\r\n\t// const token = `${token1}&policy_id=${payload}`;\r\n\r\n\t// encodeURIComponent(globalId)\r\n\tconst endpoint = `/getClaims`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\nexport const submitFile = async ( payload, callback = () => {}) => {\r\n\tlet response = {};\r\n\tconst endpoint = `/submitFile`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload }, { onUploadProgress: callback });\r\n\treturn response;\r\n};\r\n\r\nexport const linkFile = async ( payload, callback = () => {}) => {\r\n\tlet response = {};\r\n\tconst endpoint = `/registryFileSubmit`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload }, { onUploadProgress: callback });\r\n\treturn response;\r\n};\r\n\r\nexport const getRegistryTypes = async ( payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = \"/getRegistryTypes\";\r\n\tresponse = await checkKey({ endpoint, payload, reqType: \"get\" });\r\n\treturn response;\r\n};\r\n\r\nexport const addParticipant = async ( payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = `/addParticipant`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\nexport const submitClaim = async ( payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = `/submitClaim`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\nexport const getParticipantType = async () => {\r\n\tlet response = {};\r\n\tconst endpoint = `/getParticipantType`;\r\n\r\n\tresponse = await checkKey({ endpoint });\r\n\treturn response;\r\n};\r\nexport const getAllClaimStatus = async (payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = `/claims/all/status`;\r\n\r\n\tresponse = await checkExpToken({ endpoint, payload});\r\n\treturn response;\r\n};\r\n\r\nexport const getClaimStatus = async (claim_status) => {\r\n\tlet payload ={claim_status: claim_status}\r\n\tlet response = {};\r\n\tconst endpoint = `/claims/status`;\r\n\r\n\tresponse = await checkExpToken({ endpoint, payload});\r\n\treturn response;\r\n};\r\n\r\nexport const getClaimParticipant = async ( participant_id ) => {\r\n\tconst payload = {\r\n params: {\r\n participant_id: participant_id,\r\n },\r\n };\r\n\tlet response = {};\r\n\tconst endpoint = \"/getClaimParticipant\";\r\n\tresponse = await checkKey({ endpoint, payload, reqType: \"get\" });\r\n\treturn response;\r\n};","import { checkKey } from \"helpers/auth\";\r\n\r\nexport const getRegistryReportMethods = async () => {\r\n\tlet data = {};\r\n\r\n\tconst endpoint = `/getRegistryReportMethods`;\r\n\tconst payload = {\r\n\t\tparam: {\r\n\t\t},\r\n\t};\r\n\tconst reqType = `get`;\r\n\r\n\tdata = checkKey({ endpoint, payload, reqType });\r\n\r\n\treturn data;\r\n};\r\n\r\nexport const getRegistrySourceTypes = async () => {\r\n\tlet data = {};\r\n\r\n\tconst endpoint = `/getRegistrySourceTypes`;\r\n\tconst payload = {\r\n\t\tparam: {\r\n\t\t},\r\n\t};\r\n\tconst reqType = `get`;\r\n\r\n\tdata = checkKey({ endpoint, payload, reqType });\r\n\r\n\treturn data;\r\n};\r\n\r\nexport const getRegistrySources = async ( source_type, branch) => {\r\n\tlet data = {};\r\n\r\n\tconst endpoint = `/getRegistrySources`;\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tsource_type: source_type,\r\n\t\t\tbranch: branch,\r\n\t\t},\r\n\t};\r\n\tconst reqType = `get`;\r\n\r\n\tdata = checkKey({ endpoint, payload, reqType });\r\n\r\n\treturn data;\r\n};\r\n\r\nexport const getBranches = async () => {\r\n\tlet data = {};\r\n\r\n\tconst endpoint = `​/getBranches`;\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t},\r\n\t};\r\n\tconst reqType = `get`;\r\n\r\n\tdata = checkKey({ endpoint, payload, reqType });\r\n\r\n\treturn data;\r\n};\r\n\r\nexport const registrySubmit = async ( payload) => {\r\n\tlet data = {};\r\n\r\n\tconst endpoint = `/registrySubmit`;\r\n\r\n\tdata = await checkKey({ endpoint, payload });\r\n\r\n\treturn data;\r\n};\r\n","import { format, /* isBefore, isEqual, add, subDays,*/ parseJSON } from \"date-fns\";\r\nimport { getServerTime } from \"helpers/time\";\r\nimport { checkBadKey, checkExpToken, checkKey } from \"../auth\";\r\nimport config from \"../config\";\r\n// import axios from \"../axios\";\r\n// import { formatMoney } from \"./extras\";\r\nimport {\r\n\tdrawReceipt,\r\n\tgetExchangeRate,\r\n\tgetPaymentPlans,\r\n\tgetPolicy,\r\n\tgetPolicyPaymentPlan,\r\n\tgetPolicyProfExt,\r\n\tgetPolicyRisks,\r\n\tgetStreetTypes,\r\n\tgetParishTowns,\r\n\tgetGeneralAreas,\r\n\tgetTransactionSchedule,\r\n\tgetPolicyTransactions,\r\n\tgetPolicyProfRatingCodes,\r\n\tgetPolicyByParams,\r\n\tupdatePolicyNarratives,\r\n\tnotingRegistrationNumber,\r\n\tgenPolicyModification,\r\n\tsetToCancel,\r\n\tcancelPolicy,\r\n} from \"api/dNet/Policies\";\r\nimport { globalNamePolicies } from \"api/dNet/GlobalName\";\r\nimport { renewalPremiumCalculator, submitNote, updateRenewPolicy } from \"api/dNet/Renewal\";\r\nimport { registrySubmit } from \"api/dNet/Registry\";\r\nimport { createCertificate, getCertificate, getCoverNote } from \"api/dNet/Certificate\";\r\nimport { nodeApi } from \"api/Middleware\";\r\nimport { AuthNetworkLayer } from \"helpers\";\r\nimport { BranchData } from \"components/Contact\";\r\nimport { isNotEmpty } from \"helpers/misc\";\r\nimport { getClaimsHandler } from \"api/dNet/Claims\";\r\nimport { removePaymentReminder } from \"api/dNet/PaymentReminder\";\r\n\r\nexport default class PolicyNetworkLayer {\r\n\t/**\r\n\t * Get More granular detail about a specific policy\r\n\t * @param {Number} policy_id -- the policy id we are fetching for\r\n\t \r\n\t * @param {boolean} isRenewal\r\n\t */\r\n\tstatic async getPolicy(policy_id, isRenewal) {\r\n\t\tlet policy = await getPolicy(policy_id, isRenewal);\r\n\r\n\t\treturn policy;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the policy using the policy number and license number\r\n\t * @param {String} policy_number\r\n\t * @param {String} regNo\r\n\t */\r\n\tstatic async getPolicyForUW(policy_number, regNo) {\r\n\t\tlet response = {};\r\n\t\tresponse = await getPolicyByParams({ policy_number, regNo });\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t * Get all the Policies associated with an individual\r\n\t * @param {String} global_name_id\r\n\t */\r\n\tstatic async getPolicies(global_name_id) {\r\n\t\tlet response = {};\r\n\t\tresponse = await globalNamePolicies(global_name_id);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets policies for re-engagement flow\r\n\t * @param {String} globalNameId\r\n\t */\r\n\tstatic async getReEngagementPolicies(globalNameId) {\r\n\t\tlet response = await globalNamePolicies(globalNameId);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t * Submits a confirmation note of user accepting a comprehensive agreement\r\n\t * @param {{ first_name: any; middle_name: any; last_name: any; national_id: any; } | *} user\r\n\t * @param {{ policy_prefix: any; policy_number: any; policy_id: any; } | *} policy\r\n\t * @param {any} agreement\r\n\t */\r\n\tstatic async sendComprehensiveAgreementNote(user, policy, agreement) {\r\n\t\tconst timeRequest = await getServerTime();\r\n\r\n\t\tif (!timeRequest.success) throw new Error(timeRequest.message);\r\n\t\tconst time = parseJSON(timeRequest.timestamp);\r\n\r\n\t\tconst note = `On ${format(time, \"MM/dd/yyyy\")} at ${format(time, \"h:mm a\")}, ${user.first_name} ${\r\n\t\t\tuser.middle_name\r\n\t\t} ${user.last_name} agreed to the following agreement: \\n ${agreement} `;\r\n\r\n\t\tconst payload = {\r\n\t\t\tlink_id: policy.policy_id,\r\n\t\t\tdescription: \"Comprehensive Agreed Value Addendum\",\r\n\t\t\tnotes: note,\r\n\t\t\tlink_to: \"policy\",\r\n\t\t\ttype: \"Note For File\",\r\n\t\t\talert: false,\r\n\t\t};\r\n\t\tlet response = await submitNote(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t * Submits a confirmation note of user accepting a Reduced Value agreement\r\n\t * @param {any} branch\r\n\t * @param {{ first_name: any; middle_name: any; last_name: any; national_id: any; }} user\r\n\t * @param {{ policy_prefix: any; policy_number: any; policy_id: any; }} policy\r\n\t * @param {any} agreement\r\n\t */\r\n\tstatic async sendMaintainValueAgreementNote(branch, user, policy, agreement) {\r\n\t\t// const endpoint = \"middleware/epic_mwSubmitNote\";\r\n\r\n\t\tconst time = Date.now();\r\n\r\n\t\tconst note = `On ${format(time, \"MM/dd/yyyy\")} at ${format(time, \"h:mm a\")}, ${user.first_name} ${\r\n\t\t\tuser.middle_name\r\n\t\t} ${user.last_name} agreed to the following agreement: \\n ${agreement} `;\r\n\r\n\t\t// const headers = {\r\n\t\t// \t\"x-auth-token\":\r\n\t\t// \t\"customer-id\": `${branch} ${user.national_id} ${policy.policy_prefix}-${policy.policy_number}`,\r\n\t\t// \t\"Content-Type\": \"application/json\",\r\n\t\t// };\r\n\r\n\t\tconst payload = {\r\n\t\t\tlink_id: policy.policy_id,\r\n\t\t\tdescription: \"Value Declaration Agreement\",\r\n\t\t\tnotes: note,\r\n\t\t\tlink_to: \"policy\",\r\n\t\t\ttype: \"Note For File\",\r\n\t\t\talert: false,\r\n\t\t};\r\n\r\n\t\t// let response = await axios.post(endpoint, payload, {\r\n\t\t// \theaders: headers,\r\n\t\t// });\r\n\t\tlet response = await submitNote(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {*} payload\r\n\t * @returns\r\n\t */\r\n\tstatic async globalNameSubmit(payload) {\r\n\t\tconst endpoint = `/globalNameSubmit`;\r\n\r\n\t\tlet response = {};\r\n\t\tresponse = checkKey({ endpoint, payload });\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets all risks associated with a specific policy\r\n\t * @param {number} policy_id\r\n\t */\r\n\tstatic async getPolicyRisks(policy_id, isRenewal = true) {\r\n\t\tlet risks = await getPolicyRisks(policy_id, isRenewal);\r\n\r\n\t\treturn risks;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets all transactions for the specified policy\r\n\r\n\t * @param {String} policy_id\r\n\t */\r\n\tstatic async getPolicyTransactions(policy_id) {\r\n\t\tlet transactions = await getPolicyTransactions(policy_id);\r\n\r\n\t\treturn transactions;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets list of street types\r\n\r\n\t */\r\n\tstatic async getStreetTypes() {\r\n\t\tlet streetTypes = await getStreetTypes();\r\n\r\n\t\treturn streetTypes;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets list of parishes associated with each Town\r\n\t -- the auth token for current session\r\n\t * @param {String} param\r\n\t */\r\n\tstatic async getParishTowns(param = \"Jamaica\") {\r\n\t\tlet parishTowns = await getParishTowns(param);\r\n\r\n\t\treturn parishTowns;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets list of all general areas\r\n\t -- the auth token for current session\r\n\t * @param {String} param\r\n\t */\r\n\tstatic async getGeneralAreas(param = \"Jamaica\") {\r\n\t\tlet generalAreas = await getGeneralAreas(param);\r\n\r\n\t\treturn generalAreas;\r\n\t}\r\n\r\n\t/**\r\n\t * Submits a confirmation note of user accepting a payment agreement\r\n\t \r\n\t * @param {Object} policy\r\n\t * @param {Object} user\r\n\t * @param {Object} premium\r\n\t */\r\n\tstatic async sendPaymentAgreementNote(policy, user, premium) {\r\n\t\t// const endpoint = \"middleware/epic_mwSubmitNote\";\r\n\r\n\t\t// const headers = {\r\n\t\t// \t\"x-auth-token\":\r\n\t\t// \t\"customer-id\": `${branch} ${user.national_id} ${policy.policy_prefix}-${policy.policy_number}`,\r\n\t\t// \t\"Content-Type\": \"application/json\",\r\n\t\t// };\r\n\r\n\t\tconst twoPartAgreement = `This Agreement is made between ${user.first_name} ${user.last_name} (hereinafter called the “Insured”) and Advantage General\r\n\t\t\tInsurance Company Limited (hereinafter called the “Company”) on the following binding terms and conditions:\r\n\r\n\t\t\t1. The premium payable for three (3) months’ cover shall be fifty percent (50%) of the Company’s decided annual premium\r\n\t\t\tor Ten Thousand Dollars ($10,000.00) whichever is greater, plus a non-refundable service charge of ($0) plus General\r\n\t\t\tConsumption Tax (the “Premium”). Upon payment of the Premium, the Company will issue a certificate of insurance\r\n\t\t\t(representing cover) which will expire no later than three (3) calendar months from the date of payment.\r\n\r\n\t\t\t2. The Company will offer insurance coverage for the period of nine (9) months immediately succeeding a three (3) months’\r\n\t\t\tcover upon receipt of a payment of the Premium and issue a certificate representing same, provided only:\r\n\t\t\ta. Payment must be receipted on or before the expiration of the three (3) months cover; and\r\n\t\t\tb. The Company MAY grant an adjusted coverage and issue a certificate of insurance which shall be effective only\r\n\t\t\tfrom the date of payment to the original annual policy period end date.\r\n\r\n\t\t\t3. If any cheque issued by the Insured to the Company is dishonoured or returned by the bank for any reason whatsoever,\r\n\t\t\tthe policy of insurance shall be cancelled forthwith with effect from the date of inception of the period for which the\r\n\t\t\tcheque issued and the Insured shall be obliged by law to surrender the original certificate of insurance failing which he\r\n\t\t\tshall be liable on summary conviction to an offence.\r\n\r\n\t\t\t4. The Company shall not be liable for any incident giving rise to a claim during any period governed by this Agreement, in\r\n\t\t\twhich the Premium has not been paid.\r\n\r\n\t\t\t5. There shall be no suspension of insurance coverage during the first three (3) month period of insurance governed by this\r\n\t\t\tAgreement.\r\n\r\n\t\t\t6. The Company will accommodate cancellation of the policy by the Insured during any period and the Insured shall be\r\n\t\t\tentitled to a refund of premium, less any time on cover charges for the period during which the policy has been in force,\r\n\t\t\tcomputed on the basis of the Company’s Short Period Rates provided that there have been no claims during the policy\r\n\t\t\tperiod.\r\n\r\n\t\t\t7. The Insured hereby declares that s/he (includes more than one insured) has read this Agreement and understands it or has\r\n\t\t\trequested that the Agreement be read to her/him and fully understands its contents and the implications arising\r\n\t\t\ttherefrom.`;\r\n\r\n\t\tlet nonTwoPartAgreement =\r\n\t\t\t\"The following terms and conditions are supplementary to the Proposal. The insured hereby agrees to pay to\\n\";\r\n\t\tnonTwoPartAgreement =\r\n\t\t\tnonTwoPartAgreement +\r\n\t\t\t\"Advantage General Insurance Company Limited the premiums stated on the policy or policies described herein,\\n\";\r\n\t\tnonTwoPartAgreement = nonTwoPartAgreement + \"in accordance with the Payment Terms hereto and PROVIDED THAT:\\n\";\r\n\t\tnonTwoPartAgreement =\r\n\t\t\tnonTwoPartAgreement +\r\n\t\t\t\"For value received, I hereby agree to pay the payments due as per the herein agreed Payment Terms, inclusive of all taxes, fees and any costs incurred, on the dates and in the amounts herein stated, subject otherwise to the terms, exclusions, provisions, and conditions of the Policy.\\n\";\r\n\t\tnonTwoPartAgreement =\r\n\t\t\tnonTwoPartAgreement +\r\n\t\t\t\"In the event of any failure by me to make payments as per the Payment Terms herein agreed, Advantage General Insurance Company Limited is hereby authorized to cancel the Policy with immediate effect, without notice and without refund of any premiums paid.\\n\";\r\n\t\tnonTwoPartAgreement =\r\n\t\t\tnonTwoPartAgreement +\r\n\t\t\t\"In the event of a claim being made during the currency of the policy, the total amount payable will immediately become due and payable in full.\\n.\";\r\n\t\tnonTwoPartAgreement =\r\n\t\t\tnonTwoPartAgreement +\r\n\t\t\t\"Should any payment be dishonoured by the bank for any reason whatsoever, Advantage General Insurance Company Limited reserves the right to immediately terminate the policy in accordance with the conditions relating thereto.\\n\";\r\n\r\n\t\tconst payload = {\r\n\t\t\tlink_to: \"policy\",\r\n\t\t\tlink_id: policy.policy_id,\r\n\t\t\tdescription: \"Premium Payment Agreement\",\r\n\t\t\tnotes: premium.name.includes(\"2:50 Payment Plan\") ? twoPartAgreement : nonTwoPartAgreement,\r\n\t\t\ttype: \"Note For File\",\r\n\t\t};\r\n\r\n\t\tlet response = await submitNote(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {Object} user\r\n\t * @param {Object} policy\r\n\t * @param {String} agreement\r\n\t */\r\n\tstatic async sendValueDeclarationNote(user, policy, agreement) {\r\n\t\tconst timeRequest = await getServerTime();\r\n\r\n\t\tif (!timeRequest.success) throw new Error(timeRequest.message);\r\n\t\tconst time = parseJSON(timeRequest.timestamp);\r\n\r\n\t\tconst note = `On ${format(time, \"MM/dd/yyyy\")} at ${format(time, \"h:mm a\")}, ${user.first_name} ${\r\n\t\t\tuser.middle_name\r\n\t\t} ${user.last_name} agreed to the following agreement: \\n ${agreement} `;\r\n\r\n\t\t// const headers = {\r\n\t\t// \t\"x-auth-token\":\r\n\t\t// \t\"customer-id\": `${branch} ${user.national_id} ${policy.policy_prefix}-${policy.policy_number}`,\r\n\t\t// \t\"Content-Type\": \"application/json\",\r\n\t\t// };\r\n\r\n\t\tconst payload = {\r\n\t\t\tlink_id: policy.policy_id,\r\n\t\t\tdescription: \"Value Declaration Note\",\r\n\t\t\tnotes: note,\r\n\t\t\tlink_to: \"policy\",\r\n\t\t\ttype: \"Note For File\",\r\n\t\t\talert: false,\r\n\t\t};\r\n\r\n\t\treturn submitNote(payload);\r\n\t\t// return null;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {*} payload\r\n\t */\r\n\tstatic async storeRenewalQuestions(payload) {\r\n\t\tlet response = await submitNote(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t \r\n\t * @param {*} uid\r\n\t * @param {*} customer\r\n\t * @param {*} email\r\n\t * @param {*} questions\r\n\t */\r\n\tstatic async sendQuestionsEmail(uid, customer, email, questions) {\r\n\t\tconst endpoint = \"email/questions\";\r\n\r\n\t\tconst headers = {\r\n\t\t\t\"customer-id\": uid,\r\n\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t};\r\n\r\n\t\tconst payload = {\r\n\t\t\tcustomer,\r\n\t\t\tquestions,\r\n\t\t\tbranchEmail: email,\r\n\t\t};\r\n\r\n\t\treturn checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\r\n\tstatic async sendDirectEmail(uid, first_name, last_name, email, phone, trn) {\r\n\t\tconst endpoint = \"email/direct\";\r\n\r\n\t\tconst headers = {\r\n\t\t\t\"customer-id\": uid,\r\n\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t};\r\n\r\n\t\tconst payload = {\r\n\t\t\tfirst_name,\r\n\t\t\tlast_name,\r\n\t\t\temail,\r\n\t\t\tphone,\r\n\t\t\ttrn,\r\n\t\t};\r\n\r\n\t\treturn checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\r\n\t/**\r\n\t * Sends a registry email\r\n\t \r\n\t * @param {*} branch\r\n\t * @param {*} policy\r\n\t * @param {*} user\r\n\t * @param {*} breakdown\r\n\t * @param {String} notes\r\n\t * @param {String} received_from\r\n\t * @param {String} claim_id\r\n\t * @param {number} policy_number\r\n\t */\r\n\tstatic async sendRegistryEmail(\r\n\t\tbranch,\r\n\t\tpolicy,\r\n\t\tuser,\r\n\t\treceived_from = \"\",\r\n\t\tbreakdown,\r\n\t\tnotes,\r\n\t\tclaim_id,\r\n\t\tpolicy_number = 0,\r\n\t\tdescription = \"Claim documents from Insured\",\r\n\t\tregistry_type = \"To Report Claim\",\r\n\t\trelating_to = \"Claim\",\r\n\t\ttype_of_task = \"To Report Claim\",\r\n\t\tdestination = \"Claims\",\r\n\t\tassigned_to_id = null\r\n\t) {\r\n\t\tif (relating_to === \"Claim\" && !isNotEmpty(assigned_to_id)) {\r\n\t\t\tconst payload = {\r\n\t\t\t\tactive_only: false,\r\n\t\t\t\tuser_department: \"Claims\",\r\n\t\t\t};\r\n\t\t\tlet response = await getClaimsHandler(payload);\r\n\t\t\tif (response.success) {\r\n\t\t\t\tconst { users } = response;\r\n\t\t\t\tconst user = users.find(u => u.user_name.includes(\"Online Claims Registry\"));\r\n\t\t\t\tassigned_to_id = user.user_id;\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst payload = {\r\n\t\t\tassociated_premium: breakdown.premium,\r\n\t\t\tbranch: branch,\r\n\t\t\tclaim_id,\r\n\t\t\tpolicy_number: `${policy.policy_number ? policy.policy_number : policy_number}`,\r\n\t\t\tclient_global_name_id: user.global_name_id,\r\n\t\t\tdate_due: format(new Date(), \"MM/dd/yyyy\"),\r\n\t\t\tdate_received: format(new Date(), \"MM/dd/yyyy\"),\r\n\t\t\tdestination,\r\n\t\t\tdocument_reference_number: !isNotEmpty(received_from)\r\n\t\t\t\t? user.first_name || user.last_name\r\n\t\t\t\t\t? `${user.last_name}${user.first_name?.charAt(0)}`\r\n\t\t\t\t\t: `${user.company_name}`\r\n\t\t\t\t: received_from,\r\n\t\t\temail: \"\",\r\n\t\t\tinstructions: \"\",\r\n\t\t\t//`Premium + Service Charge + GCT = Total Premium↵${breakdown.premium} + 2000.00 + ${breakdown.GCT} = ${breakdown.totalDue}↵↵TRN: ${user.national_id}\r\n\t\t\tnotes,\r\n\t\t\tpolicy_id: policy.policy_id,\r\n\t\t\tquotation_id: \"\",\r\n\t\t\treceived_from: !isNotEmpty(received_from)\r\n\t\t\t\t? user.first_name || user.company_name\r\n\t\t\t\t\t? `${user.first_name} ${user.middle_name} ${user.last_name}`\r\n\t\t\t\t\t: `${user.company_name}`\r\n\t\t\t\t: received_from,\r\n\t\t\tregistry_id: \"\",\r\n\t\t\tregistry_type,\r\n\t\t\trelating_to,\r\n\t\t\treport_method: \"WebSite\",\r\n\t\t\tsource_id: \"\",\r\n\t\t\ttype_of_task,\r\n\t\t\tassigned_by: \"Middleware\",\r\n\t\t\tsource_type: \"Direct\",\r\n\t\t\tregistry_type_description: description,\r\n\t\t\tassigned_to_id,\r\n\t\t};\r\n\r\n\t\tlet response = await registrySubmit(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t * Sends a registry email for cash payment\r\n\t \r\n\t * @param {*} branch\r\n\t * @param {*} policy\r\n\t * @param {*} user\r\n\t * @param {*} breakdown\r\n\t * @param {String} notes\r\n\t * @param {String} received_from\r\n\t * @param {number} claim_id\r\n\t * @param {number} policy_number\r\n\t * @param {String} instructions\r\n\t */\r\n\tstatic async sendRegistryEmailForCashPayment(\r\n\t\tbranch,\r\n\t\tpolicy,\r\n\t\tuser,\r\n\t\treceived_from = \"\",\r\n\t\tbreakdown,\r\n\t\tnotes,\r\n\t\tclaim_id,\r\n\t\tpolicy_number = 0,\r\n\t\tdescription = \"Claim documents from Insured\",\r\n\t\tregistry_type = \"To Report Claim\",\r\n\t\trelating_to = \"Claim\",\r\n\t\ttype_of_task = \"To Report Claim\",\r\n\t\tdestination = \"Claims\",\r\n\t\tinstructions\r\n\t) {\r\n\t\tconst payload = {\r\n\t\t\tassign_to_id: \"\",\r\n\t\t\tassociated_premium: breakdown.premium,\r\n\t\t\tbranch: branch,\r\n\t\t\tclaim_id,\r\n\t\t\tpolicy_number: `${policy.policy_number ? policy.policy_number : policy_number}`,\r\n\t\t\tclient_global_name_id: user.global_name_id,\r\n\t\t\tdate_due: format(new Date(), \"MM/dd/yyyy\"),\r\n\t\t\tdate_received: format(new Date(), \"MM/dd/yyyy\"),\r\n\t\t\tdestination,\r\n\t\t\tdocument_reference_number: !isNotEmpty(received_from)\r\n\t\t\t\t? user.first_name || user.last_name\r\n\t\t\t\t\t? `${user.last_name}${user.first_name?.charAt(0)}`\r\n\t\t\t\t\t: `${user.company_name}`\r\n\t\t\t\t: received_from,\r\n\t\t\temail: \"\",\r\n\t\t\tinstructions,\r\n\t\t\t//`Premium + Service Charge + GCT = Total Premium↵${breakdown.premium} + 2000.00 + ${breakdown.GCT} = ${breakdown.totalDue}↵↵TRN: ${user.national_id}\r\n\t\t\tnotes,\r\n\t\t\tpolicy_id: policy.policy_id,\r\n\t\t\tquotation_id: \"\",\r\n\t\t\treceived_from: !isNotEmpty(received_from)\r\n\t\t\t\t? user.first_name || user.last_name\r\n\t\t\t\t\t? `${user.first_name} ${user.middle_name} ${user.last_name}`\r\n\t\t\t\t\t: `${user.company_name}`\r\n\t\t\t\t: received_from,\r\n\t\t\tregistry_id: \"\",\r\n\t\t\tregistry_type,\r\n\t\t\trelating_to,\r\n\t\t\treport_method: \"WebSite\",\r\n\t\t\tsource_id: \"\",\r\n\t\t\ttype_of_task,\r\n\t\t\tassigned_by: \"Middleware\",\r\n\t\t\tsource_type: \"Direct\",\r\n\t\t\tregistry_type_description: description,\r\n\t\t};\r\n\r\n\t\tlet response = await registrySubmit(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\tstatic sendCashRegistry(branch, policy, user, breakdown, instructions, id, description) {\r\n\t\treturn this.sendRegistryEmailForCashPayment(\r\n\t\t\tbranch,\r\n\t\t\tpolicy,\r\n\t\t\tuser,\r\n\t\t\t\"\",\r\n\t\t\tbreakdown,\r\n\t\t\t\"\",\r\n\t\t\tid,\r\n\t\t\tpolicy.policy_number,\r\n\t\t\tdescription,\r\n\t\t\t\"Pay Premium\",\r\n\t\t\t\"Policy\",\r\n\t\t\t\"Pay Premium\",\r\n\t\t\t\"Cashier\",\r\n\t\t\tinstructions\r\n\t\t);\r\n\t}\r\n\r\n\tstatic async createRegistry(\r\n\t\tassign_to_id = \"\",\r\n\t\tassociated_premium,\r\n\t\tbranch,\r\n\t\tclaim_id,\r\n\t\tclient_global_name_id,\r\n\t\tdestination,\r\n\t\t//`Premium + Service Charge + GCT = Total Premium↵${breakdown.premium} + 2000.00 + ${breakdown.GCT} = ${breakdown.totalDue}↵↵TRN: ${user.national_id}\r\n\t\tnotes,\r\n\t\tregistry_type = \"To Report Claim\",\r\n\t\ttype_of_task = \"To Report Claim\",\r\n\t\tregistry_type_description = \"To report Claim\",\r\n\r\n\t\tpolicy,\r\n\t\tuser,\r\n\t\tbreakdown\r\n\t) {}\r\n\r\n\tstatic async payBalance(\r\n\t\tuid,\r\n\t\tuser,\r\n\t\ttotalDue,\r\n\t\tbranchEmail,\r\n\t\tcardNumber,\r\n\t\tcvv,\r\n\t\texpiry,\r\n\t\tcardType = \"Visa\",\r\n\t\tcurrency = \"JMD\",\r\n\t\tcardCountry = \"JM\"\r\n\t) {\r\n\t\tconst endpoint = \"transactions\";\r\n\r\n\t\tconst payload = {\r\n\t\t\tbranchEmail,\r\n\t\t\tcardAmount: totalDue,\r\n\t\t\tcardCountry,\r\n\t\t\tcardExp: expiry,\r\n\t\t\tcardNumber,\r\n\t\t\tcardType,\r\n\t\t\tcurrency,\r\n\t\t\tcvv,\r\n\t\t\tcardName: `${user.last_name}, ${user.first_name} ${user.middle_name}`,\r\n\t\t};\r\n\r\n\t\tconst headers = {\r\n\t\t\t\"customer-id\": uid,\r\n\t\t};\r\n\r\n\t\treturn checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\r\n\t/**\r\n\t \r\n\t * @param {{ risks?: { manual_rates: any; }[]; policy_prefix?: any; policy_number?: any; limits: *[]; extensions: *[]; policy_id?: any; }} policy\r\n\t * @param {string | any[]} risks\r\n\t */\r\n\tstatic async premiumCalculator(policy, risks, planIds) {\r\n\t\t// const endpoint = \"middleware/epic_mwRenewalPremiumCalculator\";\r\n\t\t/** Headers */\r\n\t\t// const headers = {\r\n\t\t// \t\"x-auth-token\":\r\n\t\t// \t\"customer-id\": `${branch} ${user.national_id} ${policy.policy_prefix}-${policy.policy_number}`,\r\n\t\t// };\r\n\r\n\t\t/** Strip the fields from policy and risks */\r\n\t\tlet nRisks = [];\r\n\r\n\t\tfor (let i = 0; i < risks.length; i++) {\r\n\t\t\tnRisks.push({\r\n\t\t\t\trisk_id: risks[i].risk_id,\r\n\t\t\t\tsum_insured: risks[i].sum_insured,\r\n\t\t\t\trates: risks[i].manual_rates,\r\n\t\t\t\t// takes the rate handling for calculation\r\n\t\t\t\trate_handling: risks[i].rate_handling,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet nlimits = policy.limits.map(limit => ({\r\n\t\t\tlimit_code: limit.limit_code,\r\n\t\t\tlimit_amount: limit.limit_amount,\r\n\t\t}));\r\n\r\n\t\tlet nExtensions = policy.extensions.map(extension => ({\r\n\t\t\textension_code: extension.extension_code,\r\n\t\t\tlimit_amount: extension.limit_amount,\r\n\t\t}));\r\n\t\tlet payload = {\r\n\t\t\trequestBody: {\r\n\t\t\t\tpolicy: {\r\n\t\t\t\t\tpolicy_id: policy.policy_id,\r\n\t\t\t\t\tpayment_plan_ids: planIds,\r\n\t\t\t\t\tlimits: nlimits,\r\n\t\t\t\t\textensions: nExtensions,\r\n\t\t\t\t\tmanual_extensions: nExtensions,\r\n\t\t\t\t},\r\n\t\t\t\trisks: nRisks,\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tlet response = await renewalPremiumCalculator(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t \r\n\t * @param {*} policyPrefix\r\n\t */\r\n\tstatic async getPolicyProfileExt(policyPrefix) {\r\n\t\treturn getPolicyProfExt(policyPrefix);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t \r\n\t * @param {*} policy_id\r\n\t */\r\n\tstatic async getPolicyPaymentPlan(policy_id) {\r\n\t\treturn getPolicyPaymentPlan(policy_id);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t \r\n\t */\r\n\tstatic async getPaymentPlans(currency, policyPrefix) {\r\n\t\tlet plans = await getPaymentPlans(currency, policyPrefix);\r\n\r\n\t\treturn plans;\r\n\t}\r\n\r\n\t//policy mod\r\n\tstatic async batchPolicyModification({\r\n\t\tpolicy,\r\n\t\tstartDate = \"\",\r\n\t\tendDate = \"\",\r\n\t\ttrans_wording,\r\n\t\trisks = [],\r\n\t\tbatch_actions = [],\r\n\t\tonly_calculate_premium,\r\n\t\ttransaction_premium,\r\n\t}) {\r\n\t\tlet payload = {\r\n\t\t\tauthorize_transaction: true,\r\n\t\t\tpolicy_id: policy.policy_id,\r\n\t\t\teffective_date: startDate,\r\n\t\t\tend_date: endDate,\r\n\t\t\tbatch_actions: batch_actions,\r\n\t\t\tonly_calculate_premium: only_calculate_premium,\r\n\t\t\ttrans_wordings: {\r\n\t\t\t\ttrans_wording: trans_wording,\r\n\t\t\t},\r\n\t\t\ttransaction_premium: transaction_premium,\r\n\r\n\t\t\tis_tax_exempt: false,\r\n\t\t};\r\n\r\n\t\tconsole.log(payload);\r\n\r\n\t\t// relay to dotNet\r\n\t\tlet response = genPolicyModification(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t//policy mod\r\n\tstatic async generalPolicyMod({\r\n\t\tpolicy,\r\n\t\tstartDate = \"\",\r\n\t\tendDate = \"\",\r\n\t\ttrans_wording,\r\n\t\trisks = [],\r\n\t\tonly_calculate_premium,\r\n\t\ttransaction_premium,\r\n\t}) {\r\n\t\tlet global_names = [...policy.global_names];\r\n\t\tlet _policy = this.cleanPolicyForGeneralMod(policy);\r\n\t\tlet _risks = this.cleanRisksForGeneralMod(risks);\r\n\r\n\t\tlet nlimits = policy.limits.map(limit => ({\r\n\t\t\tlimit_code: limit.limit_code,\r\n\t\t\tlimit_amount: limit.limit_amount,\r\n\t\t}));\r\n\r\n\t\tlet nExtensions = policy.extensions.map(extension => ({\r\n\t\t\textension_code: extension.extension_code,\r\n\t\t\tlimit_amount: extension.limit_amount,\r\n\t\t}));\r\n\r\n\t\tconst motorPolicyPayload = () => {\r\n\t\t\tfor (let i = 0; i < global_names.length; i += 1) {\r\n\t\t\t\tglobal_names[i] = { ...global_names[i] };\r\n\t\t\t\tif (global_names[i]) {\r\n\t\t\t\t\tdelete global_names[i].poca;\r\n\t\t\t\t\tdelete global_names[i].locations;\r\n\t\t\t\t\tdelete global_names[i].email_address;\r\n\t\t\t\t\tdelete global_names[i].phone_numbers;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet payload = {\r\n\t\t\t\tauthorize_transaction: true,\r\n\t\t\t\tpolicy_id: policy.policy_id,\r\n\t\t\t\teffective_date: startDate,\r\n\t\t\t\tend_date: endDate,\r\n\t\t\t\tpayment_plan_id: policy.payment_plan,\r\n\t\t\t\taction: \"general_modification\",\r\n\t\t\t\tonly_calculate_premium: only_calculate_premium,\r\n\t\t\t\ttrans_wordings: {\r\n\t\t\t\t\ttrans_wording: trans_wording,\r\n\t\t\t\t},\r\n\t\t\t\ttransaction_premium: transaction_premium,\r\n\t\t\t\tparameters: {\r\n\t\t\t\t\tpolicy: {\r\n\t\t\t\t\t\t..._policy,\r\n\t\t\t\t\t\tcountry: _policy.country === \"\" ? \"Jamaica\" : _policy.country,\r\n\t\t\t\t\t\tmanual_extensions: nExtensions,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tglobal_names: global_names,\r\n\t\t\t\t\trisks: _risks,\r\n\t\t\t\t},\r\n\r\n\t\t\t\tis_tax_exempt: false,\r\n\t\t\t};\r\n\r\n\t\t\treturn payload;\r\n\t\t};\r\n\r\n\t\tlet payload;\r\n\r\n\t\tpayload = motorPolicyPayload();\r\n\r\n\t\t// relay to dotNet\r\n\t\tlet response = genPolicyModification(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\tstatic async renewAndUpdatePolicy(\r\n\t\tpolicy,\r\n\t\tpaymentPlanId,\r\n\t\tcodes,\r\n\t\tcreateCertificate,\r\n\t\tcreateCoverNote,\r\n\t\teffectiveCover,\r\n\t\thomePolicy,\r\n\t\tstartDate = \"\",\r\n\t\tendDate = \"\",\r\n\t\trisks = [],\r\n\t\tuser\r\n\t) {\r\n\t\tlet global_names = [...policy.global_names];\r\n\r\n\t\tlet _policy = this.cleanPolicyForRenewal(policy);\r\n\t\tlet _risks = this.cleanRisksForRenewal(risks);\r\n\r\n\t\tconst homePolicyPayload = () => {\r\n\t\t\t//let _policy = { ...policy };\r\n\t\t\tfor (let i = 0; i < codes.length; i++) {\r\n\t\t\t\tfor (let j = 0; j < _risks[i].manual_rates.length; j++) {\r\n\t\t\t\t\tif (codes[i].code === _risks[j].manual_rates[j].code) {\r\n\t\t\t\t\t\t_risks[j].manual_rates.splice(j, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < global_names.length; i += 1) {\r\n\t\t\t\tglobal_names[i] = { ...global_names[i] };\r\n\t\t\t\tif (global_names[i]) {\r\n\t\t\t\t\tdelete global_names[i].poca;\r\n\t\t\t\t\tdelete global_names[i].locations;\r\n\t\t\t\t\tdelete global_names[i].email_address;\r\n\t\t\t\t\tdelete global_names[i].phone_numbers;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tauthorize_transaction: true,\r\n\t\t\t\tpolicy: {\r\n\t\t\t\t\t..._policy,\r\n\t\t\t\t\tsource_name: \"Direct\", // hardcoded based on legacy\r\n\t\t\t\t\tend_date: endDate,\r\n\t\t\t\t\tstart_date: format(new Date(startDate), \"MM/dd/yyyy H:mm:ss\"),\r\n\t\t\t\t\tinsureds: _policy.insureds,\r\n\t\t\t\t\tpayment_plan_id: paymentPlanId,\r\n\t\t\t\t},\r\n\t\t\t\tglobal_names: global_names,\r\n\t\t\t\trisks: _risks,\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\t//const data = homePolicyPayload(); // only homePolicy can be generated for re-engagement flow it seems by the legacy application\r\n\r\n\t\tconst motorPolicyPayload = () => {\r\n\t\t\t//let _policy = { ...policy, global_names };\r\n\t\t\tfor (let i = 0; i < global_names.length; i += 1) {\r\n\t\t\t\tglobal_names[i] = { ...global_names[i] };\r\n\t\t\t\tif (global_names[i]) {\r\n\t\t\t\t\tdelete global_names[i].poca;\r\n\t\t\t\t\tdelete global_names[i].locations;\r\n\t\t\t\t\tdelete global_names[i].email_address;\r\n\t\t\t\t\tdelete global_names[i].phone_numbers;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// for (let i = 0; i < codes.length; i++) {\r\n\t\t\t// \tfor (let j = 0; j < _risks[0].manual_rates.length; j++) {\r\n\t\t\t// \t\tif (codes[i].code === _risks[0].manual_rates[j].code) {\r\n\t\t\t// \t\t\t_risks[0].manual_rates.splice(j, 1);\r\n\t\t\t// \t\t}\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\r\n\t\t\tfor (let i = 0; i < _risks.length; i += 1) {\r\n\t\t\t\t_risks[i] = { ..._risks[i] };\r\n\t\t\t\tif (risks[i].authorized_driver_wording) {\r\n\t\t\t\t\tdelete _risks[i].authorized_driver_wording;\r\n\t\t\t\t\t_risks[i].sum_insured = _risks[i].renewal_sum_insured;\r\n\t\t\t\t\t_risks[i].year_for_rating = _risks[i].year;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tdelete _policy.extensions;\r\n\t\t\treturn {\r\n\t\t\t\tauthorize_transaction: true,\r\n\t\t\t\tcreate_certificate: createCertificate,\r\n\t\t\t\tcreate_cover_note: createCoverNote,\r\n\t\t\t\tcover_note_details: {\r\n\t\t\t\t\teffective_date: startDate,\r\n\t\t\t\t\tdays_effective: effectiveCover,\r\n\t\t\t\t\tmanual_numbers: risks.map(risk => ({\r\n\t\t\t\t\t\trisk_id: risk.risk_id,\r\n\t\t\t\t\t\trisk_external_id: \"\",\r\n\t\t\t\t\t\tmanual_number: 11111121559,\r\n\t\t\t\t\t})),\r\n\t\t\t\t\t/* {\r\n\t\t\t\t\t\t\trisk_id: risks[0].risk_id,\r\n\t\t\t\t\t\t\trisk_external_id: \"\",\r\n\t\t\t\t\t\t\tmanual_number: 11111121559,\r\n\t\t\t\t\t\t}, */\r\n\t\t\t\t},\r\n\t\t\t\t// trans_wording: \"\",\r\n\t\t\t\tpolicy: {\r\n\t\t\t\t\t..._policy,\r\n\t\t\t\t\t// branch: config.receipt_branch_name,\r\n\t\t\t\t\tsource_name: \"Direct\", // hardcoded based on legacy\r\n\t\t\t\t\tend_date: endDate,\r\n\t\t\t\t\tstart_date: format(new Date(startDate), \"MM/dd/yyyy H:mm:ss\"),\r\n\t\t\t\t\tinsureds: _policy.insureds,\r\n\t\t\t\t\tpayment_plan_id: paymentPlanId,\r\n\t\t\t\t\t//limit_group: \"\",\r\n\t\t\t\t},\r\n\t\t\t\tglobal_names: global_names,\r\n\t\t\t\trisks: _risks,\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tlet payload;\r\n\t\tif (homePolicy) {\r\n\t\t\tpayload = homePolicyPayload();\r\n\t\t} else {\r\n\t\t\tpayload = motorPolicyPayload();\r\n\t\t}\r\n\r\n\t\t// relay to dotNet\r\n\t\tlet response = updateRenewPolicy(payload);\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\tstatic cleanPolicyForRenewal(policy) {\r\n\t\tlet _policy = JSON.parse(JSON.stringify(policy));\r\n\t\t/* let removeProp = (obj, field) => */\r\n\r\n\t\tdelete _policy.account_code;\r\n\t\tdelete _policy.account_name;\r\n\t\tdelete _policy.billing_account_code;\r\n\t\tdelete _policy.cancel_date;\r\n\t\tdelete _policy.cancel_reason_details;\r\n\t\tdelete _policy.date_for_renewal_to_start;\r\n\t\tdelete _policy.effective_cancel_date;\r\n\t\tdelete _policy.endorsements_that_apply;\r\n\t\tdelete _policy.estimated_maximum_loss;\r\n\t\tdelete _policy.fa_excess_percent;\r\n\t\tdelete _policy.fa_excess_description;\r\n\t\tdelete _policy.global_names;\r\n\t\tdelete _policy.inception_date;\r\n\t\tdelete _policy.insured;\r\n\t\tdelete _policy.insured_text;\r\n\t\tdelete _policy.is_cancelled;\r\n\t\tdelete _policy.is_cancelled;\r\n\t\tdelete _policy.is_in_renewal;\r\n\t\tdelete _policy.is_loss_of_profit_policy;\r\n\t\tdelete _policy[\"is_pre-existing_policy\"];\r\n\t\tdelete _policy.is_premium_financed;\r\n\t\tdelete _policy.missing_documents;\r\n\t\tdelete _policy.other_risk_details;\r\n\t\tdelete _policy.peril_type;\r\n\t\tdelete _policy.risks;\r\n\t\tdelete _policy.sections_that_dont_apply;\r\n\t\tdelete _policy.source_account_code;\r\n\t\tdelete _policy.source_comm_rate;\r\n\t\tdelete _policy.tax_percent;\r\n\t\tdelete _policy.territorial_limits;\r\n\t\tdelete _policy.type_of_cover;\r\n\t\tdelete _policy.warranties_do_not_apply;\r\n\r\n\t\treturn _policy;\r\n\t}\r\n\r\n\tstatic cleanRisksForRenewal(risks) {\r\n\t\tlet _risks = [...risks];\r\n\r\n\t\tfor (let a = 0; a < _risks.length; a++) {\r\n\t\t\tlet _risk = { ..._risks[a] };\r\n\r\n\t\t\tlet _address = { ..._risks[a].address };\r\n\r\n\t\t\t_address.country = \"Jamaica\";\r\n\r\n\t\t\t//TODO: look into drivers property\r\n\r\n\t\t\tdelete _risk.certificates;\r\n\t\t\tdelete _risk.cover_notes;\r\n\t\t\tdelete _risk.loadings;\r\n\t\t\tdelete _risk.mortgagee_text;\r\n\t\t\tdelete _risk.risk_description;\r\n\t\t\tdelete _risk.risk_section_number;\r\n\t\t\tdelete _risk.veh_cert_expiry_date;\r\n\t\t\tdelete _risk.veh_cnote_expiry_date;\r\n\t\t\tdelete _risk.vehicle_location;\r\n\r\n\t\t\t_risks[a] = { ..._risk, address: _address };\r\n\t\t}\r\n\r\n\t\treturn _risks;\r\n\t}\r\n\r\n\tstatic cleanPolicyForGeneralMod(policy) {\r\n\t\tlet _policy = JSON.parse(JSON.stringify(policy));\r\n\t\t/* let removeProp = (obj, field) => */\r\n\r\n\t\tdelete _policy.account_code;\r\n\t\tdelete _policy.account_name;\r\n\t\tdelete _policy.billing_account_code;\r\n\t\tdelete _policy.cancel_date;\r\n\t\tdelete _policy.cancel_reason_details;\r\n\t\tdelete _policy.date_for_renewal_to_start;\r\n\t\tdelete _policy.effective_cancel_date;\r\n\t\tdelete _policy.endorsements_that_apply;\r\n\t\tdelete _policy.estimated_maximum_loss;\r\n\t\tdelete _policy.fa_excess_percent;\r\n\t\tdelete _policy.fa_excess_description;\r\n\t\tdelete _policy.global_names;\r\n\t\tdelete _policy.inception_date;\r\n\t\tdelete _policy.insured;\r\n\t\tdelete _policy.insured_text;\r\n\t\tdelete _policy.is_cancelled;\r\n\t\tdelete _policy.is_cancelled;\r\n\t\tdelete _policy.is_in_renewal;\r\n\t\tdelete _policy.is_loss_of_profit_policy;\r\n\t\tdelete _policy[\"is_pre-existing_policy\"];\r\n\t\tdelete _policy.is_premium_financed;\r\n\t\tdelete _policy.missing_documents;\r\n\t\tdelete _policy.other_risk_details;\r\n\t\tdelete _policy.peril_type;\r\n\t\tdelete _policy.risks;\r\n\t\tdelete _policy.sections_that_dont_apply;\r\n\t\tdelete _policy.source_account_code;\r\n\t\tdelete _policy.source_comm_rate;\r\n\t\tdelete _policy.tax_percent;\r\n\t\tdelete _policy.territorial_limits;\r\n\t\tdelete _policy.type_of_cover;\r\n\t\tdelete _policy.warranties_do_not_apply;\r\n\t\tdelete _policy.payment_plan_id;\r\n\r\n\t\treturn _policy;\r\n\t}\r\n\r\n\tstatic cleanRisksForGeneralMod(risks) {\r\n\t\tlet _risks = [...risks];\r\n\r\n\t\tfor (let a = 0; a < _risks.length; a++) {\r\n\t\t\tlet _risk = { ..._risks[a] };\r\n\r\n\t\t\t//TODO: look into drivers property\r\n\r\n\t\t\tdelete _risk.certificates;\r\n\t\t\tdelete _risk.cover_notes;\r\n\t\t\tdelete _risk.mortgagee_text;\r\n\t\t\tdelete _risk.risk_description;\r\n\t\t\tdelete _risk.risk_section_number;\r\n\t\t\tdelete _risk.veh_cert_expiry_date;\r\n\t\t\tdelete _risk.veh_cnote_expiry_date;\r\n\t\t\tdelete _risk.vehicle_location;\r\n\t\t\tdelete _risk.manual_rates;\r\n\r\n\t\t\t_risks[a] = _risk;\r\n\t\t}\r\n\r\n\t\treturn _risks;\r\n\t}\r\n\t/**\r\n\t *\r\n\t \r\n\t * param {*} trn\r\n\t * @param {*} transactionId\r\n\t */\r\n\tstatic async getTransactionSchedule(transactionId) {\r\n\t\treturn getTransactionSchedule(transactionId);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t \r\n\t * @param {*} policyId\r\n\t * @param {*} riskId\r\n\t */\r\n\tstatic async getCertificate(policyId, riskId) {\r\n\t\t// Relay to dotNet connected function\r\n\t\treturn getCertificate(policyId, riskId);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t \r\n\t * @param {*} policyId\r\n\t * @param {*} riskId\r\n\t */\r\n\tstatic async createCertificate(policyId, riskId) {\r\n\t\t// Relay to dotNet connected function\r\n\t\treturn createCertificate(policyId, riskId);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t \r\n\t * @param {*} policyId\r\n\t * @param {*} riskId\r\n\t */\r\n\tstatic async getCoverNote(policyId, riskId) {\r\n\t\t// Relay to dotNet connected function\r\n\t\treturn getCoverNote(policyId, riskId);\r\n\t}\r\n\r\n\t/**\r\n\t \r\n\t * @param {{ auto_authorize: boolean; branch: string; receipt_date: string; policy_id: any; amount: number; payment_type: string; currency: string; is_tax_exempt: boolean; }[]} receiptArray\r\n\t */\r\n\tstatic async drawReceipt(receiptArray) {\r\n\t\treturn drawReceipt(receiptArray);\r\n\t}\r\n\r\n\t/*\r\n\t * @param {{last_name: string;first_name: string;}} user\r\n\t \r\n\t * @param {any} trn\r\n\t * @param {{ renewal_narratives: any; policy_number: any; }} policy\r\n\t * @param {{paymentOption: any;email: any;}} transaction\r\n\t * @param {any} renewalDetails3Month\r\n\t * @param {any} files\r\n\t * @param {string | any[]} ALLOWED_CERT_NAR_CODES\r\n\t * @param {string | number | Date} _startDate\r\n\t */\r\n\t/* \r\n\t----- UNUSED FUNCTION \r\n\tstatic async sendRenewalEmail(\r\n\t\t\r\n\t\ttrn,\r\n\t\tpolicy,\r\n\t\ttransaction,\r\n\t\trenewalDetails3Month,\r\n\t\t_startDate,\r\n\t\tfiles,\r\n\t\tALLOWED_CERT_NAR_CODES\r\n\t) {\r\n\t\tconst endpoint = \"/middleware/renewalWithDocumentsAndOutstanding\";\r\n\r\n\t\tconst headers = {\r\n\t\t\t\"x-auth-token\": \r\n\t\t\t\"customer-id\": trn,\r\n\t\t\t\"content-type\": \"application/json\",\r\n\t\t};\r\n\r\n\t\tlet half = false;\r\n\t\tlet balance = \"\";\r\n\t\tlet payment = \"\";\r\n\t\tlet extension = \"\";\r\n\t\tlet startDate = \"\";\r\n\t\tlet threemonth = renewalDetails3Month;\r\n\t\tconst paymentOption = transaction.paymentOption;\r\n\r\n\t\tif (paymentOption === \"Half Payment\") {\r\n\t\t\thalf = true;\r\n\t\t\tpayment = threemonth.total;\r\n\t\t\tbalance = threemonth.second_premium_payment;\r\n\t\t\tstartDate = format(new Date(_startDate), \"dd/MM/yyyy\");\r\n\r\n\t\t\tif (\r\n\t\t\t\tisBefore(new Date(), new Date(threemonth.renewal_premium)) ||\r\n\t\t\t\tisEqual(new Date(), new Date(threemonth.renewal_premium))\r\n\t\t\t)\r\n\t\t\t\textension = format(subDays(add(new Date(threemonth.effective_date), { months: 3 }), 1), \"dd/MM/yyyy\");\r\n\t\t\telse extension = format(subDays(add(new Date(), { months: 3 }), 1), \"dd/MM/yyyy\");\r\n\t\t}\r\n\r\n\t\t\r\n\t\tconst payload = (summary, files, outstanding, email, half, payment, balance, startDate, extension) => {\r\n\t\t\tlet out_docs = [];\r\n\r\n\t\t\tlet isCertificateSendable = !(\r\n\t\t\t\toutstanding.filter(e => {\r\n\t\t\t\t\treturn ALLOWED_CERT_NAR_CODES.includes(e.code);\r\n\t\t\t\t}).length >= 1\r\n\t\t\t);\r\n\r\n\t\t\tfor (let i = 0; i < outstanding.length; i++) {\r\n\t\t\t\tout_docs[i] = outstanding[i].description;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tfiles: files,\r\n\t\t\t\toutstandingDocs: out_docs,\r\n\t\t\t\tsummary: {\r\n\t\t\t\t\tname: policy.last_name + \", \" + policy.first_name,\r\n\t\t\t\t\tpolicyNumber: \"\" + summary.policy_number + \"\",\r\n\t\t\t\t\tcanSend: isCertificateSendable,\r\n\t\t\t\t},\r\n\r\n\t\t\t\temail: email,\r\n\r\n\t\t\t\thalf: half || false,\r\n\t\t\t\tpayment: payment || \"\",\r\n\t\t\t\tbalance: balance || \"\",\r\n\t\t\t\tstartDate: startDate,\r\n\t\t\t\textension: extension || \"\",\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tconst data = payload(\r\n\t\t\tpolicy,\r\n\t\t\tfiles,\r\n\t\t\tpolicy.renewal_narratives || [],\r\n\t\t\ttransaction.email,\r\n\t\t\thalf,\r\n\t\t\tpayment,\r\n\t\t\tbalance,\r\n\t\t\tstartDate,\r\n\t\t\textension\r\n\t\t);\r\n\r\n\t\treturn checkBadKey({ endpoint, payload: data, headers });\r\n\t} */\r\n\r\n\t/**\r\n\t *\r\n\t \r\n\t * @param {*} trn\r\n\t * @param {*} policy\r\n\t * @param {*} email\r\n\t * @param {*} files\r\n\t */\r\n\tstatic async sendExtendEmail(trn, policy, email, files) {\r\n\t\tconst endpoint = \"/email/extend\";\r\n\r\n\t\tconst headers = {\r\n\t\t\t\"customer-id\": trn,\r\n\t\t\t\"content-type\": \"application/json\",\r\n\t\t};\r\n\r\n\t\tlet payload = {\r\n\t\t\tfiles,\r\n\t\t\temail,\r\n\t\t\tsummary: {\r\n\t\t\t\tname: policy.account_name,\r\n\t\t\t\tpolicyNumber: \"\" + policy.policy_number + \"\",\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\treturn checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\r\n\t/**\r\n\t \r\n\t * @param {string} policyId\r\n\t * @param {Object} obj\r\n\t * */\r\n\tstatic async modifyPolicy(policyId, obj) {\r\n\t\tconst endpoint = `/policyModification`;\r\n\r\n\t\tlet payload = {\r\n\t\t\tpolicy_id: policyId,\r\n\t\t\tauthorize_transaction: true,\r\n\t\t\teffective_date: obj.effective_date,\r\n\t\t\taction: \"add_extensions\",\r\n\t\t\ttrans_wordings: obj.trans_wording,\r\n\t\t\tparameters: obj.parameter,\r\n\t\t\tis_tax_exempt: obj.is_tax_exempt,\r\n\t\t};\r\n\r\n\t\treturn checkKey({ endpoint, payload });\r\n\t}\r\n\t/**\r\n\t *\r\n\t \r\n\t * @param {*} policy\r\n\t * @param {*} effectiveTime\r\n\t * @param {*} premium\r\n\t */\r\n\tstatic async extendPolicy(policy, effectiveTime, premium) {\r\n\t\tconst endpoint = `/policyModification`;\r\n\r\n\t\tlet shouldCreateCertificate = true;\r\n\r\n\t\tif (policy.department_class.toLowerCase() === \"fire\") shouldCreateCertificate = false;\r\n\r\n\t\tlet payload = {\r\n\t\t\tpolicy_id: policy.policy_id,\r\n\t\t\tauthorize_transaction: true,\r\n\t\t\taction: \"create_next_payment_term_transaction\",\r\n\t\t\teffective_time: effectiveTime,\r\n\t\t\tis_tax_exempt: false,\r\n\t\t\tcreate_certificate: shouldCreateCertificate,\r\n\t\t\tis_do_not_prorate: false,\r\n\t\t\ttransaction_premium: premium,\r\n\t\t};\r\n\r\n\t\tlet response = {};\r\n\r\n\t\tresponse = await checkKey({ endpoint, payload });\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\tstatic async persistStorage(\r\n\t\tpolicy,\r\n\t\tcodes,\r\n\t\textensions,\r\n\t\tbranch,\r\n\t\tuser,\r\n\t\ttransaction,\r\n\t\trenewal_details,\r\n\t\treceipt,\r\n\t\ttransaction_type,\r\n\t\tpayment_plan\r\n\t) {\r\n\t\tconst endpoint = \"session/persist\";\r\n\r\n\t\tconst headers = {\r\n\t\t\t\"customer-id\": `${branch} ${user.national_id} ${policy.policy_prefix}-${policy.policy_number}`,\r\n\t\t\t\"content-type\": \"application/json\",\r\n\t\t};\r\n\r\n\t\tlet payload = {};\r\n\r\n\t\tlet session = {};\r\n\r\n\t\tsession.user = JSON.stringify(user);\r\n\t\tsession.currentTransaction = JSON.stringify(transaction);\r\n\r\n\t\tsession.pendingDocuments = JSON.stringify(policy.missing_documents);\r\n\t\tsession.codes = JSON.stringify(codes);\r\n\t\tsession.policyDetails = JSON.stringify({ policy, risks: policy.risks });\r\n\t\t//session.extArry = JSON.stringify(this.extArry);\r\n\t\tsession.globalNameId = JSON.stringify(user.globalNameId);\r\n\t\tsession.risks = JSON.stringify(policy.risks);\r\n\t\tsession.receipt = JSON.stringify(receipt);\r\n\t\t//save current policy as new var and check for it in getPolicy\r\n\t\t//save it by calling getPolicy with the policy id from ppolicy service\r\n\t\tsession.policy = JSON.stringify(policy);\r\n\t\tsession.menuOption = JSON.stringify(transaction_type);\r\n\r\n\t\t//session.date = JSON.stringify(=new Date())\r\n\r\n\t\tlet policyInfo = {};\r\n\r\n\t\t//in policy service, persist current pol and extensions here\r\n\t\tpolicyInfo.currentPolicy = JSON.stringify(policy);\r\n\t\tpolicyInfo.extensions = JSON.stringify(extensions);\r\n\r\n\t\tlet payments = {};\r\n\t\tpayments.currentTransaction = JSON.stringify(transaction);\r\n\r\n\t\tpayments.renewalDetails = JSON.stringify(renewal_details);\r\n\t\t/* payments.renewalDetails3Month = JSON.stringify(paymentService.renewalDetails3month)\r\n\t\tpayments.renewalDetails9Month = JSON.stringify(paymentService.getRenewalDetails9month()); */\r\n\t\tpayments.paymentPlan = JSON.stringify(payment_plan);\r\n\r\n\t\tlet tracking = {};\r\n\t\ttracking.trackedEvents = JSON.stringify([]);\r\n\r\n\t\tpayload.session = session;\r\n\t\tpayload.policy = policyInfo;\r\n\t\tpayload.payments = payments;\r\n\t\tpayload.tracking = tracking;\r\n\t\tpayload.trn = user.national_id;\r\n\r\n\t\t//let response = await axios.post(endpoint, payload, { headers: headers }); //new PersistSessionRequest(state, this.http, this.tracking).execute();\r\n\t\treturn checkBadKey({ endpoint, payload, headers });\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t \r\n\t * @param {*} from\r\n\t * @param {*} to\r\n\t * @param {*} effective_date\r\n\t * @param {*} country\r\n\t */\r\n\tstatic async getExchangeRate(from, to, effective_date, country) {\r\n\t\t// relay to dotNet\r\n\t\treturn getExchangeRate(from, to, effective_date, country);\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {Object} prop\r\n\t \r\n\t * @param {*} prop.user\r\n\t * @param {*} prop.policy\r\n\t * @param {*} prop.paymentForm\r\n\t * @param {*} prop.session_type\r\n\t * @param {*} prop.receipt_method\r\n\t * @param {Boolean=} prop.was_broker_policy\r\n\t * @param {*} prop.branch\r\n\t * @param {*=} prop.cart\r\n\t * @param {*} prop.source\r\n\t * @returns\r\n\t */\r\n\tstatic async saveSession(\r\n\t\t{ user, policy, paymentForm, session_type, receipt_method, was_broker_policy, branch, cart, source }\r\n\r\n\t) {\r\n\t\tconst endpoint = \"session/savex\";\r\n\r\n\t\tlet payment_plan_id = paymentForm?.paymentType?.payment_plan_id;\r\n\t\tlet { global_name_id, national_id, dob, gender, email_address: receive_email_at } = user;\r\n\r\n\t\tlet headers = {\r\n\t\t\t\"customer-id\": `${national_id}`,\r\n\t\t};\r\n\r\n\t\tconst payload = {\r\n\t\t\tpolicy_id: policy.policy_id,\r\n\t\t\tglobal_name_id,\r\n\t\t\tsession_type,\r\n\t\t\treceipt_method,\r\n\t\t\treceive_email_at,\r\n\t\t\tpayment_plan_id,\r\n\t\t\tnational_id,\r\n\t\t\tdob,\r\n\t\t\tgender,\r\n\t\t\ttotal_payments: paymentForm.totalPayments || -1,\r\n\t\t\tsession: JSON.stringify({\r\n\t\t\t\tuser,\r\n\t\t\t\tpolicy,\r\n\t\t\t\tpaymentForm,\r\n\t\t\t\tsession_type,\r\n\t\t\t\twas_broker_policy /* cart */,\r\n\t\t\t\tbranch,\r\n\t\t\t\tsource\r\n\t\t\t}),\r\n\t\t};\r\n\r\n\t\tlet response = {};\r\n\t\ttry {\r\n\t\t\tresponse = await checkExpToken({ endpoint, payload, headers });\r\n\t\t\t// if must be logged in, get new token and retry once\r\n\t\t\tif (!response.success && response.message.includes(\"Must be logged in\")) {\r\n\t\t\t\tconst token = await AuthNetworkLayer.login();\r\n\t\t\t\theaders = {\r\n\t\t\t\t\t\"customer-id\": `${national_id}`,\r\n\t\t\t\t};\r\n\t\t\t\tresponse = await checkExpToken({ endpoint, payload, headers });\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tif (error.message.includes(\"Must be logged in\")) {\r\n\t\t\t\tconst token = await AuthNetworkLayer.login();\r\n\t\t\t\theaders = {\r\n\t\t\t\t\t\"customer-id\": `${national_id}`,\r\n\t\t\t\t};\r\n\t\t\t\tresponse = await checkExpToken({ endpoint, payload, headers });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t \r\n\t * @param {*} policyPrefix\r\n\t */\r\n\tstatic async getPolicyRatingCodes(policyPrefix) {\r\n\t\treturn getPolicyProfRatingCodes(policyPrefix);\r\n\t}\r\n\r\n\t/**\r\n\t * Remove missing documents (narratives) from a policy\r\n\t *\r\n\t *\r\n\t */\r\n\tstatic async removePolicyNarrative(policy_id, narratives) {\r\n\t\treturn await updatePolicyNarratives({ policy_id, narratives_to_remove: narratives });\r\n\t}\r\n\r\n\t/**\r\n\t * Add missing documents (narratives) to a policy\r\n\t */\r\n\tstatic async addPolicyNarrative(policy_id, narratives) {\r\n\t\treturn await updatePolicyNarratives({ policy_id, narratives_to_add: narratives });\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t \r\n\t * @param {*} policy_id\r\n\t * @param {*} policy_start_date\r\n\t * @param {*} policy_end_date\r\n\t * @param {*} risk_id\r\n\t * @param {*} registration_number\r\n\t * @param {*} is_do_not_prorate\r\n\t * @returns\r\n\t */\r\n\tstatic async notingRegistrationNumber(\r\n\t\tpolicy_id,\r\n\t\tpolicy_start_date,\r\n\t\tpolicy_end_date,\r\n\t\trisk_id,\r\n\t\tregistration_number,\r\n\t\tis_do_not_prorate\r\n\t) {\r\n\t\treturn notingRegistrationNumber({\r\n\t\t\tpolicy_id,\r\n\t\t\tpolicy_start_date,\r\n\t\t\tpolicy_end_date,\r\n\t\t\trisk_id,\r\n\t\t\tregistration_number,\r\n\t\t\tis_do_not_prorate,\r\n\t\t});\r\n\t}\r\n\r\n\tstatic async setToCancel(data) {\r\n\t\treturn setToCancel(data);\r\n\t}\r\n\r\n\tstatic async cancelPolicy(data) {\r\n\t\treturn cancelPolicy(data);\r\n\t}\r\n\r\n\tstatic async updateReceiptTransaction(sessionUpdatePayload) {\r\n\t\ttry {\r\n\t\t\tconst activePolicy = sessionUpdatePayload.fields_to_update.activePolicy;\r\n\t\t\tdelete sessionUpdatePayload.fields_to_update.activePolicy;\r\n\r\n\t\t\tconst sessionUpdateEndpoint = \"/session/update\";\r\n\t\t\tconst sessionUpdateHeaders = {\r\n\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t};\r\n\r\n\t\t\tconst sessionUpdateResponse = await checkExpToken({\r\n\t\t\t\tendpoint: sessionUpdateEndpoint,\r\n\t\t\t\tpayload: sessionUpdatePayload,\r\n\t\t\t\theaders: sessionUpdateHeaders,\r\n\t\t\t\ttimeout: 20000,\r\n\t\t\t\treqType: \"put\",\r\n\t\t\t});\r\n\r\n\t\t\tconst payload = {\r\n\t\t\t\tpolicy_number: activePolicy.policy_number,\r\n\t\t\t\treminder_type: \"cash\",\r\n\t\t\t};\r\n\r\n\t\t\tawait removePaymentReminder(payload);\r\n\r\n\t\t\tif (!sessionUpdateResponse || !sessionUpdateResponse?.success) {\r\n\t\t\t\tconsole.log(\"The session failed to be updated in the database.\");\r\n\t\t\t\t//throw new Error(\"The receipt number failed to write to the database.\");\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(e?.message);\r\n\t\t}\r\n\r\n\t\treturn sessionUpdatePayload;\r\n\t}\r\n\r\n\tstatic async savePaymentDetails(savePaymentDetailsPayload) {\r\n\t\t//let frontendRequestStart = Date.now();\r\n\t\tconst endpoint = \"session/save-payment-methods\";\r\n\r\n\t\tconst payload = { fields_to_add: savePaymentDetailsPayload };\r\n\r\n\t\tlet response = await checkExpToken({ endpoint, payload, reqType: \"put\" });\r\n\r\n\t\t/* setTimeout(() => {\r\n\t\t\tif (response.data?.backendTiming) {\r\n\t\t\t\tlogPerformanceTiming({\r\n\t\t\t\t\tfrontendRequestStart,\r\n\t\t\t\t\tserverTiming: response.data?.backendTiming,\r\n\t\t\t\t\tcall_name: \"save_payment_details\",\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}); */\r\n\r\n\t\treturn response;\r\n\t}\r\n\r\n\tstatic async getSessionByReceiptNumber(receipt_no) {\r\n\t\tconst endpoint = `session/getSessionByReceiptNumber`;\r\n\r\n\t\tlet payload = {\r\n\t\t\treceipt_no: receipt_no,\r\n\t\t};\r\n\r\n\t\treturn await checkExpToken({ endpoint, payload, reqType: \"post\" });\r\n\t}\r\n\r\n\tstatic async savePaymentActivity({ saveSessionPayload, savePaymentDetailsPayload, sessionUpdatePayload, sessionTracking }) {\r\n\t\tlet saveSessionResponse;\r\n\t\tlet savePaymentDetailsResponse;\r\n\t\tlet updateSessionResponse;\r\n\r\n\t\tconst { sessionData, setSelectedSession, dispatch } = sessionTracking;\r\n\r\n\t\ttry {\r\n\r\n\t\t\tif (sessionData.sessionId && sessionData.isSessionCreated) {\r\n\r\n\t\t\t\tsessionUpdatePayload.session_id = sessionData.sessionId;\r\n\r\n\t\t\t\tupdateSessionResponse = this.updateReceiptTransaction(sessionUpdatePayload);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tsaveSessionResponse = await this.saveSession(saveSessionPayload);\r\n\r\n\t\t\t\tconst savedSessionId = saveSessionResponse.session_id;\r\n\r\n\t\t\t\tdispatch(setSelectedSession({sessionId: savedSessionId, isSessionCreated: true}));\r\n\r\n\t\t\t\tsavePaymentDetailsPayload.session_id = savedSessionId;\r\n\r\n\t\t\t\tsessionUpdatePayload.session_id = savedSessionId;\r\n\r\n\t\t\t\tupdateSessionResponse = this.updateReceiptTransaction(sessionUpdatePayload);\r\n\t\t\t\tlet paymentsList = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...savePaymentDetailsPayload,\r\n\t\t\t\t\t},\r\n\t\t\t\t];\r\n\r\n\t\t\t\tpaymentsList = paymentsList.map(p => Object.values(p));\r\n\r\n\t\t\t\tsavePaymentDetailsResponse = await this.savePaymentDetails(paymentsList);\r\n\t\t\t}\r\n\r\n\t\t} catch (e) {\r\n\t\t\tthrow new Error(\"Error: \", e);\r\n\t\t} finally {\r\n\t\t\treturn {\r\n\t\t\t\tsaveSessionResponse: saveSessionResponse,\r\n\t\t\t\tsavePaymentDetailsResponse: savePaymentDetailsResponse,\r\n\t\t\t\tupdateSessionResponse: updateSessionResponse,\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n}\r\n","export const INFO = \"info\";\r\nexport const ERROR = \"error\";\r\nexport const CONFIRM = \"confirm\";\r\nexport const INPUT = \"input\";\r\n","import { persistReducer, persistStore, FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER } from \"redux-persist\";\r\nimport { configureStore, combineReducers, getDefaultMiddleware } from \"@reduxjs/toolkit\";\r\nimport storage from \"redux-persist/lib/storage/session\";\r\nimport localForage from \"localforage\";\r\nimport confirmationReducer from \"./confirmation\";\r\nimport paymentReducer from \"./payments\";\r\nimport overlayReducer from \"./overlays\";\r\nimport claimsReducer from \"./claims\";\r\nimport authReducer from \"./auth\";\r\nimport navBarReducer from \"./navbar\";\r\n// import cartReducer from \"./cart\";\r\nimport additionalBenefitsReducer from \"./additionalbenefits\";\r\nimport policyManagerReducer from \"./policymanager\";\r\nimport renewalReducer from \"./renewal\";\r\n\r\n/** @type {import(\"redux-persist\").PersistConfig} */\r\nlet config = {\r\n\tkey: \"root\",\r\n\tstorage: localForage,\r\n\tblacklist: [\"overlay\"],\r\n};\r\n\r\nif (process.env.NODE_ENV !== \"development\") config.blacklist.push(\"auth\", \"payment\");\r\n\r\nlet rootReducer = combineReducers({\r\n\tadditionalbenefit: additionalBenefitsReducer,\r\n\tauth: authReducer,\r\n\tpayment: paymentReducer,\r\n\toverlay: overlayReducer,\r\n\tconfirmation: confirmationReducer,\r\n\tclaim: claimsReducer,\r\n\tnavbar: navBarReducer,\r\n\t// cart: cartReducer,\r\n\tpolicymanager: policyManagerReducer,\r\n\trenewal: renewalReducer,\r\n});\r\n\r\nlet persistedReducer = persistReducer(config, rootReducer);\r\n\r\nconst store = configureStore({\r\n\treducer: persistedReducer,\r\n\tmiddleware: getDefaultMiddleware({\r\n\t\tserializableCheck: {\r\n\t\t\tignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],\r\n\t\t},\r\n\t\timmutableCheck: false,\r\n\t}),\r\n\t//Disables dev tools in live server environments\r\n\tdevTools: process.env.NODE_ENV === \"development\",\r\n});\r\n\r\nconst persistor = persistStore(store);\r\n\r\nexport { store, persistor };\r\nexport default store;\r\n","import { checkKey } from \"helpers/auth\";\r\n\r\nexport const submitNote = async ( payload) => {\r\n\tconst endpoint = `/mwSubmitNote`;\r\n\r\n\treturn await checkKey({ endpoint, payload });\r\n};\r\n\r\nexport const renewalPremiumCalculator = async payload => {\r\n\tlet response = {};\r\n\t//let token = payload.token;\r\n\tconst endpoint = `/renewalPremiumCalculator`;\r\n\tpayload = payload.requestBody;\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\r\n\treturn response;\r\n};\r\n\r\nexport const updateRenewPolicy = async ( payload) => {\r\n\tlet response = {};\r\n\tconst endpoint = `/policyUpdateRenew`;\r\n\r\n\tresponse = await checkKey({ endpoint, payload });\r\n\treturn response;\r\n};\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { fullLogout } from \"globals/misc\";\r\n\r\nconst defaultState = {\r\n\tmainAddress: \"\",\r\n\tfullname: \"\",\r\n\temail: \"\",\r\n\tselectedPolicyEditorTab: { mainFlowIndex: null, subFlowIndex: null },\r\n\tprogressStep: 0,\r\n\tregistrationNumbers: [],\r\n\tcertificates: [],\r\n\thighlightedRiskId: null, \r\n\tclickedNotificationInfoPocket: {\r\n\t\tUniqueInfoID: \"\",\r\n\t\tfocusFieldID: \"\",\r\n\t}, \r\n\tisPocaCompliant: true, \r\n\tsubtitle: \"\",\r\n\tprogressBarStatus: false,\r\n\tpolicyFormInfo: {\r\n\t\tstreetNumber: \"\",\r\n\t\tstreetName: \"\",\r\n\t\tstreetType: \"\",\r\n\t\tgeneralArea: \"\",\r\n\t\tinternationalArea: \"\",\r\n\t\tparish: \"\",\r\n\t\ttown: \"\",\r\n\t\tnewEmail: \"\",\r\n\t\tphoneNumber: \"\",\r\n\t\totherPhoneNumber: \"\",\r\n\t\tbuildingNumber: \"\",\r\n\t\tbuildingLabel: \"\",\r\n\t\tcomplexName: \"\",\r\n\t\tunitNumber: \"\",\r\n\t\tcountry: \"\",\r\n\t\tzipCode: \"\",\r\n\t\tproofOfAddressType: \"\",\r\n\t\tproofOfAddress: [],\r\n\t\tnewRegistrationNumbers: [],\r\n\t\tnewMarketValues: [],\r\n\t},\r\n\tnewPremium: 0,\r\n\tgct: 0,\r\n\tchangeOnPremium: 0,\r\n\tstreetTypes: [],\r\n\tparishsTowns: [],\r\n\tgeneralAreas: [],\r\n\teditedAddressFields: [],\r\n\tisAlternativeNumberEdited: false,\r\n\tisPolicyPastDue: false,\r\n\tpolicyFormInfoChanged: false,\r\n};\r\n\r\nlet policyManagerSlice = createSlice({\r\n\tname: \"policymanager\",\r\n\tinitialState: defaultState,\r\n\treducers: {\r\n\t\tsetPolicyManager: (state, action) => {\r\n\t\t\tconst { fullname, email, certificates, registrationNumbers } = action.payload;\r\n\t\t\tstate.fullname = fullname;\r\n\t\t\tstate.email = email;\r\n\t\t\tstate.registrationNumbers = registrationNumbers;\r\n\t\t\tstate.certificates = certificates;\r\n\t\t}, \r\n\t\tsetSubtitle: (state, action) => {\r\n\t\t\tstate.subtitle = action.payload;\r\n\t\t}, \r\n\t\tsetIsPocaCompliant: (state, action) => {\r\n\t\t\tstate.isPocaCompliant = action.payload;\r\n\t\t}, \r\n\t\tsetProgressBarStatus: (state, action) => {\r\n\t\t\tstate.progressBarStatus = action.payload;\r\n\t\t},\r\n\t\tsetClickedNotificationInfoPocket: (state, action) => {\r\n\t\t\tstate.clickedNotificationInfoPocket = action.payload;\r\n\t\t},\r\n\t\tsetSelectedPolicyEditorTab: (state, action) => {\r\n\t\t\tstate.selectedPolicyEditorTab = action.payload;\r\n\t\t},\r\n\t\tsetProgressStep: (state, action) => {\r\n\t\t\tstate.progressStep = action.payload;\r\n\t\t},\r\n\t\tsetFullName: (state, action) => {\r\n\t\t\tstate.fullname = action.payload;\r\n\t\t},\r\n\t\tsetEmail: (state, action) => {\r\n\t\t\tstate.email = action.payload;\r\n\t\t},\r\n\t\tsetNewPremium: (state, action) => {\r\n\t\t\tstate.newPremium = action.payload;\r\n\t\t},\r\n\t\tsetChangeOnPremium: (state, action) => {\r\n\t\t\tstate.changeOnPremium = action.payload;\r\n\t\t},\r\n\t\tsetGCT: (state, action) => {\r\n\t\t\tstate.gct = action.payload;\r\n\t\t},\r\n\t\t/**\r\n\t\t * @typedef {Object} policyFormInfo\r\n\t\t * @property {Object} policyFormInfo.payload\r\n\t\t * @property {String} policyFormInfo.payload.streetNumber\r\n\t\t * @property {String} policyFormInfo.payload.streetName\r\n\t\t * @property {String} policyFormInfo.payload.streetType\r\n\t\t * @property {String} policyFormInfo.payload.generalArea\r\n\t\t * @property {String} policyFormInfo.payload.internationalArea\r\n\t\t * @property {String} policyFormInfo.payload.parish\r\n\t\t * @property {String} policyFormInfo.payload.town\r\n\t\t * @property {String} policyFormInfo.payload.newEmail\r\n\t\t * @property {String} policyFormInfo.payload.phoneNumber\r\n\t\t * @property {String} policyFormInfo.payload.otherPhoneNumber\r\n\t\t * @property {String} policyFormInfo.payload.buildingNumber\r\n\t\t * @property {String} policyFormInfo.payload.buildingLabel\r\n\t\t * @property {String} policyFormInfo.payload.complexName\r\n\t\t * @property {String} policyFormInfo.payload.unitNumber\r\n\t\t * @property {String} policyFormInfo.payload.country\r\n\t\t * @property {String} policyFormInfo.payload.zipCode\r\n\t\t * @property {String} policyFormInfo.payload.proofOfAddressType\r\n\t\t * @property {Array} policyFormInfo.payload.proofOfAddress\r\n\t\t * @property {Array} policyFormInfo.payload.newRegistrationNumbers\r\n\t\t * @property {Array} policyFormInfo.payload.newMarketValues\r\n\t\t * @param {policyFormInfo} action\r\n\t\t */\r\n\t\tsetPolicyFormInfo: (state, action) => {\r\n\t\t\tstate.policyFormInfo = { ...state.policyFormInfo, ...action.payload };\r\n\t\t},\r\n\t\tsetStreetTypes: (state, action) => {\r\n\t\t\tstate.streetTypes = action.payload;\r\n\t\t},\r\n\t\tsetParishsTowns: (state, action) => {\r\n\t\t\tstate.parishsTowns = action.payload;\r\n\t\t},\r\n\t\tsetMainAddress: (state, action) => {\r\n\t\t\tstate.mainAddress = action.payload;\r\n\t\t},\r\n\t\tsetGeneralAreas: (state, action) => {\r\n\t\t\tstate.generalAreas = action.payload;\r\n\t\t},\r\n\t\tsetEditedAddressFields: (state, action) => {\r\n\t\t\tstate.editedAddressFields = action.payload;\r\n\t\t},\r\n\t\tsetIsAlternativeNumberEdited: (state, action) => {\r\n\t\t\tstate.isAlternativeNumberEdited = action.payload;\r\n\t\t},\r\n\t\tsetIsPolicyPastDue: (state, action) => {\r\n\t\t\tstate.isPolicyPastDue = action.payload;\r\n\t\t},\r\n\t\tsetHighlightedRiskId: (state, action) => {\r\n\t\t\tstate.highlightedRiskId = action.payload;\r\n\t\t},\r\n\t\tsetPolicyFormInfoChanged: (state, action) => {\r\n\t\t\tstate.policyFormInfoChanged = action.payload;\r\n\t\t},\r\n\t\tclearPolicyManagerFormInfo: state => {\r\n\t\t\tstate.editedAddressFields = [];\r\n\t\t\tstate.policyFormInfo = {\r\n\t\t\t\tstreetNumber: \"\",\r\n\t\t\t\tstreetName: \"\",\r\n\t\t\t\tstreetType: \"\",\r\n\t\t\t\tgeneralArea: \"\",\r\n\t\t\t\tinternationalArea: \"\",\r\n\t\t\t\tparish: \"\",\r\n\t\t\t\ttown: \"\",\r\n\t\t\t\tnewEmail: \"\",\r\n\t\t\t\tphoneNumber: \"\",\r\n\t\t\t\totherPhoneNumber: \"\",\r\n\t\t\t\tbuildingNumber: \"\",\r\n\t\t\t\tbuildingLabel: \"\",\r\n\t\t\t\tcomplexName: \"\",\r\n\t\t\t\tunitNumber: \"\",\r\n\t\t\t\tcountry: \"\",\r\n\t\t\t\tzipCode: \"\",\r\n\t\t\t\tproofOfAddressType: \"\",\r\n\t\t\t\tproofOfAddress: [],\r\n\t\t\t\tnewRegistrationNumbers: [],\r\n\t\t\t\tnewMarketValues: [],\r\n\t\t\t};\r\n\t\t\tstate.newPremium = 0;\r\n\t\t\tstate.gct = 0;\r\n\t\t\tstate.changeOnPremium = 0;\r\n\t\t\tstate.isAlternativeNumberEdited = false;\r\n\t\t\tstate.policyFormInfoChanged = false;\r\n\t\t},\r\n\t\tclearPolicyManager: () => defaultState,\r\n\t},\r\n\textraReducers: builder => {\r\n\t\tbuilder.addCase(fullLogout, (state, action) => defaultState);\r\n\t\t//builder.addCase(changePolicy, (state, action) => defaultState);\r\n\t},\r\n});\r\n\r\n/** @param {{policymanager: defaultState}} state */\r\nexport const getPolicyManager = ({ policymanager: state }) => {\r\n\treturn {\r\n\t\tfullname: state?.fullname,\r\n\t\temail: state?.email,\r\n\t\tcertificates: state?.certificates,\r\n\t\tregistrationNumbers: state?.registrationNumbers,\r\n\t};\r\n};\r\nexport const getSelectedPolicyEditorTab = ({ policymanager: state }) => state.selectedPolicyEditorTab;\r\n/** @param {{policymanager : defaultState}} state */\r\nexport const getPolicyFormInfo = ({ policymanager: state }) => state.policyFormInfo;\r\nexport const getStreetTypes = ({ policymanager: state }) => state.streetTypes;\r\nexport const getParishsTowns = ({ policymanager: state }) => state.parishsTowns;\r\nexport const getGeneralAreas = ({ policymanager: state }) => state.generalAreas;\r\nexport const getMainAddress = ({ policymanager: state }) => state.mainAddress;\r\nexport const getEditedAddressFields = ({ policymanager: state }) => state.editedAddressFields;\r\nexport const getIsAlternativeNumberEdited = ({ policymanager: state }) => state.isAlternativeNumberEdited;\r\nexport const getProgressStep = ({ policymanager: state }) => state.progressStep;\r\nexport const getNewPremium = ({ policymanager: state }) => state.newPremium;\r\nexport const getChangeOnPremium = ({ policymanager: state }) => state.changeOnPremium;\r\nexport const getGCT = ({ policymanager: state }) => state.gct;\r\nexport const getHighlightedRiskId = ({ policymanager: state }) => state.highlightedRiskId; \r\nexport const getSubtitle = ({ policymanager: state }) => state.subtitle;\r\nexport const getProgressBarStatus = ({ policymanager: state }) => state.progressBarStatus;\r\nexport const getClickedNotificationInfoPocket = ({ policymanager: state }) => state.clickedNotificationInfoPocket;\r\nexport const getIsPolicyPastDue = ({ policymanager: state }) => state.isPolicyPastDue;\r\nexport const getPolicyFormInfoChanged = ({ policymanager: state }) => state.policyFormInfoChanged;\r\nexport const getIsPocaCompliant = ({ policymanager: state }) => state.isPocaCompliant;\r\nexport const {\r\n\tsetPolicyManager,\r\n\tsetEmail,\r\n\tsetPolicyFormInfo, \r\n\tsetSubtitle,\r\n\tsetProgressBarStatus,\r\n\tsetMainAddress,\r\n\tclearPolicyManager,\r\n\tclearPolicyManagerFormInfo,\r\n\tsetStreetTypes,\r\n\tsetParishsTowns,\r\n\tsetGeneralAreas,\r\n\tsetEditedAddressFields,\r\n\tsetIsAlternativeNumberEdited,\r\n\tsetSelectedPolicyEditorTab,\r\n\tsetProgressStep,\r\n\tsetNewPremium,\r\n\tsetChangeOnPremium,\r\n\tsetGCT, \r\n\tsetClickedNotificationInfoPocket,\r\n\tsetHighlightedRiskId,\r\n\tsetIsPolicyPastDue,\r\n\tsetPolicyFormInfoChanged,\r\n\tsetIsPocaCompliant,\r\n} = policyManagerSlice.actions;\r\nexport default policyManagerSlice.reducer;\r\n","import React, { Fragment } from \"react\";\r\nimport { useEffect } from \"react\";\r\nimport ReactModal from \"react-modal\";\r\nimport { ConfirmModal, ErrorModal, InfoModal, InputModal } from \"../SweetModal\";\r\nimport { CONFIRM, ERROR, INPUT, } from \"./constants\";\r\n\r\nimport \"./Modal.scss\";\r\n\r\nReactModal.setAppElement(\"#root\");\r\n\r\n/**\r\n * Make a modal appear in the application.\r\n *\r\n * @param {Object} props\r\n * @param {String|JSX.Element=} props.content\r\n * @param {String|JSX.Element=} props.subcontent\r\n * @param {Boolean} props.open\r\n * @param {String=} props.title\r\n * @param {Object[]=} props.list\r\n * @param {React.CSSProperties=} props.customStyle,\r\n * @param {String|JSX.Element=} props.subText\r\n * @param {String|JSX.Element=} props.subContent\r\n * @param {String=} props.primaryLabel\r\n * @param {()=>void=} props.primaryCallback\r\n * @param {Boolean=} props.enablePrimaryCallback\r\n * @param {String=} props.modalType\r\n * @param {String=} props.secondaryLabel\r\n * @param {()=>void=} props.secondaryCallback\r\n * @param {()=>void=} props.afterClose\r\n * @param {String=}props.inputType\r\n * @param {String|JSX.Element=} props.secondaryContent\r\n * @param {Boolean=} props.shouldDelete\r\n * @param {Boolean=} props.showCloseButton\r\n * @param {Boolean=} props.isDismissed\r\n * @param {Boolean=} props.successIcon\r\n * @param {()=>void=} props.dismissProcedure\r\n * @param {Boolean} props.alignButtonsVertically\r\n */\r\n\r\nexport default function Modal({\r\n\tcontent,\r\n\tsubcontent,\r\n\topen,\r\n\ttitle,\r\n\tlist,\r\n\tsubText,\r\n\tsubContent,\r\n\tcustomStyle,\r\n\tmodalType,\r\n\tprimaryLabel,\r\n\tprimaryCallback,\r\n\tenablePrimaryCallback,\r\n\tinputType,\r\n\tsecondaryLabel,\r\n\tsecondaryCallback,\r\n\tafterClose,\r\n\tsecondaryContent,\r\n\tsuccessIcon = false,\r\n\tshouldDelete = true,\r\n\tshowCloseButton = true,\r\n\tisDismissed = false,\r\n\tdismissProcedure,\r\n\talignButtonsVertically,\r\n}) {\r\n\tuseEffect(() => {\r\n\t\tif (open) {\r\n\t\t\tmodalType === ERROR\r\n\t\t\t\t? ErrorModal({ title, primaryCallback, primaryLabel, secondaryLabel, secondaryCallback, content, alignButtonsVertically })\r\n\t\t\t\t: modalType === CONFIRM\r\n\t\t\t\t? ConfirmModal({\r\n\t\t\t\t\t\ttitle,\r\n\t\t\t\t\t\tprimaryCallback,\r\n\t\t\t\t\t\tprimaryLabel,\r\n\t\t\t\t\t\tsecondaryLabel,\r\n\t\t\t\t\t\tsecondaryCallback,\r\n\t\t\t\t\t\tcontent,\r\n\t\t\t\t\t\tsecondaryContent,\r\n\t\t\t\t\t\tshouldDelete,\r\n\t\t\t\t\t\tshowCloseButton,\r\n\t\t\t\t\t\talignButtonsVertically,\r\n\t\t\t\t })\r\n\t\t\t\t: modalType === INPUT\r\n\t\t\t\t? InputModal({\r\n\t\t\t\t\t\ttitle,\r\n\t\t\t\t\t\tprimaryLabel,\r\n\t\t\t\t\t\tsecondaryLabel,\r\n\t\t\t\t\t\tprimaryCallback,\r\n\t\t\t\t\t\tsecondaryCallback,\r\n\t\t\t\t\t\tcontent,\r\n\t\t\t\t\t\tinputType,\r\n\t\t\t\t\t\talignButtonsVertically,\r\n\r\n\t\t\t\t })\r\n\t\t\t\t: InfoModal({ title, primaryCallback, primaryLabel, secondaryLabel, successIcon, secondaryCallback, content, list, isDismissed, dismissProcedure, showCloseButton, alignButtonsVertically });\r\n\t\t}\r\n\t}, [\r\n\t\topen,\r\n\t\tsecondaryContent,\r\n\t\tsecondaryCallback,\r\n\t\ttitle,\r\n\t\tcontent,\r\n\t\tlist,\r\n\t\tmodalType,\r\n\t\tprimaryCallback,\r\n\t\tprimaryLabel,\r\n\t\tsecondaryLabel,\r\n\t\tshowCloseButton,\r\n\t\talignButtonsVertically\r\n\t]);\r\n\treturn ;\r\n}\r\n","import { nodeApi } from \"api/Middleware\";\r\n\r\nasync function createLog({ trn, type, data, errors }) {\r\n\t// const axios = require(\"axios\").default;\r\n\tconst response = await nodeApi.post(\r\n\t\t`/log/add`,\r\n\t\t{ trn, type, data, errors },\r\n\t\t{\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: \"application/json;*/*\",\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t},\r\n\t\t}\r\n\t);\r\n\r\n\treturn response.data;\r\n}\r\n\r\nexport { createLog };\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport \"./InfoIcon.scss\";\r\n\r\nfunction InfoIcon({ label }) {\r\n\tconst [active, setActive] = useState(true);\r\n\tconst popupRef = useRef(null);\r\n\r\n\tfunction toggleActive() {\r\n\t\tsetActive(!active);\r\n\t}\r\n\r\n\tuseEffect(()=>{ \r\n\t\trepositionPopup();\r\n\t\twindow.addEventListener(\"resize\", repositionPopup);\r\n\t\treturn () => window.removeEventListener(\"resize\", () => {});\r\n\t},[active]);\r\n\r\n\tfunction repositionPopup(){\r\n\t\tif(popupRef.current) {\r\n\t\t\tpopupRef.current.style.top = `-${ (popupRef.current.offsetHeight / 2) - 5 }px`;\r\n\t\t}\r\n\t}\r\n\t \r\n\t\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t{label}\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default InfoIcon;\r\n","import { AuthNetworkLayer } from \"helpers\";\r\nimport { setToken } from \"../../globals/auth\";\r\nimport { store } from \"../../globals/index\";\r\nimport { dNet, nodeApi } from \"api/Middleware\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport PolicyNetworkLayer from \"helpers/policy/network\";\r\nimport { differenceInDays, parse } from \"date-fns\";\r\nimport { calculateBalance } from \"components/PayBalanceProcess/PolicyListing/functions\";\r\n\r\nconst MAX_ATTEMPTS = 3;\r\n\r\n/*\r\n * Fetch and set the Token in redux state\r\n * @param {String} authType\r\n * @param {{dob: String, gender: String, national_id: String, national_id_type: String}} param1\r\n */\r\nexport async function useSetGlobalToken(authType, { dob, gender, national_id, national_id_type }) {\r\n\tconst dispatch = useDispatch();\r\n\tdispatch(setToken((await getNewGlobalToken(3)).token));\r\n}\r\n\r\n/**\r\n * Makes a network request requiring a token and will attempt to\r\n * retry a failed request up to [MAX_ATTEMPTS] time(s) if the request\r\n * fails because of Bad Key or Invalid Token\r\n * @param {Object} params\r\n */\r\nexport async function checkBadKey({ endpoint, payload, headers }) {\r\n\tconst token = store.getState().auth.token;\r\n\r\n\tlet response = await nodeApi.post(endpoint, payload, { headers: { ...headers } }).catch(error => {\r\n\t\tif (error.response) return error.response;\r\n\t});\r\n\r\n\tconst data = response.data;\r\n\r\n\tif (!data.success) {\r\n\t\tlet error = data.error_message || data.Info || data.Details || \"\";\r\n\t\terror = error.toLowerCase();\r\n\r\n\t\tif (\r\n\t\t\terror.includes(\"bad\") ||\r\n\t\t\terror.includes(\"expired\") ||\r\n\t\t\terror.includes(\"invalid authorization token\") ||\r\n\t\t\terror.includes(\"json data failed\") ||\r\n\t\t\terror.includes(\"failed to authenticate\")\r\n\t\t) {\r\n\t\t\tlet request = await getNewGlobalToken(MAX_ATTEMPTS);\r\n\t\t\tif (!request.success) return request;\r\n\r\n\t\t\tlet newResponse = await nodeApi.post(endpoint, payload, {\r\n\t\t\t\theaders: { ...headers, \"x-auth-token\": request.token },\r\n\t\t\t});\r\n\t\t\treturn newResponse.data;\r\n\t\t}\r\n\t}\r\n\r\n\treturn data;\r\n}\r\n\r\n/**\r\n * Makes a network request requiring a token and will attempt to\r\n * retry a failed request up to [MAX_ATTEMPTS] time(s) if the request\r\n * fails because of Bad Key or Invalid Token\r\n * @param {Object} params\r\n */\r\nexport async function checkKey({ endpoint, payload, reqType = \"post\" }, config = {}) {\r\n\tconst token = store.getState().auth.token;\r\n\r\n\tlet response = {};\r\n\r\n\tif (reqType.includes(\"post\")) {\r\n\t\tawait dNet\r\n\t\t\t.post(endpoint, payload, config)\r\n\t\t\t.then(res => {\r\n\t\t\t\tresponse = res.data;\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tif (error.response) return error.response;\r\n\t\t\t});\r\n\t} else {\r\n\t\tawait dNet\r\n\t\t\t.get(endpoint, payload)\r\n\t\t\t.then(res => {\r\n\t\t\t\tresponse = res.data;\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tif (error.response) return error.response;\r\n\t\t\t});\r\n\t}\r\n\tconst data = response;\r\n\tif (!data.success) {\r\n\t\tlet error = data.error_message || data.Info || data.Details || \"\";\r\n\t\terror = error.toLowerCase();\r\n\t\tif (\r\n\t\t\terror.includes(\"bad\") ||\r\n\t\t\terror.includes(\"expired\") ||\r\n\t\t\terror.includes(\"invalid authorization token\") ||\r\n\t\t\terror.includes(\"json data failed\") ||\r\n\t\t\terror.includes(\"failed to authenticate\")\r\n\t\t) {\r\n\t\t\tlet request = await getNewGlobalToken(MAX_ATTEMPTS);\r\n\t\t\tif (!request.success) return request;\r\n\r\n\t\t\tif (reqType.includes(\"get\")) payload.params.token = request.token;\r\n\r\n\t\t\tlet newResponse = reqType.includes(\"post\")\r\n\t\t\t\t? await dNet.post(endpoint, payload)\r\n\t\t\t\t: await dNet.get(endpoint, payload);\r\n\t\t\treturn newResponse.data;\r\n\t\t}\r\n\t}\r\n\treturn data;\r\n}\r\n\r\n/**\r\n * This exists because of the API returning unusual/inconsistent data\r\n *\r\n * E.g. Sucess {Array{}} instead of success {Boolean}\r\n *\r\n * E.g.\tError {Array} instead of error_message {String}\r\n * @param {Object} params\r\n */\r\nexport async function checkWeirdBadKey({ endpoint, payload, reqType = \"post\" }) {\r\n\tconst token = store.getState().auth.token;\r\n\tlet response = {};\r\n\r\n\tif (reqType.includes(\"post\")) {\r\n\t\tawait dNet\r\n\t\t\t.post(endpoint, payload)\r\n\t\t\t.then(res => {\r\n\t\t\t\tresponse = res.data;\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tif (error.response) return error.response;\r\n\t\t\t});\r\n\t} else {\r\n\t\tawait dNet\r\n\t\t\t.get(endpoint, payload)\r\n\t\t\t.then(res => {\r\n\t\t\t\tresponse = res.data;\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tif (error.response) return error.response;\r\n\t\t\t});\r\n\t}\r\n\r\n\tconst data = response;\r\n\r\n\tif (data.success === false || data.success === \"false\") {\r\n\t\t/**\r\n\t\t * Data is returned in the Sucess param as an array\r\n\t\t * ...don't ask why\r\n\t\t */\r\n\t\tlet error = data.error_message || data.Info || data.Details || \"\";\r\n\t\terror = error.toLowerCase();\r\n\t\t/**\r\n\t\t * Return early because if error_message doesn't exist, it's not a token error\r\n\t\t */\r\n\t\tif (!error) return { success: false };\r\n\r\n\t\tif (\r\n\t\t\terror.includes(\"bad\") ||\r\n\t\t\terror.includes(\"expired\") ||\r\n\t\t\terror.includes(\"invalid authorization token\") ||\r\n\t\t\terror.includes(\"json data failed\") ||\r\n\t\t\terror.includes(\"failed to authenticate\")\r\n\t\t) {\r\n\t\t\tlet request = await getNewGlobalToken(MAX_ATTEMPTS);\r\n\t\t\tif (!request.success) return request;\r\n\r\n\t\t\tif (reqType.includes(\"get\")) payload.token = request.token;\r\n\r\n\t\t\tlet newResponse = reqType.includes(\"post\")\r\n\t\t\t\t? await dNet.post(endpoint, payload)\r\n\t\t\t\t: await dNet.get(endpoint, payload);\r\n\t\t\tlet newData = newResponse.data;\r\n\t\t\tif (newData.Error?.length > 0) {\r\n\t\t\t\tconst error_message = data.Error[0].Error;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tsuccess: false,\r\n\t\t\t\t\terror_message: error_message,\r\n\t\t\t\t};\r\n\t\t\t} else if (newData.Sucess) {\r\n\t\t\t\t/** Spelling is important for this !!! ... */\r\n\t\t\t\tconst result = newData.Sucess;\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * Consider returning receipt_number(s) in the event that a\r\n\t\t\t\t * part of the process fails and user needs to follow up\r\n\t\t\t\t */\r\n\t\t\t\treturn {\r\n\t\t\t\t\tresult,\r\n\t\t\t\t\tsuccess: true,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn newResponse.data;\r\n\t\t}\r\n\t} else if (Object.keys(data).length < 1) {\r\n\t\tconsole.log(\"2nd data: \", data);\r\n\t\treturn {\r\n\t\t\tsuccess: false,\r\n\t\t\terror_message: \"No data returned\",\r\n\t\t};\r\n\t} else if (data?.Error?.length > 0) {\r\n\t\tconst error_message = data.Error[0].Error;\r\n\t\treturn {\r\n\t\t\tsuccess: false,\r\n\t\t\terror_message: error_message,\r\n\t\t};\r\n\t} else {\r\n\t\t/** Spelling is important for this !!! ... */\r\n\t\tconst result = data.Sucess;\r\n\r\n\t\t/**\r\n\t\t * Consider returning receipt_number(s) in the event that a\r\n\t\t * part of the process fails and user needs to follow up\r\n\t\t */\r\n\t\treturn {\r\n\t\t\tresult,\r\n\t\t\tsuccess: true,\r\n\t\t};\r\n\t}\r\n}\r\n\r\nexport const getExtendablePoliciesPaymentPlan = async (policies, token) => {\r\n\tlet _extendablePolicies = [];\r\n\tfor (let i = 0; i < policies.length; i++) {\r\n\t\tlet policy = policies[i];\r\n\t\tconst paymentPlanRequest = await PolicyNetworkLayer.getPolicyPaymentPlan(policy.policy_id);\r\n\r\n\t\tlet isExtendable = (await paymentPlanRequest?.policy_payment_plan?.payment_plan_name) !== \"3/9 Months Payment Plan\";\r\n\r\n\t\tif (\r\n\t\t\tpaymentPlanRequest.success &&\r\n\t\t\tpaymentPlanRequest.policy_payment_plan &&\r\n\t\t\tisExtendable &&\r\n\t\t\tpaymentPlanRequest.policy_payment_plan.payment_terms.some(plan => !plan.transaction_id)\r\n\t\t) {\r\n\t\t\t// find the first payment_term from the start that does not have an attached payment\r\n\t\t\tconst paymentTerm = paymentPlanRequest.policy_payment_plan.payment_terms.find(term => !term.transaction_id);\r\n\r\n\t\t\t// add a late fee if applicable\r\n\t\t\tlet now = new Date();\r\n\t\t\tlet due = parse(paymentTerm.effective_date, \"MM/dd/yyyy\", now);\r\n\t\t\tlet isLate = differenceInDays(now, due) > 1;\r\n\t\t\tlet lateFee = 0;\r\n\r\n\t\t\tlet balance = calculateBalance(\r\n\t\t\t\tpolicy.risks,\r\n\t\t\t\tpaymentTerm,\r\n\t\t\t\tpaymentPlanRequest.policy_payment_plan.payment_terms.length,\r\n\t\t\t\tpolicy.tax_percent / 100\r\n\t\t\t);\r\n\t\t\tbalance.total += lateFee;\r\n\r\n\t\t\tif (isLate) {\r\n\t\t\t\tpaymentTerm.payment_term_premium_with_tax += lateFee;\r\n\t\t\t}\r\n\r\n\t\t\t_extendablePolicies.push({\r\n\t\t\t\t...policy,\r\n\t\t\t\tbalance,\r\n\t\t\t\tpaymentPlan: paymentPlanRequest.policy_payment_plan,\r\n\t\t\t\tlateFee,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\treturn _extendablePolicies;\r\n};\r\n\r\n/**\r\n * Request and Set new token Globally\r\n * @param {Number} counter - Keeps track of attempts to acquire a new token by calling itself\r\n */\r\nexport async function getNewGlobalToken(counter) {\r\n\tif (counter > 0) {\r\n\t\tlet loginRequest = await AuthNetworkLayer.login();\r\n\r\n\t\tif (!loginRequest.success) {\r\n\t\t\tgetNewGlobalToken(counter - 1);\r\n\t\t} else {\r\n\t\t\tstore.dispatch(setToken(loginRequest.token));\r\n\t\t\treturn {\r\n\t\t\t\tsuccess: true,\r\n\t\t\t\ttoken: loginRequest.token,\r\n\t\t\t};\r\n\t\t}\r\n\t} else {\r\n\t\treturn {\r\n\t\t\tsuccess: false,\r\n\t\t\terror_message: \"Unable to fetch new token\",\r\n\t\t};\r\n\t}\r\n}\r\n\r\n/**\r\n * Check if a token has been expired and attempts to acquire a new token\r\n * using the refresh token\r\n * @param {Object} args\r\n */\r\nexport const checkExpToken = async ({ endpoint, payload, headers={}, timeout = null, reqType = \"post\" }) => {\r\n\tlet bearerToken = store.getState().auth.token;\r\n\tlet response = {};\r\n\r\n\tconst jwt_auth = process.env.REACT_APP_JWT_AUTHENTICATION;\r\n\r\n\tif (jwt_auth && bearerToken) {\r\n\t\theaders['Authorization'] = \"Bearer \" + bearerToken;\r\n\t}\r\n\r\n\tif (reqType.includes(\"post\")) {\r\n\t\tawait nodeApi\r\n\t\t\t.post(endpoint, payload, {\r\n\t\t\t\theaders,\r\n\t\t\t\ttimeout,\r\n\t\t\t})\r\n\t\t\t.then(res => {\r\n\t\t\t\tresponse = res.data;\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tif (error.response) return error.response;\r\n\t\t\t});\r\n\t} else if (reqType.includes(\"put\")) {\r\n\t\tawait nodeApi\r\n\t\t\t.put(endpoint, payload, {\r\n\t\t\t\theaders,\r\n\t\t\t\ttimeout,\r\n\t\t\t})\r\n\t\t\t.then(res => {\r\n\t\t\t\tresponse = res.data;\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tif (error.response) return error.response;\r\n\t\t\t});\r\n\t} else {\r\n\t\tawait nodeApi\r\n\t\t\t.get(endpoint, payload)\r\n\t\t\t.then(res => {\r\n\t\t\t\tresponse = res.data;\r\n\t\t\t})\r\n\t\t\t.catch(error => {\r\n\t\t\t\tif (error.response) return error.response;\r\n\t\t\t});\r\n\t}\r\n\r\n\tconst data = response;\r\n\r\n\tif (data.success === false || data.success === \"false\") {\r\n\t\t/**\r\n\t\t * Data is returned in the Sucess param as an array\r\n\t\t * ...don't ask why\r\n\t\t */\r\n\t\tlet error = data.message || data.Info || data.Details || \"\";\r\n\t\terror = error.toLowerCase();\r\n\t\t/**\r\n\t\t * Return early because if error_message doesn't exist, it's not a token error\r\n\t\t */\r\n\t\tif (!error) return { success: false };\r\n\r\n\r\n\t}\r\n\treturn data;\r\n};\r\n","export function capitalizeFirstLetter(string) {\r\n\tlet capitalizedString;\r\n\r\n\tif (string.length > 1) {\r\n\t\tcapitalizedString = string.charAt(0).toUpperCase() + string.slice(1);\r\n\t} else if (string.length === 1) {\r\n\t\tcapitalizedString = string.toUpperCase();\r\n\t} else {\r\n\t\tcapitalizedString = string;\r\n\t}\r\n\r\n\treturn capitalizedString;\r\n}\r\n\r\nexport function isNotEmpty(temp) {\r\n\treturn !(temp === null || temp === undefined || temp === \"\");\r\n}","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { changePolicy, fullLogout } from \"globals/misc\";\r\n\r\nconst defaultState = {\r\n\tconfirmationData: {\r\n\t\treceiptNum: \"\",\r\n\t\tresponseAfterUpdate: null,\r\n\t\treceiptDetails: null,\r\n\t\tbillingDetails: null,\r\n\t\tpaymentDetails: null,\r\n\t\tisInFlow: false,\r\n\t\tfiles: [],\r\n\t},\r\n};\r\n\r\nlet confirmationSlice = createSlice({\r\n\tname: \"confirmation\",\r\n\tinitialState: defaultState,\r\n\treducers: {\r\n\t\t/**\r\n\t\t * @typedef {Object} confData\r\n\t\t * @property {Object} confData.payload\r\n\t\t * @property {String} confData.payload.receiptNum\r\n\t\t * @property {Object} confData.payload.responseAfterUpdate\r\n\t\t * @property {Object} confData.payload.billingDetails\r\n\t\t * @property {Object} confData.payload.paymentDetails\r\n\t\t * @property {Object} confData.payload.isInFlow\r\n\t\t *@property {Object} confData.payload.files\r\n\t\t * @param {confData} action\r\n\t\t */\r\n\t\tsetConfirmationData: (state, action) => {\r\n\t\t\tstate.confirmationData = { ...state.confirmationData, ...action.payload };\r\n\t\t},\r\n\t\tsetIsInFlow: (state, action) => {\r\n\t\t\tstate.confirmationData.isInFlow = action.payload;\r\n\t\t},\r\n\t\tsetReceiptDetails: (state, action) => {\r\n\t\t\tstate.confirmationData.receiptDetails = action.payload;\r\n\t\t},\r\n\r\n\t\tclearConfirmationData: () => defaultState,\r\n\t},\r\n\textraReducers: builder => {\r\n\t\tbuilder.addCase(fullLogout, (state, action) => defaultState);\r\n\t\tbuilder.addCase(changePolicy, (state, action) => defaultState);\r\n\t},\r\n});\r\n\r\n/** @param {{confirmation: defaultState}} state */\r\nexport const getConfirmationData = ({ confirmation: state }) => state.confirmationData;\r\n\r\nexport const { setConfirmationData, clearConfirmationData, setReceiptDetails, setIsInFlow } = confirmationSlice.actions;\r\n\r\nexport default confirmationSlice.reducer;\r\n","export default __webpack_public_path__ + \"static/media/Girl-welcome.bb6215cd.png\";","export default __webpack_public_path__ + \"static/media/Girl-welcome.64ab64df.webp\";","import React, { useEffect, useState, useRef } from \"react\";\r\nimport { FaChevronLeft, FaChevronRight } from \"react-icons/fa\";\r\nimport Girl from \"assets/img/assistant/Girl-welcome.png\";\r\nimport GirlWebp from \"assets/img/assistant/Girl-welcome.webp\";\r\nimport \"./Carousel.scss\";\r\n\r\n/**\r\n * Custom Carousel that transitions on a delay\r\n * @param {Object} props\r\n * @param {Number=} props.internalWidth\r\n * @param {Array} props.children\r\n */\r\n\r\nfunction CarouselC({ internalWidth, children: slides }) {\r\n\tconst length = slides.length;\r\n\t/** @type {React.MutableRefObject} */\r\n\tconst carouselRef = useRef(null);\r\n\tconst slideIntervalRef = useRef(null);\r\n\tconst [carouselPos, setCarouselPos] = useState(0);\r\n\tconst [containerWidth, setContainerWidth] = useState(-1);\r\n\r\n\tconst pages = Array.apply(null, Array(length)).map((i, k) => (\r\n\t\t setCarouselPos(limit(k))}\r\n\t\t>
\r\n\t));\r\n\r\n\tconst limit = num => (num >= length ? num - length : num < 0 ? length + num : num);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst limit = num => (num >= length ? num - length : num < 0 ? length + num : num);\r\n\r\n\t\tif (pages.length > 1) {\r\n\t\t\tslideIntervalRef.current = setInterval(() => setCarouselPos(limit(carouselPos + 1)), 15000);\r\n\r\n\t\t\treturn () => {\r\n\t\t\t\tclearInterval(slideIntervalRef.current);\r\n\t\t\t};\r\n\t\t}\r\n\t}, [carouselPos, pages.length, length]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (containerWidth > -1 && carouselRef.current) {\r\n\t\t\tconst slider = carouselRef.current;\r\n\r\n\t\t\tslider.scrollLeft = carouselRef.current.clientWidth * carouselPos;\r\n\t\t}\r\n\t}, [carouselPos, containerWidth]);\r\n\r\n\t/**\r\n\t * Updates the width when the screen is resized or rotated\r\n\t */\r\n\tuseEffect(() => {\r\n\t\tconst handleResize = () => {\r\n\t\t\tsetContainerWidth(carouselRef.current.clientWidth);\r\n\t\t};\r\n\r\n\t\thandleResize();\r\n\t\twindow.addEventListener(\"resize\", handleResize);\r\n\t\twindow.addEventListener(\"orientationchange\", handleResize);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener(\"resize\", handleResize);\r\n\t\t\twindow.removeEventListener(\"orientationchange\", handleResize);\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetCarouselPos(limit(carouselPos - 1));\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
{pages}
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetCarouselPos(limit(carouselPos + 1));\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\"slider1\"\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
    \r\n\t\t\t\t\t{slides &&\r\n\t\t\t\t\t\tslides.map((slide, key) => (\r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t
    {slide}
    \r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t))}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default CarouselC;\r\n","// @ts-nocheck\r\nimport { useEffect } from \"react\";\r\nimport { useRef } from \"react\";\r\n\r\n/**\r\n * Live Chat Hook Wrapper\r\n * @param {Object} props\r\n * @param {Boolean} props.shouldLoad\r\n * @param {Number} props.license\r\n * @param {Number=} props.group\r\n * @param {()=>void=} props.onChatLoaded\r\n * @param {[{name: String, value: *}]=} props.params\r\n * @param {{name: String, email: String}=} props.visitor\r\n * @param {Boolean=} props.chatBetweenGroups\r\n * @param {()=>void=} props.onErrorLoading\r\n * @param {()=>void=} props.onBeforeLoad\r\n * @param {()=>void=} props.onAfterLoad\r\n * @param {()=>void=} props.onChatWindowOpened\r\n * @param {()=>void=} props.onChatWindowMinimized\r\n * @param {()=>void=} props.onChatWindowHidden\r\n * @param {()=>void=} props.onChatStateChanged\r\n * @param {()=>void=} props.onChatStarted\r\n * @param {()=>void=} props.onChatEnded\r\n * @param {()=>void=} props.onMessage\r\n * @param {()=>void=} props.onTicketCreated\r\n * @param {()=>void=} props.onPrechatSurveySubmitted\r\n * @param {()=>void=} props.onRatingSubmitted\r\n * @param {()=>void=} props.onRatingCommentSubmitted\r\n *\r\n */\r\nexport default function UseLiveChat({\r\n\tshouldLoad = false,\r\n\tlicense,\r\n\tgroup = 0,\r\n\tonChatLoaded,\r\n\tparams,\r\n\tvisitor,\r\n\tchatBetweenGroups,\r\n\tonErrorLoading = () => {},\r\n\tonBeforeLoad,\r\n\tonAfterLoad,\r\n\tonChatWindowOpened,\r\n\tonChatWindowMinimized,\r\n\tonChatWindowHidden,\r\n\tonChatStateChanged,\r\n\tonChatStarted,\r\n\tonChatEnded,\r\n\tonMessage,\r\n\tonTicketCreated,\r\n\tonPrechatSurveySubmitted,\r\n\tonRatingSubmitted,\r\n\tonRatingCommentSubmitted,\r\n}) {\r\n\tconst mounted = useRef(false);\r\n\tuseEffect(() => {\r\n\t\tfunction loadLiveChatApi() {\r\n\t\t\tif (!window.LC_API) {\r\n\t\t\t\twindow.__lc = window.__lc || {};\r\n\t\t\t\twindow.__lc.license = license;\r\n\t\t\t\twindow.__lc.group = group;\r\n\t\t\t\twindow.__lc.chat_between_groups = chatBetweenGroups;\r\n\t\t\t\twindow.__lc.params = params;\r\n\t\t\t\twindow.__lc.visitor = visitor;\r\n\t\t\t\tconst lc = document.createElement(\"script\");\r\n\t\t\t\tlc.type = \"text/javascript\";\r\n\t\t\t\tlc.async = true;\r\n\t\t\t\tlc.defer = true;\r\n\t\t\t\tlc.src = \"https://cdn.livechatinc.com/tracking.js\";\r\n\t\t\t\tconst s = document.getElementsByTagName(\"script\")[0];\r\n\t\t\t\ts.parentNode.insertBefore(lc, s);\r\n\t\t\t\tlc.addEventListener(\"load\", chatLoaded);\r\n\t\t\t\tlc.addEventListener(\"error\", chatNotLoaded);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction chatLoaded() {\r\n\t\t\tif (window.LC_API) {\r\n\t\t\t\tsetCallbacks();\r\n\t\t\t\tif (onChatLoaded) onChatLoaded(window.LC_API);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction chatNotLoaded() {\r\n\t\t\tif (onErrorLoading) onErrorLoading();\r\n\t\t}\r\n\r\n\t\tfunction setCallbacks() {\r\n\t\t\tif (onBeforeLoad) window.LC_API.on_before_load = onBeforeLoad;\r\n\t\t\tif (onAfterLoad) window.LC_API.on_after_load = onAfterLoad;\r\n\t\t\tif (onChatWindowOpened) window.LC_API.on_chat_window_opened = onChatWindowOpened;\r\n\t\t\tif (onChatWindowMinimized) window.LC_API.on_chat_window_minimized = onChatWindowMinimized;\r\n\t\t\tif (onChatWindowHidden) window.LC_API.on_chat_window_hidden = onChatWindowHidden;\r\n\t\t\tif (onChatStateChanged) window.LC_API.on_chat_state_changed = onChatStateChanged;\r\n\t\t\tif (onChatStarted) window.LC_API.on_chat_started = onChatStarted;\r\n\t\t\tif (onChatEnded) window.LC_API.on_chat_ended = onChatEnded;\r\n\t\t\tif (onMessage) window.LC_API.on_message = onMessage;\r\n\t\t\tif (onTicketCreated) window.LC_API.on_ticket_created = onTicketCreated;\r\n\t\t\tif (onPrechatSurveySubmitted) window.LC_API.on_prechat_survey_submitted = onPrechatSurveySubmitted;\r\n\t\t\tif (onRatingSubmitted) window.LC_API.on_rating_submitted = onRatingSubmitted;\r\n\t\t\tif (onRatingCommentSubmitted) window.LC_API.on_rating_comment_submitted = onRatingCommentSubmitted;\r\n\t\t}\r\n\r\n\t\tif (!mounted.current && shouldLoad) {\r\n\t\t\tmounted.current = true;\r\n\t\t\twindow.addEventListener(\"load\", loadLiveChatApi);\r\n\t\t}\r\n\t\treturn () => window.removeEventListener(\"load\", loadLiveChatApi);\r\n\t}, [\r\n\t\tshouldLoad,\r\n\t\tlicense,\r\n\t\tgroup,\r\n\t\tonChatLoaded,\r\n\t\tparams,\r\n\t\tvisitor,\r\n\t\tchatBetweenGroups,\r\n\t\tonErrorLoading,\r\n\t\tonBeforeLoad,\r\n\t\tonAfterLoad,\r\n\t\tonChatWindowOpened,\r\n\t\tonChatWindowMinimized,\r\n\t\tonChatWindowHidden,\r\n\t\tonChatStateChanged,\r\n\t\tonChatStarted,\r\n\t\tonChatEnded,\r\n\t\tonMessage,\r\n\t\tonTicketCreated,\r\n\t\tonPrechatSurveySubmitted,\r\n\t\tonRatingSubmitted,\r\n\t\tonRatingCommentSubmitted,\r\n\t]);\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { setTimeDisplayed, setTimeMeridian, getTimeDisplayed, getTimeMeridian } from \"globals/claims\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport Select from \"react-select\";\r\nimport \"./TimePickerV2.scss\";\r\n\r\n/**\r\n *\r\n * @param {Object} props\r\n * @param {import(\"react-select\").Styles=} props.customStyle\r\n */\r\nconst TimePickerV2 = ({ customStyle }) => {\r\n\tconst dispatch = useDispatch();\r\n\tconst meridian = useSelector(getTimeMeridian);\r\n\tconst timePicked = useSelector(getTimeDisplayed);\r\n\tconst [mer, changeMer] = useState(meridian || \"\");\r\n\tconst [hour, setHour] = useState(timePicked?.substr(0, 2) || \"\");\r\n\tconst [minute, setMinute] = useState(timePicked?.substr(3, timePicked.length) || \"\");\r\n\tconst [timeChanged, setTimeChanged] = useState(false);\r\n\tconst hourArray = [];\r\n\tfor (let i = 1; i <= 12; i++) {\r\n\t\thourArray.push(i);\r\n\t}\r\n\tconst hours = hourArray.map((hours, i) => {\r\n\t\treturn { value: `${hours < 10 ? 0 : \"\"}${hours}`, label: `${hours < 10 ? 0 : \"\"}${hours}` };\r\n\t});\r\n\r\n\tconst minutesArray = [];\r\n\tfor (let i = 0; i <= 59; i++) {\r\n\t\tminutesArray.push(i);\r\n\t}\r\n\tconst minutes = minutesArray.map((minutes, i) => {\r\n\t\treturn { value: `${minutes < 10 ? 0 : \"\"}${minutes}`, label: `${minutes < 10 ? 0 : \"\"}${minutes}` };\r\n\t});\r\n\r\n\t/** @type {import(\"react-select\").Styles} */\r\n\tconst customStyles = {\r\n\t\toption: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tbackgroundColor: state.isSelected ? \"#002868\" : state.isFocused ? \"#adcdff\" : \"#f0f3f6\",\r\n\t\t\tcolor: state.isSelected ? \"#fff\" : \"#212529\",\r\n\t\t\tfontWeight: \"normal\",\r\n\t\t\tpadding: \"0.5rem 1.3rem\",\r\n\t\t}),\r\n\t\tsingleValue: (_, state) => {\r\n\t\t\tconst opacity = state.isDisabled ? 0.5 : 1;\r\n\t\t\tconst transition = \"\";\r\n\t\t\tconst style = {\r\n\t\t\t\tborderStyle: \"none\",\r\n\t\t\t\tfontWeight: 800,\r\n\t\t\t};\r\n\r\n\t\t\treturn { ...style, opacity, transition };\r\n\t\t},\r\n\t\tcontrol: provided => ({\r\n\t\t\t...provided,\r\n\t\t\tcolor: \"#212529\",\r\n\t\t\twidth: \"100%\",\r\n\t\t\theight: 33.3,\r\n\t\t\tpadding: \"0.5rem .5rem\",\r\n\t\t\tborderRadius: \"0\",\r\n\t\t\tborder: \"none\",\r\n\t\t\tbackgroundColor: \"#fff\",\r\n\t\t}),\r\n\t\tdropdownIndicator: provided => ({\r\n\t\t\t...provided,\r\n\t\t\topacity: 1,\r\n\t\t\tfontSize: 12,\r\n\t\t\tcolor: \"#f0f3f6\",\r\n\t\t\tposition: \"absolute\",\r\n\t\t\tright: -3,\r\n\t\t\tdisplay: \"grid\",\r\n\t\t\tgridTemplateColumns: \"1fr\",\r\n\t\t\tbottom: -11,\r\n\t\t\tjustifyContent: \"center\",\r\n\t\t}),\r\n\t\tindicatorSeparator: provided => ({\r\n\t\t\t...provided,\r\n\t\t\tvisibility: \"hidden\",\r\n\t\t}),\r\n\t\tplaceholder: () => ({\r\n\t\t\tfontWeight: \"bold\",\r\n\t\t\topacity: 0.5,\r\n\t\t}),\r\n\t\tinput: () => ({\r\n\t\t\tmarginTop: 0,\r\n\t\t}),\r\n\t\tvalueContainer: provided => ({\r\n\t\t\t...provided,\r\n\t\t\tpadding: \"1px 14px\",\r\n\t\t}),\r\n\t};\r\n\r\n\tconst changeHour = e => {\r\n\t\t// const newTime = `${hour}:${minute}`;\r\n\t\tif (e.value !== undefined) setHour(e.value);\r\n\t\tsetTimeChanged(true);\r\n\r\n\t\t// dispatch(setTimeDisplayed(newTime));\r\n\t};\r\n\tconst changeMinute = e => {\r\n\t\t// const newTime = `${hour}:${minute}`;\r\n\t\tif (e.value !== undefined) setMinute(e.value);\r\n\t\tsetTimeChanged(true);\r\n\t\t// dispatch(setTimeDisplayed(newTime));\r\n\t};\r\n\r\n\tconst switchAMPM = e => {\r\n\t\tif (e.value !== undefined) {\r\n\t\t\tdispatch(setTimeMeridian(e.value));\r\n\t\t\tchangeMer(e.value);\r\n\t\t}\r\n\r\n\t\tsetTimeChanged(true);\r\n\t};\r\n\tuseEffect(() => {\r\n\t\tif (timeChanged) {\r\n\t\t\tconst newTime = `${hour}:${minute}`;\r\n\t\t\tdispatch(setTimeDisplayed(newTime));\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tsetTimeChanged(false);\r\n\t\t\t}, 1000);\r\n\t\t}\r\n\t}, [timeChanged, dispatch, hour, minute]);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t:\r\n\t\t\t\t\r\n\t\t\t\t{!customStyle && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default TimePickerV2;\r\n","import React from \"react\";\r\n\r\nfunction Spinner() {\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default Spinner;\r\n","import React from \"react\";\r\nimport { isLoaderVisible, getLoaderMessage } from \"globals/overlays\";\r\nimport { useSelector } from \"react-redux\";\r\nimport Spinner from \"./Spinner\";\r\n\r\nimport \"./LoadSpinner.scss\";\r\n\r\n/**\r\n * A custom css-based spinner which\r\n * uses divs as dots\r\n * supports custom messages pulled from redux state\r\n */\r\nfunction LoadSpinner() {\r\n\tconst active = useSelector(isLoaderVisible);\r\n\tconst message = useSelector(getLoaderMessage);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t{active && }\r\n\t\t\t{/* {active && \"\"} */}\r\n\t\t\t

\r\n\t\t\t\t{\"Loading \"}\r\n\t\t\t\t.\r\n\t\t\t\t.\r\n\t\t\t\t.\r\n\t\t\t

\r\n\t\t\t{message && (\r\n\t\t\t\t

\r\n\t\t\t\t\t{`${message} `}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t.\r\n\t\t\t\t\t\t.\r\n\t\t\t\t\t\t.\r\n\t\t\t\t\t\r\n\t\t\t\t

\r\n\t\t\t)}\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default LoadSpinner;\r\n","import React from \"react\";\r\nimport { useTransition, animated } from \"react-spring\";\r\nimport { FaBars, FaTimes } from \"react-icons/fa\";\r\n\r\nimport \"./ToggleButton.scss\";\r\n\r\nconst AnimatedBars = animated(FaBars);\r\nconst AnimatedTimes = animated(FaTimes);\r\n\r\nfunction ToggleButton({ toggleMenu, menuIsOpen }) {\r\n\tconst transitions = useTransition(menuIsOpen, null, {\r\n\t\tfrom: { position: \"absolute\", opacity: 0 },\r\n\t\tenter: { opacity: 1 },\r\n\t\tleave: { opacity: 0 },\r\n\t});\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{transitions.map(({ item, key, props }) =>\r\n\t\t\t\t\titem ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default ToggleButton;\r\n","import React from \"react\";\r\n\r\nimport \"./PersonInfo.scss\";\r\n\r\n/**\r\n * Displays a persons's info card with toggleable dropdown\r\n * @param {Object} props\r\n */\r\nexport default function PersonInfo({ image, imageWebp, name, branch, description, position }) {\r\n\t/**\r\n\t *\r\n\t * @param {React.MouseEvent} e\r\n\t */\r\n\tfunction toggleDescription(e) {\r\n\t\tconst findRootNode = node => {\r\n\t\t\tif (!node) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\treturn node?.classList?.contains(\"person-container\") ? node : findRootNode(node.parentNode);\r\n\t\t};\r\n\r\n\t\tconst person_container = findRootNode(e.currentTarget);\r\n\r\n\t\tif (!person_container) return;\r\n\r\n\t\t// ensure that the description has a height { can't transition to auto}\r\n\t\tif (description) {\r\n\t\t\tconst description = person_container.querySelector(\".person-description\");\r\n\t\t\tlet height = description.scrollHeight;\r\n\t\t\tif (!person_container.classList.contains(\"focused\")) {\r\n\t\t\t\t// expand description\r\n\t\t\t\tdescription.style.height = height + \"px\";\r\n\t\t\t\tdescription.addEventListener(\"transitionend\", function fdd(e) {\r\n\t\t\t\t\tdescription.removeEventListener(\"transitionend\", fdd);\r\n\t\t\t\t\tdescription.style.height = null;\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// collapse description\r\n\t\t\t\tlet transitions = description.style.transition;\r\n\t\t\t\tdescription.style.height = height + \"px\";\r\n\t\t\t\tdescription.style.transition = \"\";\r\n\r\n\t\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\t\tdescription.style.transition = transitions;\r\n\t\t\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\t\t\tdescription.style.height = \"0px\";\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/** Remove class from all who possess it*/\r\n\t\tconst clearFocused = () => {\r\n\t\t\tArray.from(document.getElementsByClassName(\"focused\")).map(e => e.classList.toggle(\"focused\"));\r\n\t\t};\r\n\r\n\t\tif (person_container.classList.contains(\"focused\")) {\r\n\t\t\tclearFocused();\r\n\t\t} else {\r\n\t\t\tclearFocused();\r\n\t\t\tperson_container.classList.toggle(\"focused\");\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{image && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{name}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

{name}

\r\n\t\t\t\t\t\t

{position}

\r\n\t\t\t\t\t\t{branch &&

{branch}

}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t{description && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

{description}

\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t
\r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport PersonInfo from \"components/template/AboutUs/components/PersonInfo\";\r\n\r\nimport \"./AboutUs.scss\";\r\n\r\nexport default function AboutUs({ title, smallTitle, description, persons }) {\r\n\treturn (\r\n\t\t
\r\n\t\t\t{title ?

{title}

: smallTitle &&

{smallTitle}

}\r\n\t\t\t

{description}

\r\n\r\n\t\t\t
\r\n\t\t\t\t{Array.isArray(persons) ? (\r\n\t\t\t\t\tpersons.map((person, key) => (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t))\r\n\t\t\t\t) : (\r\n\t\t\t\t\t
Currently Vacant
\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n","import React from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\n\r\nfunction CustomNavLink({ to, children }) {\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default CustomNavLink;\r\n","import React, { Suspense } from \"react\";\r\nimport Loader from \"Loader\";\r\n\r\n/**\r\n *\r\n * @param {React.LazyExoticComponent>} LazyComponent\r\n * @param {String|JSX.Element=} fallback\r\n */\r\nconst withSuspense = (LazyComponent, fallback) => {\r\n\treturn props => (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default withSuspense;\r\n","export default __webpack_public_path__ + \"static/media/delete_icon.94cec7db.svg\";","import { dNet } from \"api/Middleware\";\r\nimport { checkKey } from \"helpers/auth\";\r\n\r\nexport const auth = async () => {\r\n\tlet token = \"\";\r\n\r\n\tawait dNet.post(\"/auth/token\").then(res => {\r\n\t\ttoken = res.data[0].Response[0].key;\r\n\t});\r\n\r\n\treturn token;\r\n};\r\n\r\nexport const mwGlobalNameSearch = async (payload) => {\r\n\tlet globalId = \"\";\r\n\tlet success = false;\r\n\tlet details = \"\";\r\n\r\n\tpayload = {\r\n\t\tparams: {\r\n\t\t\ttrn: payload.national_id,\r\n\t\t\tdob: payload.dob,\r\n\t\t\tgender: payload.gender,\r\n\t\t\tis_a_company: payload.is_a_company,\r\n\t\t\tcompany_name: payload.company_name,\r\n\t\t\tnational_id_type: payload.national_id_type,\r\n\t\t},\r\n\t};\r\n\tconst endpoint = `/globalNameSearch`;\r\n\tconst reqType = \"get\";\r\n\r\n\tlet response = {};\r\n\tresponse = await checkKey({ endpoint, payload, reqType });\r\n\tglobalId = response.global_name_id;\r\n\tsuccess = response.success;\r\n\tdetails = response.hasOwnProperty(\"Details\") ? response.Details : \"\";\r\n\r\n\treturn { global_name_id: globalId, success, details };\r\n};\r\n\r\nexport const mwGlobalNameCompanySearch = async (payload) => {\r\n\tlet globalId = \"\";\r\n\tlet success = false;\r\n\tlet details = \"\";\r\n\r\n\tpayload = {\r\n\t\tparams: {\r\n\t\t\ttrn: payload.national_id,\r\n\t\t\tcompany_name: payload.company_name,\r\n\t\t\tdob: payload.dob,\r\n\t\t\tgender: payload.gender,\r\n\t\t\tis_a_company: payload.is_a_company,\r\n\t\t},\r\n\t};\r\n\tconst endpoint = `/globalNameSearchCompany`;\r\n\tconst reqType = \"get\";\r\n\r\n\tlet response = {};\r\n\tresponse = await checkKey({ endpoint, payload, reqType });\r\n\tglobalId = response.global_name_id;\r\n\tsuccess = response.success;\r\n\tdetails = response.hasOwnProperty(\"Details\") ? response.Details : \"\";\r\n\r\n\treturn { global_name_id: globalId, success, details };\r\n};\r\n\r\nexport const globalNameGet = async (globalId) => {\r\n\tlet globalName,\r\n\t\tresponse = {};\r\n\r\n\tconst endpoint = `/globalNameGet`;\r\n\tconst reqType = \"get\";\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tglobalNameId: globalId,\r\n\t\t},\r\n\t};\r\n\r\n\tresponse = await checkKey({ endpoint, payload, reqType });\r\n\tglobalName = response.global_name;\r\n\r\n\t// await dNet.get(`/globalNameGet?token=${token}&globalNameId=${encodeURIComponent(globalId)}`).then(res => {\r\n\t// globalName = res.data.global_name\r\n\t// })\r\n\r\n\treturn globalName;\r\n};\r\n\r\nexport const globalNamePolicies = async (globalId) => {\r\n\tlet globalPolicies = {};\r\n\r\n\tconst endpoint = `/globalNamePolicies`;\r\n\tconst payload = {\r\n\t\tparams: {\r\n\t\t\tglobalNameId: globalId,\r\n\t\t\tsource_type: \"\",\r\n\t\t},\r\n\t};\r\n\r\n\tconst reqType = \"get\";\r\n\r\n\tglobalPolicies = await checkKey({ endpoint, payload, reqType });\r\n\r\n\t// await dNet.get(`/globalNamePolicies?token=${token}&globalNameId=${encodeURIComponent(globalId)}`).then(res => {\r\n\t// globalPolicies = res\r\n\t// })\r\n\r\n\t// globalPolicies = checkKey({endpoint, payload});\r\n\r\n\treturn globalPolicies;\r\n};\r\n\r\nexport const globalNameSubmit = async (payload) => {\r\n\tconst endpoint = `/globalNameSubmit`;\r\n\r\n\tlet response = {};\r\n\tresponse = await checkKey({ endpoint, payload});\r\n\r\n\treturn response;\r\n};\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { changePolicy, fullLogout } from \"globals/misc\";\r\n\r\nconst defaultState = {\r\n\tsideBarInfo: {\r\n\t\tmode: \"\",\r\n\t\tquicktip: { externalContent: \"\", quicktipContainerContent: \"\", styling: \"\" }\r\n\t},\r\n\tpreviousNavigationLink: {\r\n\t\tpageName: \"\",\r\n\t\tlink: \"\",\r\n\t\tselectedPolicyEditorTab: {\r\n\t\t\tmainFlowIndex: null,\r\n\t\t\tsubFlowIndex: null\r\n\t\t}\r\n\t},\r\n\tpayBalanceUserProgress: true,\r\n\tmissingDocuments: [],\r\n\tnotification: [],\r\n\tuserData: {},\r\n\tcurrentUser: {},\r\n\tpolicyHolders: [],\r\n\tisLoggedIn: false,\r\n\tuserId: \"\",\r\n\ttoken: \"\",\r\n\tredirectTarget: \"/\",\r\n\tpolicies: [],\r\n\tpromoCodes: [],\r\n\trenewablePolicies: [],\r\n\textendablePolicies: [],\r\n\tcoverNotePolicies: [],\r\n\tfetchExtendableSuccessfully: false,\r\n\tactivePolicy: {},\r\n\tactivePolicies: [],\r\n\tactiveRisk: {},\r\n\tbreakdown: {},\r\n\totherCalculations: {},\r\n\tauthFormInfo: {\r\n\t\tTRN: null,\r\n\t\tDOB: null,\r\n\t\tgender: null,\r\n\t},\r\n\tstickyNavHeaderVisible: null,\r\n\tvaluationStatus: null,\r\n\thalfPayment: {},\r\n\tpaymentPlans: [],\r\n\tpaymentType: {},\r\n\tpersistUser: false,\r\n\ttransactionType: null,\r\n\tpolicyPaymentPlan: {},\r\n\tmissingUserData: [],\r\n\tnoLossDeclarationStatus: false,\r\n\thasMotorPolicies: false,\r\n\thasHomePolicies: false,\r\n\thasLiabilityPolicies: false,\r\n\tselectedSession: {\r\n\t\tisSessionCreated: false,\r\n\t\tsessionId: null\r\n\t},\r\n\r\n};\r\n\r\nlet authSlice = createSlice({\r\n\tname: \"auth\",\r\n\tinitialState: defaultState,\r\n\treducers: {\r\n\t\tlogin: state => {\r\n\t\t\tstate.isLoggedIn = true;\r\n\t\t},\r\n\t\tsetNotification: (state, action) => {\r\n\t\t\tstate.notification = action.payload;\r\n\t\t},\r\n\t\tsetSideBarInfo: (state, action) => {\r\n\t\t\tstate.sideBarInfo = action.payload;\r\n\t\t},\r\n\t\tsetPayBalanceUserProgress: (state, action) => {\r\n\t\t\tstate.payBalanceUserProgress = action.payload;\r\n\t\t},\r\n\t\tsetPreviousNavigationLink: (state, action) => {\r\n\t\t\tstate.previousNavigationLink = action.payload;\r\n\t\t},\r\n\t\tsetMissingDocuments: (state, action) => {\r\n\t\t\tstate.missingDocuments = action.payload;\r\n\t\t},\r\n\t\tsetToken: (state, action) => {\r\n\t\t\tstate.token = action.payload;\r\n\t\t},\r\n\t\tsetStickyNavHeaderVisible: (state, action) => {\r\n\t\t\tstate.stickyNavHeaderVisible = action.payload;\r\n\t\t},\r\n\t\tsetRedirectTarget: (state, action) => {\r\n\t\t\tstate.redirectTarget = action.payload;\r\n\t\t},\r\n\t\tsetTransactionType: (state, action) => {\r\n\t\t\tstate.transactionType = action.payload;\r\n\t\t},\r\n\t\tsetValuationStatus: (state, action) => {\r\n\t\t\tstate.valuationStatus = action.payload;\r\n\t\t},\r\n\t\tsetUserFormData: (state, action) => {\r\n\t\t\tstate.userData = action.payload;\r\n\t\t},\r\n\t\tsetExtendablePolicies: (state, action) => {\r\n\t\t\tstate.extendablePolicies = action.payload;\r\n\t\t},\r\n\t\tsetCurrentUser: (state, action) => {\r\n\t\t\tstate.currentUser = action.payload;\r\n\t\t},\r\n\t\tsetPolicyHolders: (state, action) => {\r\n\t\t\tstate.policyHolders = action.payload;\r\n\t\t},\r\n\r\n\t\tsetExtendablePoliciesFetched: (state, action) => {\r\n\t\t\tstate.fetchExtendableSuccessfully = action.payload;\r\n\t\t},\r\n\t\tsetPaymentType: (state, action) => {\r\n\t\t\tstate.paymentType = action.payload;\r\n\t\t},\r\n\t\tsetUserId: (state, action) => {\r\n\t\t\tstate.userId = action.payload;\r\n\t\t},\r\n\t\tsetPolicies: (state, action) => {\r\n\t\t\tstate.policies = action.payload;\r\n\t\t},\r\n\t\tsetActivePolicies: (state, action) => {\r\n\t\t\tstate.activePolicies = action.payload;\r\n\t\t},\r\n\t\tsetRenewablePolicies: (state, action) => {\r\n\t\t\tstate.renewablePolicies = action.payload;\r\n\t\t},\r\n\r\n\t\tsetCoverNotePolicies: (state, action) => {\r\n\t\t\tstate.coverNotePolicies = action.payload;\r\n\t\t},\r\n\r\n\t\tsetActivePolicy: (state, action) => {\r\n\t\t\tstate.activePolicy = action.payload;\r\n\t\t},\r\n\r\n\t\tsetActiveRisk: (state, action) => {\r\n\t\t\tstate.activeRisk = action.payload;\r\n\t\t},\r\n\r\n\t\tsetBreakdown: (state, action) => {\r\n\t\t\tstate.breakdown = action.payload;\r\n\t\t},\r\n\t\tsetOtherCalculations: (state, action) => {\r\n\t\t\tstate.otherCalculations = action.payload;\r\n\t\t},\r\n\t\tsetAuthFormInfo: (state, action) => {\r\n\t\t\tstate.authFormInfo = action.payload;\r\n\t\t},\r\n\t\tsetHalfPayment: (state, action) => {\r\n\t\t\tstate.halfPayment = action.payload;\r\n\t\t},\r\n\t\tsetPaymentPlans: (state, action) => {\r\n\t\t\tstate.paymentPlans = action.payload;\r\n\t\t},\r\n\t\taddPromoCode: (state, action) => {\r\n\t\t\tstate.promoCodes.push(action.payload);\r\n\t\t},\r\n\t\tremovePromoCodeByIndex: (state, action) => {\r\n\t\t\tstate.promoCodes.splice(action.payload, 1);\r\n\t\t},\r\n\t\tsetPersistUser: (state, action) => {\r\n\t\t\tstate.persistUser = action.payload;\r\n\t\t},\r\n\t\tsetPolicyPaymentPlan: (state, action) => {\r\n\t\t\tstate.policyPaymentPlan = action.payload;\r\n\t\t},\r\n\t\tsetMissingUserData: (state, action) => {\r\n\t\t\tstate.missingUserData = action.payload;\r\n\t\t},\r\n\t\tsetNoLossDeclarationStatus: (state, action) => {\r\n\t\t\tstate.noLossDeclarationStatus = action.payload;\r\n\t\t},\r\n\t\tsetHasMotorPolicies: (state, action) => {\r\n\t\t\tstate.hasMotorPolicies = action.payload;\r\n\t\t},\r\n\t\tsetHasHomePolicies: (state, action) => {\r\n\t\t\tstate.hasHomePolicies = action.payload;\r\n\t\t},\r\n\t\tsetHasLiabilitiesPolicies: (state, action) => {\r\n\t\t\tstate.hasLiabilityPolicies = action.payload;\r\n\t\t},\r\n\t\tsetSelectedSession: (state, action) => {\r\n\t\t\tstate.selectedSession = action.payload;\r\n\t\t},\r\n\t\tlogout: () => defaultState,\r\n\t},\r\n\textraReducers: builder => {\r\n\t\tbuilder.addCase(fullLogout, (state, action) => defaultState);\r\n\t\tbuilder.addCase(changePolicy, (state, action) => {\r\n\t\t\tstate.breakdown = defaultState.breakdown;\r\n\t\t\tstate.otherCalculations = defaultState.otherCalculations;\r\n\t\t\tstate.halfPayment = defaultState.halfPayment;\r\n\t\t\tstate.paymentPlans = defaultState.paymentPlans;\r\n\t\t\tstate.paymentType = defaultState.paymentType;\r\n\t\t});\r\n\t},\r\n});\r\n\r\n\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getSideBarInfo = ({ auth: state }) => state.sideBarInfo;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getUser = ({ auth: state }) => state.currentUser;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getPolicyHolders = ({ auth: state }) => state.policyHolders;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getNotification = ({ auth: state }) => state.notification;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getPreviousNavigationLink = ({ auth: state }) => state.previousNavigationLink;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getPayBalanceUserProgress = ({ auth: state }) => state.payBalanceUserProgress;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getMissingDocuments = ({ auth: state }) => state.missingDocuments;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getUserFormData = ({ auth: state }) => state.userData;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const didFetchExtendablePolices = ({ auth: state }) => state.fetchExtendableSuccessfully;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getAuthState = ({ auth: state }) => state.isLoggedIn;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getStickyNavHeaderVisible = ({ auth: state }) => state.stickyNavHeaderVisible;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getToken = ({ auth: state }) => state.token;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getRedirectTarget = ({ auth: state }) => state.redirectTarget;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getUserId = ({ auth: state }) => state.userId;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getPolicies = ({ auth: state }) => state.policies;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getPaymentType = ({ auth: state }) => state.paymentType;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getRenewablePolicies = ({ auth: state }) => state.renewablePolicies;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getCoverNotePolicies = ({ auth: state }) => state.coverNotePolicies;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getExtendablePolicies = ({ auth: state }) => state.extendablePolicies;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getValuationStatus = ({ auth: state }) => state.valuationStatus;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getTransactionType = ({ auth: state }) => state.transactionType;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getActivePolicy = ({ auth: state }) => state.activePolicy;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getActivePolicies = ({ auth: state }) => state.activePolicies;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getActiveRisk = ({ auth: state }) => state.activeRisk;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getBreakdown = ({ auth: state }) => state.breakdown;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getPromoCodesApplied = ({ auth: state }) => state.promoCodes;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getOtherCalculations = ({ auth: state }) => state.otherCalculations;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getAuthFormInfo = ({ auth: state }) => state.authFormInfo;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getHalfPayment = ({ auth: state }) => state.halfPayment;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getPaymentPlans = ({ auth: state }) => state.paymentPlans;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getPolicyPaymentPlan = ({ auth: state }) => state.policyPaymentPlan;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getMissingUserData = ({ auth: state }) => state.missingUserData;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getNoLossDeclarationStatus = ({ auth: state }) => state.noLossDeclarationStatus;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getHasMotorPolicies = ({ auth: state }) => state.hasMotorPolicies;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getHasHomePolicies = ({ auth: state }) => state.hasHomePolicies;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getHasLiabilitiesPolicies = ({ auth: state }) => state.hasLiabilityPolicies;\r\n\r\n/** @param {{auth: defaultState}} state */\r\nexport const getSelectedSession = ({ auth: state }) => state.selectedSession;\r\n\r\nexport const {\r\n\tsetSideBarInfo,\r\n\tsetMissingDocuments,\r\n\tsetPreviousNavigationLink,\r\n\tsetPayBalanceUserProgress,\r\n\tsetNotification,\r\n\tlogin,\r\n\tlogout,\r\n\tsetToken,\r\n\tsetStickyNavHeaderVisible,\r\n\tsetRedirectTarget,\r\n\tsetUserFormData,\r\n\tsetCurrentUser,\r\n\tsetPolicyHolders,\r\n\tsetBreakdown,\r\n\tsetUserId,\r\n\tsetPolicies,\r\n\tsetActivePolicy,\r\n\tsetActivePolicies,\r\n\tsetActiveRisk,\r\n\tsetRenewablePolicies,\r\n\tsetCoverNotePolicies,\r\n\tsetAuthFormInfo,\r\n\tsetHalfPayment,\r\n\tsetPaymentPlans,\r\n\tsetExtendablePoliciesFetched,\r\n\tsetPaymentType,\r\n\tsetValuationStatus,\r\n\tsetOtherCalculations,\r\n\tsetExtendablePolicies,\r\n\tsetPersistUser,\r\n\tsetTransactionType,\r\n\tsetPolicyPaymentPlan,\r\n\taddPromoCode,\r\n\tremovePromoCodeByIndex,\r\n\tsetMissingUserData,\r\n\tsetNoLossDeclarationStatus,\r\n\tsetHasMotorPolicies,\r\n\tsetHasHomePolicies,\r\n\tsetHasLiabilitiesPolicies,\r\n\tsetSelectedSession,\r\n} = authSlice.actions;\r\nexport default authSlice.reducer;\r\n\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { fullLogout } from \"globals/misc\";\r\n\r\nconst defaultState = {\r\n\tpaymentResponse: {\r\n\t\tsession: null,\r\n\t\tsourceOfFunds: null,\r\n\t}, \r\n\tpaymentStatus:\"\",\r\n\tpaymentOverDue:false, \r\n\tpaymentFormData: {\r\n\t\tfirstName: null,\r\n\t\tlastName: null,\r\n\t\tpaymentType: {},\r\n\t\tpaymentAmount: \"0.00\",\r\n\t\tnationalId: null,\r\n\t\tpolicyNumber: null,\r\n\t\tcurrency: null,\r\n\t\tpaymentPurpose: null,\r\n\t\tcodes: null,\r\n\t\tpremiumPA_UM: null,\r\n\t\textensions: null,\r\n\t\tpaymentMethod: null,\r\n\t\treceiveReceiptOption: null,\r\n\t\treceiveReceiptAtEmail: null,\r\n\t\tGCT: null,\r\n\t\tpremium: null,\r\n\t\ttotalPayments: null,\r\n\t\triskId: null,\r\n\t\tnewMarketValue: null,\r\n\t\ttransactionId: null,\r\n\t},\r\n\tpaymentSchedule: null,\r\n\tpaymentScheduleData: null,\r\n};\r\n\r\nlet paymentSlice = createSlice({\r\n\tname: \"payment\",\r\n\tinitialState: defaultState,\r\n\treducers: { \r\n\t\tsetPaymentStatus: (state, action) => {\r\n\t\t\tstate.paymentStatus = action.payload;\r\n\t\t},\r\n\t\tsetPaymentResponse: (state, action) => {\r\n\t\t\tstate.paymentResponse = action.payload;\r\n\t\t},\r\n\t\tsetPaymentOverDue: (state, action) => {\r\n\t\t\tstate.paymentOverDue = action.payload;\r\n\t\t}, \r\n\t\t/**\r\n\t\t * @param {Object} action\r\n\t\t * @param {Object} action.payload\r\n\t\t * @param {Object} action.payload.firstName\r\n\t\t * @param {Object} action.payload.lastName\r\n\t\t * @param {Object} action.payload.paymentType\r\n\t\t * @param {Object} action.payload.codes\r\n\t\t * @param {String} action.payload.currency\r\n\t\t * @param {String} action.payload.paymentAmount\r\n\t\t * @param {String} action.payload.paymentPurpose\r\n\t\t * @param {String} action.payload.nationalId\r\n\t\t * @param {String} action.payload.policyNumber\r\n\t\t * @param {Object} action.payload.premiumPA_UM\r\n\t\t * @param {Object} action.payload.extensions\r\n\t\t * @param {String=} action.payload.paymentMethod\r\n\t\t * @param {String=} action.payload.receiveReceiptOption\r\n\t\t * @param {String=} action.payload.receiveReceiptAtEmail\r\n\t\t * @param {String=} action.payload.GCT\r\n\t\t * @param {String=} action.payload.premium\r\n\t\t * @param {Number=} action.payload.totalPayments\r\n\t\t * @param {String=} action.payload.riskId\r\n\t\t * @param {Number=} action.payload.newMarketValue\r\n\t\t * @param {String=} action.payload.transactionId\r\n\t\t */\r\n\t\tsetPaymentFormData: (state, action) => {\r\n\t\t\tstate.paymentFormData = {\r\n\t\t\t\tpaymentMethod: null,\r\n\t\t\t\treceiveReceiptAtEmail: null,\r\n\t\t\t\treceiveReceiptOption: null,\r\n\t\t\t\tGCT: null,\r\n\t\t\t\tpremium: null,\r\n\t\t\t\ttotalPayments: null,\r\n\t\t\t\triskId: null,\r\n\t\t\t\tnewMarketValue: null,\r\n\t\t\t\ttransactionId: null,\r\n\t\t\t\t...action.payload,\r\n\t\t\t};\r\n\t\t},\r\n\t\tsetPaymentSchedule: (state, action) => {\r\n\t\t\tstate.paymentSchedule = action.payload;\r\n\t\t},\r\n\t\tsetPaymentScheduleData: (state, action) => {\r\n\t\t\tstate.paymentScheduleData = action.payload;\r\n\t\t},\r\n\r\n\t\tclearPaymentForm: state => {\r\n\t\t\tstate.paymentFormData = defaultState.paymentFormData;\r\n\t\t},\r\n\r\n\t\tclearPayments: () => defaultState,\r\n\t},\r\n\textraReducers: builder => {\r\n\t\tbuilder.addCase(fullLogout, (state, action) => defaultState);\r\n\t},\r\n});\r\n/** @param {{payment: defaultState}} state */\r\nexport const getPaymentStatus = ({ payment: state }) => state.paymentStatus;\r\n \r\n/** @param {{payment: defaultState}} state */\r\nexport const getPaymentOverDue = ({ payment: state }) => state.paymentOverDue;\r\n \r\n/** @param {{payment: defaultState}} state */\r\nexport const getPaymentResponse = ({ payment: state }) => state.paymentResponse;\r\n\r\n/** @param {{payment: defaultState}} state */\r\nexport const getPaymentSchedule = ({ payment: state }) => state.paymentSchedule;\r\n\r\n/** @param {{payment: defaultState}} state */\r\nexport const getPaymentScheduleData = ({ payment: state }) => state.paymentScheduleData;\r\n\r\n/** @param {{payment: defaultState}} state */\r\nexport const getPaymentFormData = ({ payment: state }) => state.paymentFormData;\r\n\r\nexport const {\r\n\tsetPaymentStatus,\r\n\tsetPaymentOverDue, \r\n\tsetPaymentResponse,\r\n\tsetPaymentFormData,\r\n\tclearPaymentForm,\r\n\tclearPayments,\r\n\tsetPaymentScheduleData,\r\n\tsetPaymentSchedule,\r\n} = paymentSlice.actions;\r\n\r\nexport default paymentSlice.reducer;\r\n","const MARKETVALUEMINIMUM = {\r\n\tMPCC: 400001,\r\n\tMPCCS: 400001,\r\n\tMCOC: 400001,\r\n\tMCOCS: 400001,\r\n\tMCPC: 400001,\r\n\tMUWC: 2500000,\r\n\tMUWCS: 2500000,\r\n\tMPRC: 3000000,\r\n\tMPRCS: 3000000,\r\n\tMLXC: 6000000,\r\n\tMLXCC: 6000000,\r\n\tMPPC: 500000,\r\n\tMPPCB: 500000,\r\n\tMPPCS: 500000,\r\n\tMPPCBS: 500000,\r\n\tMPPTF: 500000,\r\n};\r\n\r\nconst ADDITIONALPREMIUMMINIMUM = {\r\n\tMPCCS: 2000,\r\n\tMCOCS: 2000,\r\n\tMPRC: 2000,\r\n\tMPRCC: 2000,\r\n\tMUWC: 2000,\r\n\tMUWCC: 2000,\r\n\tMLXC: 2000,\r\n\tMLXCC: 2000,\r\n\tMMCCS: 2000,\r\n\tMPCCN: 2000,\r\n\tMPCC: 2500,\r\n\tMCOC: 2500,\r\n\tMPCTF: 2500,\r\n\tMCOTF: 2500,\r\n\tMCPC: 2500,\r\n\tMPPC: 10000,\r\n\tMPPCB: 10000,\r\n\tMPPCS: 10000,\r\n\tMPPCBS: 10000,\r\n\tMPPTF: 10000,\r\n};\r\n\r\nconst TRANSWORDINGS = {\r\n\tDecreasedRefund: \"Decrease Sum Insured - Refund Premium U.\",\r\n\tDecreasedAdditional: \"Decrease Sum Insured -Add't Premium U.\",\r\n\tIncreasedRefund: \"Increase Sum Insured - Refund U.\",\r\n\tIncreasedAdditional: \"Increase Sum Insured - Add't Premium U.\",\r\n};\r\n\r\nconst FILESNEEDED = {\r\n\tValuation: \"A Valuation Report (including photographs of the vehicle) for all comprehensive policies\",\r\n\tRegistration: \"Motor Vehicle Registration\",\r\n};\r\n\r\nexport { MARKETVALUEMINIMUM, ADDITIONALPREMIUMMINIMUM, TRANSWORDINGS, FILESNEEDED };\r\n","const { useState, useEffect } = require(\"react\");\r\n\r\nconst SMALL_MOBILE_MAX_WIDTH = 400,\r\n\tMEDIUM_MOBILE_MAX_WIDTH = 530,\r\n\tMOBILE_MAX_WIDTH = 767.98,\r\n\tTABLET_MAX_WIDTH = 991.98,\r\n\tDESKTOP_MAX_WIDTH = 1200;\r\n\r\nconst SCREEN_SMALL_MOBILE = \"small-mobile\",\r\n\tSCREEN_MEDIUM_MOBILE = \"medium-mobile\",\r\n\tSCREEN_MOBILE = \"mobile\",\r\n\tSCREEN_TABLET = \"tablet\",\r\n\tSCREEN_DESKTOP = \"desktop\",\r\n\tSCREEN_LARGE_DESKTOP = \"large-desktop\";\r\n\r\n/**\r\n * Hook to specify the type of screen being viewd from by using the viewport width\r\n */\r\nfunction useScreenType() {\r\n\tconst [screenWidth, setScreenWidth] = useState(window.innerWidth);\r\n\r\n\tconst getScreenType = width =>\r\n\t\t\twidth < SMALL_MOBILE_MAX_WIDTH\r\n\t\t\t? SCREEN_SMALL_MOBILE\r\n\t\t\t: width < MEDIUM_MOBILE_MAX_WIDTH\r\n\t\t\t? SCREEN_MEDIUM_MOBILE\r\n\t\t\t: width < MOBILE_MAX_WIDTH\r\n\t\t\t? SCREEN_MOBILE\r\n\t\t\t: width < TABLET_MAX_WIDTH\r\n\t\t\t? SCREEN_TABLET\r\n\t\t\t: width < DESKTOP_MAX_WIDTH\r\n\t\t\t? SCREEN_DESKTOP\r\n\t\t\t: SCREEN_LARGE_DESKTOP;\r\n\r\n\tuseEffect(() => {\r\n\t\t// add a resize callback to window resize event and when it updates\r\n\t\tconst checkIfNewState = e => {\r\n\t\t\tlet currentState = getScreenType(screenWidth);\r\n\r\n\t\t\t// find the new screen size based on the resize\r\n\t\t\tlet newState = getScreenType(window.innerWidth);\r\n\r\n\t\t\tif (currentState != newState) {\r\n\t\t\t\tsetScreenWidth(window.innerWidth);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// add listener\r\n\t\twindow.addEventListener(\"resize\", checkIfNewState);\r\n\t\treturn () => {\r\n\t\t\t// remove listeners\r\n\t\t\twindow.removeEventListener(\"resize\", checkIfNewState);\r\n\t\t};\r\n\t}, [screenWidth]);\r\n\r\n\t//Storing current screen type in variable\r\n\tconst currentScreenType = getScreenType(screenWidth);\r\n\treturn {\r\n\t\twidth: screenWidth,\r\n\t\tscreenType: currentScreenType,\r\n\t\tisSmallMobile: currentScreenType === SCREEN_SMALL_MOBILE,\r\n\t\tisMediumMobile: currentScreenType === SCREEN_MEDIUM_MOBILE,\r\n\t\tisMobile: currentScreenType === SCREEN_MOBILE,\r\n\t\tisTablet: currentScreenType === SCREEN_TABLET,\r\n\t\tisDesktop: currentScreenType === SCREEN_DESKTOP,\r\n\t\tisLargeDesktop: currentScreenType === SCREEN_LARGE_DESKTOP,\r\n\t};\r\n}\r\n\r\nexport { useScreenType, SCREEN_TABLET, SCREEN_MOBILE, SCREEN_DESKTOP, SCREEN_LARGE_DESKTOP, SCREEN_MEDIUM_MOBILE, SCREEN_SMALL_MOBILE };\r\n","import { nodeApi } from \"api/Middleware\";\r\nimport { checkExpToken } from \"helpers/auth\";\r\n\r\nexport const addPaymentReminder = async payload => {\r\n\tlet response = {};\r\n\tconst endpoint = `/paymentreminder/set`;\r\n\r\n\tresponse = await checkExpToken({ endpoint, payload });\r\n\treturn response;\r\n};\r\n\r\n// export const getPaymentReminder = async (payload) => {\r\n// \tlet response = {};\r\n// \tconst endpoint = `/paymentreminder/get`;\r\n\r\n// \tresponse = await checkExpToken({ endpoint, payload});\r\n// \treturn response;\r\n// };\r\n\r\nexport const removePaymentReminder = async payload => {\r\n\tlet response = {};\r\n\tconst endpoint = `/paymentreminder/remove`;\r\n\r\n\tresponse = await checkExpToken({ endpoint, payload });\r\n\treturn response;\r\n};\r\n","export default __webpack_public_path__ + \"static/media/error.98366467.webp\";","export default __webpack_public_path__ + \"static/media/success.b56b40d2.webp\";","export default __webpack_public_path__ + \"static/media/oops.045911c1.webp\";","import React from \"react\";\r\nimport Swal from \"sweetalert2\";\r\nimport withReactContent from \"sweetalert2-react-content\";\r\nimport error_icon from \"assets/img/modal_icons/error.webp\";\r\nimport info_icon from \"assets/img/modal_icons/info.webp\";\r\nimport success_icon from \"assets/img/modal_icons/success.webp\";\r\nimport oops_icon from \"assets/img/modal_icons/oops.webp\";\r\nimport { withSwal } from \"react-sweetalert2\";\r\nimport \"./SweetModal.scss\";\r\n\r\nconst CustomSwal = withReactContent(Swal);\r\n\r\n/**\r\n *\r\n * @param {Object} props\r\n * @param {String=} props.title\r\n * @param {Object}props.content\r\n * @param {String=} props.primaryLabel\r\n * @param {String=} props.secondaryLabel\r\n * @param {() => void=} props.primaryCallback\r\n * @param {() => void=} props.secondaryCallback\r\n * @param {Boolean} props.alignButtonsVertically\r\n */\r\nexport const ErrorModal = async ({\r\n\ttitle,\r\n\tprimaryLabel,\r\n\tsecondaryLabel,\r\n\tprimaryCallback,\r\n\tsecondaryCallback,\r\n\tcontent,\r\n\talignButtonsVertically=false\r\n}) => {\r\n\tconst modal = await CustomSwal.fire({\r\n\t\ttitle,\r\n\t\ticonHtml: (\r\n\t\t\t\r\n\t\t),\r\n\t\treverseButtons: true,\r\n\t\tconfirmButtonText: primaryLabel,\r\n\t\tscrollbarPadding: true,\r\n\t\thtml: content,\r\n\t\tcancelButtonText: secondaryLabel,\r\n\t\tshowCancelButton: secondaryLabel !== undefined,\r\n\t\tallowOutsideClick: false,\r\n\t\tallowEscapeKey: false,\r\n\t\t// showClass: {\r\n\t\t// \tpopup: \"animate__animated animate__flipInX\",\r\n\t\t// },\r\n\t\t// hideClass: {\r\n\t\t// \tpopup: \"animate__animated animate__flipOutX\",\r\n\t\t// },\r\n\t\tcustomClass:{\r\n\t\t\tactions: alignButtonsVertically ? 'vertical-buttons' : '',\r\n\t\t\tcancelButton: alignButtonsVertically ? 'top-margin' : ''\r\n\t\t}\r\n\t});\r\n\tif (modal.isConfirmed) {\r\n\t\tprimaryCallback();\r\n\t}\r\n\tif (modal.isDismissed) {\r\n\t\tsecondaryCallback();\r\n\t}\r\n\treturn
;\r\n};\r\n\r\n/**\r\n *\r\n * @param {Object} props\r\n * @param {String=} props.title\r\n * @param {Object}props.content\r\n * @param {String=} props.primaryLabel\r\n * @param {String=} props.secondaryLabel\r\n * @param {() => void=} props.primaryCallback\r\n * @param {Object[]=} props.list\r\n * @param {() => void=} props.secondaryCallback\r\n * @param {String=} props.inputType\r\n * @param {Boolean} props.isDismissed\r\n * @param {() => void=} props.dismissProcedure\r\n * @param {boolean=} props.showCloseButton\r\n * @param {Boolean} props.alignButtonsVertically\r\n */\r\nexport const InfoModal = async ({\r\n\ttitle,\r\n\tprimaryLabel,\r\n\tsecondaryLabel,\r\n\tprimaryCallback,\r\n\tsecondaryCallback,\r\n\tlist,\r\n\tcontent,\r\n\tsuccessIcon = false,\r\n\tisDismissed = false,\r\n\tdismissProcedure,\r\n\tshowCloseButton,\r\n\talignButtonsVertically=false\r\n}) => {\r\n\tlet modal = await CustomSwal.fire({\r\n\t\ttitle,\r\n\t\ticonHtml: successIcon ? \"success\" : \"info\",\r\n\t\treverseButtons: true,\r\n\t\tconfirmButtonText: primaryLabel,\r\n\t\tscrollbarPadding: true,\r\n\t\thtml: (\r\n\t\t\t<>\r\n\t\t\t\t
{content}
\r\n\r\n\t\t\t\t{list && (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{list.map((docs, index) => (\r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t{docs}\r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t),\r\n\t\tcancelButtonText: secondaryLabel,\r\n\t\tshowCancelButton: secondaryLabel !== undefined,\r\n\t\tshowClass: {\r\n\t\t\tpopup: \"animate__animated animate__fadeInDown\",\r\n\t\t},\r\n\t\thideClass: {\r\n\t\t\tpopup: \"animate__animated animate__fadeOutUp\",\r\n\t\t},\r\n\t\tallowOutsideClick: false,\r\n\t\tallowEscapeKey: false,\r\n\t\tshowCloseButton: showCloseButton,\r\n\t\tcustomClass:{\r\n\t\t\tactions: alignButtonsVertically ? 'vertical-buttons' : '',\r\n\t\t\tcancelButton: alignButtonsVertically ? 'top-margin' : ''\r\n\t\t}\r\n\t});\r\n\r\n\tif (modal.isConfirmed) {\r\n\t\tprimaryCallback();\r\n\t}\r\n\tif (modal.isDismissed) {\r\n\t\tif(isDismissed){\r\n\t\t\tif(modal.dismiss === CustomSwal.DismissReason.cancel){\r\n\t\t\t\tsecondaryCallback();\r\n\t\t\t} else {\r\n\t\t\t\tdismissProcedure();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tsecondaryCallback();\r\n\t\t}\r\n\t}\r\n\treturn
;\r\n};\r\n\r\n/**\r\n *\r\n * @param {Object} props\r\n * @param {String=} props.title\r\n * @param {Object}props.content\r\n * @param {String=} props.primaryLabel\r\n * @param {String=} props.secondaryLabel\r\n * @param {() => void=} props.primaryCallback\r\n * @param {() => void=} props.secondaryCallback\r\n * @param {Object} props.secondaryContent\r\n * @param {Boolean} props.shouldDelete\r\n * @param {Boolean} props.showCloseButton\r\n * @param {Boolean} props.alignButtonsVertically\r\n */\r\n\r\nexport const ConfirmModal = async ({\r\n\ttitle,\r\n\tprimaryLabel,\r\n\tsecondaryLabel,\r\n\tprimaryCallback,\r\n\tsecondaryCallback,\r\n\tcontent,\r\n\tsecondaryContent,\r\n\tshouldDelete = true,\r\n\tshowCloseButton = true,\r\n\talignButtonsVertically=false\r\n}) => {\r\n\tlet modal = await CustomSwal.fire({\r\n\t\ttitle,\r\n\t\ticonHtml: \"info\",\r\n\t\treverseButtons: true,\r\n\t\tconfirmButtonText: primaryLabel,\r\n\t\tscrollbarPadding: true,\r\n\t\thtml: content,\r\n\t\tcancelButtonText: secondaryLabel,\r\n\t\tshowCancelButton: secondaryLabel !== undefined,\r\n\t\tallowOutsideClick: false,\r\n\t\tallowEscapeKey: false,\r\n\t\tshowCloseButton: showCloseButton,\r\n\t\tshowClass: {\r\n\t\t\tpopup: \"animate__animated animate__fadeInDown\",\r\n\t\t},\r\n\t\thideClass: {\r\n\t\t\tpopup: \"animate__animated animate__fadeOutUp\",\r\n\t\t},\r\n\t\tcustomClass:{\r\n\t\t\tactions: alignButtonsVertically ? 'vertical-buttons' : '',\r\n\t\t\tcancelButton: alignButtonsVertically ? 'top-margin' : ''\r\n\t\t}\r\n\t});\r\n\r\n\tif (modal.isConfirmed) {\r\n\t\tprimaryCallback();\r\n\t\tif (shouldDelete) {\r\n\t\t\tCustomSwal.fire({\r\n\t\t\t\ttitle: \"Deleted!\",\r\n\t\t\t\ticonHtml: \"success\",\r\n\t\t\t\thtml: secondaryContent,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tif (modal.isDismissed) {\r\n\t\tsecondaryCallback();\r\n\t\tSwal.close();\r\n\t}\r\n\r\n\treturn
;\r\n};\r\n\r\nexport const InputModal = async ({\r\n\ttitle,\r\n\tprimaryLabel,\r\n\tsecondaryLabel,\r\n\tprimaryCallback,\r\n\tsecondaryCallback,\r\n\tcontent,\r\n\tinputType,\r\n\talignButtonsVertically=false\r\n}) => {\r\n\tlet modal = await CustomSwal.fire({\r\n\t\ttitle,\r\n\t\tinput: inputType,\r\n\t\treverseButtons: true,\r\n\t\tconfirmButtonText: primaryLabel,\r\n\t\tscrollbarPadding: true,\r\n\t\thtml: content,\r\n\t\tcancelButtonText: secondaryLabel,\r\n\t\tshowCancelButton: secondaryLabel !== undefined,\r\n\t\tallowOutsideClick: false,\r\n\t\tallowEscapeKey: false,\r\n\t\tshowCloseButton: true,\r\n\t\tshowClass: {\r\n\t\t\tpopup: \"animate__animated animate__fadeInDown\",\r\n\t\t},\r\n\t\thideClass: {\r\n\t\t\tpopup: \"animate__animated animate__fadeOutUp\",\r\n\t\t},\r\n\t\tcustomClass:{\r\n\t\t\tactions: alignButtonsVertically ? 'vertical-buttons' : '',\r\n\t\t\tcancelButton: alignButtonsVertically ? 'top-margin' : ''\r\n\t\t}\r\n\t});\r\n\r\n\tif (modal.isConfirmed) {\r\n\t\tprimaryCallback();\r\n\t}\r\n\tif (modal.isDismissed) {\r\n\t\tsecondaryCallback();\r\n\t\t\r\n\t}\r\n\treturn
;\r\n};\r\n","import { CLAIMS, PAY_BALANCE, RENEWAL, POLICY_MANAGER, TRACK_A_CLAIM } from \"pages/RenewPolicy/costants\";\r\n\r\nexport const LEFT = \"LEFT\";\r\nexport const RIGHT = \"RIGHT\";\r\n\r\nexport const arrayOfAcceptedPages = [\r\n\t// `/${CLAIMS}/login`,\r\n\t// `/${RENEWAL}/login`,\r\n\t// `/${PAY_BALANCE}/login`,\r\n\t// `/${POLICY_MANAGER}/login`,\r\n\t`/${TRACK_A_CLAIM}/contact-info`,\r\n\t//`/${TRACK_A_CLAIM}/login`,\r\n\t`/${CLAIMS}/otp`,\r\n\t`/${RENEWAL}/otp`,\r\n\t`/${PAY_BALANCE}/otp`,\r\n\t`/${POLICY_MANAGER}/otp`,\r\n\t`/${TRACK_A_CLAIM}/otp`,\r\n\t`/${CLAIMS}/otp-verification`,\r\n\t`/${RENEWAL}/otp-verification`,\r\n\t`/${PAY_BALANCE}/otp-verification`,\r\n\t`/${POLICY_MANAGER}/otp-verification`,\r\n\t`/${TRACK_A_CLAIM}/otp-verification`,\r\n\t`/${CLAIMS}/contact-info`,\r\n\t`/${RENEWAL}/contact-info`,\r\n\t`/${PAY_BALANCE}/contact-info`,\r\n\t`/${TRACK_A_CLAIM}/contact-info`,\r\n\t`/${POLICY_MANAGER}/contact-info`,\r\n\t// `/${POLICY_MANAGER}/policy-listing`,\r\n\t`/${TRACK_A_CLAIM}/policy-listing`,\r\n];\r\n\r\nexport const noticeNarratives = [\"2055\", \"2059\", \"2060\", \"2034\", \"2010\", \"2042\", \"2042\\n\"];\r\n\r\n// `/${RENEWAL}/policy-listing`,\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { fullLogout } from \"globals/misc\";\r\n\r\nconst defaultState = {\r\n\tmotorPolicyQuestionsAndResponses: [\r\n\t\t{\r\n\t\t\tquestion: `Have you or anyone driving your vehicle had any accidents in the past 12 months that has not been reported to Advantage General (regardless of fault)?`,\r\n\t\t\tanswer: null,\r\n\t\t},\r\n\t\t{\r\n\t\t\tquestion: `Does the owner of the vehicle reside outside of Jamaica for more than six (6) months each year?`,\r\n\t\t\tanswer: null,\r\n\t\t},\r\n\t\t{\r\n\t\t\tquestion: `Have you or any relative or close associate been entrusted with prominent public function (e.g. Politician, Senior Government, Judicial or Security Force Officials) in any Country?`,\r\n\t\t\tanswer: null,\r\n\t\t},\r\n\t\t{\r\n\t\t\tquestion: `Do you or any driver have physical disability or infirmity that may impair your ability to drive?`,\r\n\t\t\tanswer: null,\r\n\t\t},\r\n\t\t{\r\n\t\t\tquestion: `Is the owner of the vehicle deceased?`,\r\n\t\t\tanswer: null,\r\n\t\t},\r\n\t\t\r\n\t],\r\n\thomePolicyQuestionsAndResponses: [\r\n\t\t{\r\n\t\t\tquestion: `Have you had any loss in the past 12 months that has not been reported to Advantage General (regardless of fault)?`,\r\n\t\t\tanswer: null,\r\n\t\t},\r\n\t\t{\r\n\t\t\tquestion: `Does the owner of the property reside outside of Jamaica for more than six (6) months each year?`,\r\n\t\t\tanswer: null,\r\n\t\t},\r\n\t\t{\r\n\t\t\tquestion: `Have you or any relative or close associate been entrusted with prominent public function (e.g. Politician, Senior Government, Judicial or Security Force Officials) in any Country?`,\r\n\t\t\tanswer: null,\r\n\t\t},\r\n\t\t{\r\n\t\t\tquestion: `Is the owner of the property deceased?`,\r\n\t\t\tanswer: null,\r\n\t\t}, \r\n\t],\r\n\tsourceType: \"\",\r\n\tbrokerPolicyCreated:{},\r\n\r\n};\r\n\r\nlet renewalSlice = createSlice({\r\n\tname: \"renewal\",\r\n\tinitialState: defaultState,\r\n\treducers: { \r\n\t\tsetHomePolicyQuestionsAndResponses: (state, action) => {\r\n\t\t\tstate.homePolicyQuestionsAndResponses = action.payload;\r\n\t\t},\r\n\t\tsetMotorPolicyQuestionsAndResponses: (state, action) => {\r\n\t\t\tstate.motorPolicyQuestionsAndResponses = action.payload;\r\n\t\t},\r\n\t\tsetSourceType: (state, action) => {\r\n\t\t\tstate.sourceType = action.payload;\r\n\t\t},\r\n\t\tsetBrokerPolicyCreated: (state, action) => {\r\n\t\t\tstate.brokerPolicyCreated = action.payload;\r\n\t\t},\r\n\t},\r\n\textraReducers: builder => {\r\n\t\tbuilder.addCase(fullLogout, (state, action) => defaultState);\r\n\t},\r\n});\r\n\r\nexport const getMotorPolicyQuestionsAndResponses = ({ renewal: state }) => state.motorPolicyQuestionsAndResponses;\r\nexport const getHomePolicyQuestionsAndResponses = ({ renewal: state }) => state.homePolicyQuestionsAndResponses;\r\nexport const getSourceType = ({ renewal: state }) => state.sourceType;\r\nexport const getBrokerPolicyCreated= ({ renewal: state }) => state.brokerPolicyCreated;\r\nexport const { setMotorPolicyQuestionsAndResponses, setHomePolicyQuestionsAndResponses, setSourceType, setBrokerPolicyCreated} = renewalSlice.actions;\r\nexport default renewalSlice.reducer;\r\n "],"sourceRoot":""}