diff --git a/src/constants/endorsement-codes.js b/src/constants/endorsement-codes.js new file mode 100644 index 00000000..08649785 --- /dev/null +++ b/src/constants/endorsement-codes.js @@ -0,0 +1,6 @@ +const endorsementCodes = Object.freeze({ + EDUCATOR: '001', + PARKING_GUARD: '003' +}); + +export default endorsementCodes; \ No newline at end of file diff --git a/src/helpers/policy-vehicle-helper.js b/src/helpers/policy-vehicle-helper.js index 69a80e74..5f289e22 100644 --- a/src/helpers/policy-vehicle-helper.js +++ b/src/helpers/policy-vehicle-helper.js @@ -1,4 +1,5 @@ import endorsementOptions from '@/constants/endorsement-options'; +import endorsementCodes from '@/constants/endorsement-codes'; export function noCoverageForSelectedVehicle(vehicle) { return (vehicle?.coverages?.length ?? 0) === 0; @@ -18,6 +19,27 @@ export function endorsementsForSelectedVehicle(vehicle) { } return []; } +export function endorsementCodesForSelectedVehicle(vehicle) { + if (vehicle?.endorsements.length === 1) { + switch (true) { + case vehicle.endorsements.includes(endorsementOptions.EDUCATOR): + return endorsementCodes.EDUCATOR; + case vehicle.endorsements.includes(endorsementOptions.PARKING_GUARD): + return endorsementCodes.PARKING_GUARD; + } + } + else if (vehicle?.endorsements?.length > 1) { + let codes = []; + if (vehicle.endorsements.includes(endorsementOptions.EDUCATOR)) { + codes.push(endorsementCodes.EDUCATOR); + } + if (vehicle.endorsements.includes(endorsementOptions.PARKING_GUARD)) { + codes.push(endorsementCodes.PARKING_GUARD); + } + return codes.join(','); + } + return ""; +} export function repairWaivedForSelectedVehicle(vehicle) { return vehicle?.endorsements?.includes(endorsementOptions.REPAIR_WAIVED) ?? false; } diff --git a/src/layouts/policy-vehicles/policy-vehicles.vue b/src/layouts/policy-vehicles/policy-vehicles.vue index 019c0059..776a48a5 100644 --- a/src/layouts/policy-vehicles/policy-vehicles.vue +++ b/src/layouts/policy-vehicles/policy-vehicles.vue @@ -55,6 +55,7 @@ import { useMainStore } from '@/store/index.js'; import { deductibleForSelectedVehicle, endorsementsForSelectedVehicle, + endorsementCodesForSelectedVehicle, noCoverageForSelectedVehicle, repairWaivedForSelectedVehicle } from '@/helpers/policy-vehicle-helper'; @@ -132,6 +133,9 @@ export default { endorsementsForSelectedVehicle() { return endorsementsForSelectedVehicle(this.selectedPolicyVehicle); }, + endorsementCodesForSelectedVehicle() { + return endorsementCodesForSelectedVehicle(this.selectedPolicyVehicle); + }, repairWaivedForSelectedVehicle() { return repairWaivedForSelectedVehicle(this.selectedPolicyVehicle); } @@ -201,7 +205,8 @@ export default { noCoverage: this.noCoverageForSelectedVehicle, deductible: this.deductibleForSelectedVehicle, repairWaived: this.repairWaivedForSelectedVehicle, - endorsements: this.endorsementsForSelectedVehicle + endorsements: this.endorsementsForSelectedVehicle, + cvrgEndorsementCode: this.endorsementCodesForSelectedVehicle }); this.navigateForward(); } catch (e) { diff --git a/src/store/index.js b/src/store/index.js index 680561af..a43eec95 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -4,6 +4,7 @@ import bailoutCode from '@/constants/bailoutCode'; import coverageStatuses from '@/constants/coverage-statuses'; import coverageType from '@/constants/coverage-type'; import damageLocationsSelected from '@/constants/damage-locations-selected'; +import endorsementOptions from '@/constants/endorsement-options'; import endpoints from '@/constants/endpoints'; import { experimentSettings, experimentTriggers, experimentUniverses } from '@/constants/experiments'; import partNumberStrings from '@/constants/part-number-strings'; @@ -17,7 +18,7 @@ import { convertDateStringToDate, getDateDifferenceInDays, militaryToTwelveHourT import { getExperimentSettingValue, getFeatureTogglesPayloadObject } from '@/helpers/experiment-helper'; import { findLineItemIndex, getLineItemsFlattened } from '@/helpers/line-items-helper'; import { - deductibleForSelectedVehicle, endorsementsForSelectedVehicle, + deductibleForSelectedVehicle, endorsementsForSelectedVehicle, endorsementCodesForSelectedVehicle, noCoverageForSelectedVehicle, repairWaivedForSelectedVehicle } from '@/helpers/policy-vehicle-helper'; @@ -28,6 +29,7 @@ import { isMobileDevice } from '@/helpers/useragent-helper'; import issPageValues from '@/router/router-constants/issPage-values'; import CoverageStatuses from '@/constants/coverage-statuses'; import { getNonFalseValuesOfPropertyInArrayOfObjects, sortArrayOfObjectsByPropertyValue } from '@/helpers/object-helper'; +import endorsementCodes from '@/constants/endorsement-codes'; const storeId = 'main'; @@ -109,6 +111,9 @@ export const getDefaultState = () => ({ vehicles: [], endorsements: [], endorsementQuestionAnswers: [], + cvrgEndorsementCode: null, + educatorEndorsementAnswer: null, + parkingGuardEndorsementAnswer: null, status: null, policyData: null }, @@ -1469,7 +1474,10 @@ export const useMainStore = defineStore({ currentDeductible: this.currentDeductible, OemEndorsement: this.hasOemEndorsement, noCoverage: this.isNoComp, - isItac: this.isITAC + isItac: this.isITAC, + cvrgEndorsementCode: policy.cvrgEndorsementCode, + educatorEndorsement: policy.educatorEndorsementAnswer, + parkingGuardEndorsement: policy.parkingGuardEndorsementAnswer }, customer: { address: { @@ -2071,6 +2079,7 @@ export const useMainStore = defineStore({ this.order.policy.deductible.replace = coverage.deductible; this.order.policy.deductible.repair = coverage?.repairWaived ?? false ? 0 : coverage.deductible; this.order.policy.endorsements = coverage?.endorsements; + this.order.policy.cvrgEndorsementCode = coverage?.cvrgEndorsementCode; this.order.originalDeductible.replace = this.order.policy.deductible.replace; this.order.currentDeductible.replace = this.order.policy.deductible.replace; @@ -2292,6 +2301,10 @@ export const useMainStore = defineStore({ updateEndorsementQuestionAnswers(answersArray) { this.order.policy.endorsementQuestionAnswers = answersArray; + const educatorEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.EDUCATOR); + const parkingGuardEndorsement = answersArray.find((endorsement) => endorsement.endorsementName === endorsementOptions.PARKING_GUARD); + this.order.policy.educatorEndorsementAnswer = educatorEndorsement ? educatorEndorsement.selectedAnswer : null; + this.order.policy.parkingGuardEndorsementAnswer = parkingGuardEndorsement ? parkingGuardEndorsement.selectedAnswer : null; }, updateIsRepair(isRepair) {