diff --git a/src/helpers/damage-review-content-generator.js b/src/helpers/damage-review-content-generator.js
new file mode 100644
index 00000000..a6d8f7b5
--- /dev/null
+++ b/src/helpers/damage-review-content-generator.js
@@ -0,0 +1,71 @@
+import damageLocationsSelected from '@/constants/damage-locations-selected.js';
+
+function getLocationAnswer(damageLocation, locationAnswers) {
+ return locationAnswers?.find((answer) => answer.Name === damageLocation);
+}
+
+function getGlassPieces(damageLocation, glassToReplace) {
+ return glassToReplace?.filter((item) => item.glassLocation === damageLocation);
+}
+
+function getWindshieldCopy(answerContent, glassToReplace, isRepair) {
+ const windshieldPieces = getGlassPieces(damageLocationsSelected.WINDSHIELD, glassToReplace);
+ return isRepair || !!windshieldPieces?.length ? [answerContent?.Text] : [];
+}
+
+function getRearCopy(answerContent, glassToReplace) {
+ const rearPieces = getGlassPieces(damageLocationsSelected.REAR, glassToReplace);
+ return rearPieces?.length ? [answerContent?.Text] : [];
+}
+
+function generateBulletedListFromAnswers(answers) {
+ const items = answers.map((answer) => `
${answer.Text}`);
+ return ``;
+}
+
+function getSideCopy(location, locationAnswers, damageAnswers, glassToReplace) {
+ const sideItems = getGlassPieces(location, glassToReplace);
+ const damageAnswersOnOrder = damageAnswers?.filter((answer) =>
+ sideItems?.some((glassPiece) => answer.Name === glassPiece.glassName));
+
+ return sideItems?.length
+ ? [
+ locationAnswers?.Text,
+ generateBulletedListFromAnswers(damageAnswersOnOrder)
+ ]
+ : [];
+}
+
+function getDamageDisplayContent(
+ locationAnswers,
+ driverSideDamageAnswers,
+ passengerSideDamageAnswers,
+ glassToReplace,
+ isRepair
+) {
+ return [
+ ...getWindshieldCopy(
+ getLocationAnswer(damageLocationsSelected.WINDSHIELD, locationAnswers),
+ glassToReplace,
+ isRepair
+ ),
+ ...getSideCopy(
+ damageLocationsSelected.DRIVER,
+ getLocationAnswer(damageLocationsSelected.DRIVER, locationAnswers),
+ driverSideDamageAnswers,
+ glassToReplace
+ ),
+ ...getSideCopy(
+ damageLocationsSelected.PASSENGER,
+ getLocationAnswer(damageLocationsSelected.PASSENGER, locationAnswers),
+ passengerSideDamageAnswers,
+ glassToReplace
+ ),
+ ...getRearCopy(
+ getLocationAnswer(damageLocationsSelected.REAR, locationAnswers),
+ glassToReplace
+ )
+ ];
+}
+
+export { getDamageDisplayContent, getLocationAnswer };
diff --git a/src/layouts/review-page/review-sections/damage-review/damage-review.vue b/src/layouts/review-page/review-sections/damage-review/damage-review.vue
index 4e0b0878..a2e4a2a3 100644
--- a/src/layouts/review-page/review-sections/damage-review/damage-review.vue
+++ b/src/layouts/review-page/review-sections/damage-review/damage-review.vue
@@ -9,6 +9,8 @@
diff --git a/src/layouts/tpa-submit/review-block/review-block.vue b/src/layouts/tpa-submit/review-block/review-block.vue
index 5d13e48f..4f5af710 100644
--- a/src/layouts/tpa-submit/review-block/review-block.vue
+++ b/src/layouts/tpa-submit/review-block/review-block.vue
@@ -21,8 +21,8 @@
- {{ line }}
+ class="small review-block__body--line"
+ v-html="line">
diff --git a/src/layouts/tpa-submit/tpa-submit.vue b/src/layouts/tpa-submit/tpa-submit.vue
index 1ba7f98a..6a0afbbf 100644
--- a/src/layouts/tpa-submit/tpa-submit.vue
+++ b/src/layouts/tpa-submit/tpa-submit.vue
@@ -78,7 +78,9 @@
:customText="orderDetailsBody"
:marginTopSizeOverride="4"
class="mb-4 px-4 small text-color--darker-gray" />
-
+
this.navigate(scenario)
};
},
forwardButtonAction() {
this.navigate(this.navigationScenarios.CLICKED_FORWARD);
},
- getNavigateByScenarioMethod(scenario) {
- return () => this.navigate(scenario);
- },
navigate(scenario) {
this.$router.navigate(scenario, this.$route);
},
@@ -255,12 +276,18 @@ export default {
return null;
}
},
+ getAnswersNullSafe(widgetName) {
+ const rawAnswers = this.getCmsContent(widgetName, 'Answers');
+ return rawAnswers || [];
+ },
processIfStatements,
getStringWithCustomValues,
toDisplayPhoneNumber,
toTitleCase,
formatAddress,
- formatAmountInDollars
+ formatAmountInDollars,
+ getDamageDisplayContent,
+ getLocationAnswer
}
};
diff --git a/src/store/index.js b/src/store/index.js
index 0249b80c..facfa026 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -13,7 +13,6 @@ import damageLocationsSelected from '@/constants/damage-locations-selected';
import coverageStatuses from '@/constants/coverage-statuses';
import { AppointmentTypeStrings, PREMIUM_FEE_PART_TYPE } from '@/constants/schedule-constants';
import { convertDateStringToDate, getDateDifferenceInDays, militaryToTwelveHourTime } from '@/helpers/date-helper';
-// import endorsementOptions from '@/constants/endorsement-options';
const storeId = 'main';
@@ -220,6 +219,7 @@ export const useMainStore = defineStore({
lineItems: (state) => state.order.lineItems,
payment: (state) => state.order.payment,
policy: (state) => state.order.policy,
+ hasExactlyOneChip: () => state.order.damage.numberOfChips === 1,
hasAnyNonWindshieldGlassParts: (s) => !s.order.policy.isDamageGlassOnly,
isMobileAppointment: (state) => state.order.serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE
|| state.order.serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP,