diff --git a/src/constants/store-actions.js b/src/constants/store-actions.js index 0ff37b44a..a1c697223 100644 --- a/src/constants/store-actions.js +++ b/src/constants/store-actions.js @@ -61,6 +61,7 @@ const storeActions = { SAVE_VEHICLE_DAMAGE: "saveVehicleDamage", SAVE_VIN_LOOKUP: "saveVinLookup", SAVE_SERVICE_LOCATION: "saveServiceLocation", + SAVE_SCHEDULE: "saveSchedule", SAVE_EMAIL: "saveEmail", SAVE_REGISTRATION_LICENSE_PLATE_LOOKUP: "saveRegistrationLicensePlateLookup", SAVE_VIN: "saveVin", diff --git a/src/constants/store-mutations.js b/src/constants/store-mutations.js index 840aff30d..8eeb70c99 100644 --- a/src/constants/store-mutations.js +++ b/src/constants/store-mutations.js @@ -33,6 +33,7 @@ const storeMutations = { UPDATE_REGISTRATION: "updateRegistration", UPDATE_SERVICE_LOCATION: "updateServiceLocation", + UPDATE_SCHEDULE: "updateSchedule", UPDATE_CUSTOMER_EMAIL_ADDRESS: "updateCustomerEmailAddress", diff --git a/src/digital-components/text-block/text-block.vue b/src/digital-components/text-block/text-block.vue index 9e7df6312..e93e2e6c4 100644 --- a/src/digital-components/text-block/text-block.vue +++ b/src/digital-components/text-block/text-block.vue @@ -1,7 +1,7 @@ @@ -11,6 +11,11 @@ export default { props: { customText: String, // used to allow the insert of token values into textblock justifyText: String, // left, right, center + margin: { + // bootstrap margin to apply to the block. + type: String, + default: "mt-2", + }, typeStyle: String, // h1-h6, body, small, label, caption (see Figma or Confluence documentation) fontWeight: String, // bold=500, default is 400 cmsWidgetName: String, diff --git a/src/layouts/review/review.spec.js b/src/layouts/review/review.spec.js new file mode 100644 index 000000000..674dc71f7 --- /dev/null +++ b/src/layouts/review/review.spec.js @@ -0,0 +1,3 @@ +describe("Review Page", () => { + test.todo("Add more tests as specific functionality is added."); +}); diff --git a/src/layouts/review/review.vue b/src/layouts/review/review.vue new file mode 100644 index 000000000..9bccb2014 --- /dev/null +++ b/src/layouts/review/review.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/src/layouts/schedule/schedule.vue b/src/layouts/schedule/schedule.vue index 83c3562bf..7cfc4e7c6 100644 --- a/src/layouts/schedule/schedule.vue +++ b/src/layouts/schedule/schedule.vue @@ -174,7 +174,19 @@ export default { backButtonAction() { this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route); }, - forwardButtonAction() { + async forwardButtonAction() { + //TODO: replace properties with real values once they are available + await this.dispatchStoreAction( + this.storeActions.SAVE_SCHEDULE, + { + date: "2023-07-04T00:00:00", + startTime: "2023-07-04T12:00:00", + endTime: "2023-07-04T17:00:00", + routeCode: "03341-01820-S-B*20232*11 AM", + }, + false + ); + navigateToHeritageFunnel({ loadingModal: this.$refs.loadingModal }); }, }, diff --git a/src/layouts/service-location/service-location.vue b/src/layouts/service-location/service-location.vue index 39efb29e1..7d47fdedd 100644 --- a/src/layouts/service-location/service-location.vue +++ b/src/layouts/service-location/service-location.vue @@ -388,10 +388,12 @@ export default { isVehicleProtected: this.isVehicleProtected, provider: { providerNumber: this.selectedProvider?.providerNumber, - address: this.selectedProvider?.address?.streetAddress, - city: this.selectedProvider?.address?.city, - state: this.selectedProvider?.address?.state, - zip: this.selectedProvider?.address?.zipCode, + address: { + streetAddress: this.selectedProvider?.address?.streetAddress, + city: this.selectedProvider?.address?.city, + state: this.selectedProvider?.address?.state, + zip: this.selectedProvider?.address?.zipCode, + }, }, }, false diff --git a/src/layouts/service-location/shop-question/shop-question.vue b/src/layouts/service-location/shop-question/shop-question.vue index c801a8715..db1c554de 100644 --- a/src/layouts/service-location/shop-question/shop-question.vue +++ b/src/layouts/service-location/shop-question/shop-question.vue @@ -45,7 +45,7 @@ import textLink from "@/ux-components/text-link/text-link"; import { storeActions } from "@/constants/store-actions.js"; // Supporting files -import { defineRule, useField } from "vee-validate"; +import { defineRule } from "vee-validate"; import { required } from "@/helpers/validation-rules"; import { errorMessages } from "@/constants/error-messages"; import baseMixin from "@/mixins/base-mixin.js"; @@ -216,7 +216,7 @@ export default { if (this.selectedAppointmentType) { const selectedShopIndex = this.getSelectedProviderIndex( newValue, - this.modelValue + this.modelValue.providerNumber ); if (selectedShopIndex >= 3) { diff --git a/src/router/index.js b/src/router/index.js index 3abfa058d..86c402187 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -31,6 +31,7 @@ import { applicationConfig } from "../constants/application-config"; // Components import datePicker from "@/digital-components/date-picker/date-picker.vue"; import demoDatePicker from "@/layouts/demo-date-picker/demo-date-picker.vue"; +import review from "@/layouts/review/review"; const routes = [ { @@ -43,6 +44,11 @@ const routes = [ name: "date-picker", component: datePicker, }, + { + path: "/review", // This is a temporary route for testing. + name: "review", + component: review, + }, { path: "/", name: "root", diff --git a/src/store/index.js b/src/store/index.js index 0abab4727..8a0620b5e 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -46,10 +46,12 @@ const getDefaultState = () => { appointmentType: null, provider: { providerNumber: null, - address: null, - city: null, - state: null, - zip: null, + address: { + streetAddress: null, + city: null, + state: null, + zip: null, + }, }, }, customer: { @@ -77,6 +79,12 @@ const getDefaultState = () => { }, parentAccountNumber: 0, }, + schedule: { + date: null, + startTime: null, + endTime: null, + routeCode: null, + }, referralNumber: null, referralDate: null, referralCorrelationId: null, @@ -244,10 +252,22 @@ export const mutations = { if (serviceLocationInfo.provider) { state.order.serviceLocation.provider.providerNumber = serviceLocationInfo.provider?.providerNumber; - state.order.serviceLocation.provider.address = serviceLocationInfo.provider?.address; - state.order.serviceLocation.provider.city = serviceLocationInfo.provider?.city; - state.order.serviceLocation.provider.state = serviceLocationInfo.provider?.state; - state.order.serviceLocation.provider.zip = serviceLocationInfo.provider?.zip; + state.order.serviceLocation.provider.address.streetAddress = + serviceLocationInfo.provider?.address?.streetAddress; + state.order.serviceLocation.provider.address.city = + serviceLocationInfo.provider?.address?.city; + state.order.serviceLocation.provider.address.state = + serviceLocationInfo.provider?.address?.state; + state.order.serviceLocation.provider.address.zip = + serviceLocationInfo.provider?.address?.zip; + } + }, + updateSchedule(state, scheduleInfo) { + if (scheduleInfo) { + state.order.schedule.date = scheduleInfo.date; + state.order.schedule.startTime = scheduleInfo.startTime; + state.order.schedule.endTime = scheduleInfo.endTime; + state.order.schedule.routeCode = scheduleInfo.routeCode; } }, @@ -394,14 +414,14 @@ export const mutations = { state.order.serviceLocation.provider.providerNumber = sessionInformation.order.serviceLocation.provider?.providerNumber; - state.order.serviceLocation.provider.address = - sessionInformation.order.serviceLocation.provider?.address; - state.order.serviceLocation.provider.city = - sessionInformation.order.serviceLocation.provider?.city; - state.order.serviceLocation.provider.state = - sessionInformation.order.serviceLocation.provider?.state; - state.order.serviceLocation.provider.zip = - sessionInformation.order.serviceLocation.provider?.zip; + state.order.serviceLocation.provider.address.streetAddress = + sessionInformation.order.serviceLocation.provider?.address?.streetAddress; + state.order.serviceLocation.provider.address.city = + sessionInformation.order.serviceLocation.provider?.address?.city; + state.order.serviceLocation.provider.address.state = + sessionInformation.order.serviceLocation.provider?.address?.state; + state.order.serviceLocation.provider.address.zip = + sessionInformation.order.serviceLocation.provider?.address?.zip; state.order.payment.isInsurance = sessionInformation.order.payment.isInsurance; state.order.payment.insuranceCoverage.isVerified = @@ -415,6 +435,11 @@ export const mutations = { state.applicationUser.crmCustomerId = sessionInformation.applicationUser.crmCustomerId; state.applicationUser.pageData = sessionInformation.applicationUser.pageData; state.applicationUser.lastPage = sessionInformation.applicationUser.lastPage; + + state.order.schedule.date = sessionInformation.order.schedule?.date; + state.order.schedule.startTime = sessionInformation.order.schedule?.startTime; + state.order.schedule.endTime = sessionInformation.order.schedule?.endTime; + state.order.schedule.routeCode = sessionInformation.order.schedule?.routeCode; }, updateExperiments(state, experiments) { state.applicationUser.experiments = experiments; @@ -1166,12 +1191,21 @@ export const actions = { isVehicleProtected: order.serviceLocation.isVehicleProtected, provider: { providerNumber: order.serviceLocation.provider?.providerNumber, - address: order.serviceLocation.provider?.address, - city: order.serviceLocation.provider?.city, - state: order.serviceLocation.provider?.state, - zip: order.serviceLocation.provider?.zip, + address: { + streetAddress: + order.serviceLocation.provider?.address?.streetAddress, + city: order.serviceLocation.provider?.address?.city, + state: order.serviceLocation.provider?.address?.state, + zip: order.serviceLocation.provider?.address?.zip, + }, }, }, + schedule: { + date: order.schedule?.date, + startTime: order.schedule?.startTime, + endTime: order.schedule?.endTime, + routeCode: order.schedule?.routeCode, + }, existingPromoCode: null, referralCorrelationId: order.referralCorrelationId, referralDate: order.referralDate, @@ -1615,6 +1649,9 @@ export const actions = { return availableLineItems; }, // Misc order actions + saveSchedule(context, scheduleInfo) { + context.commit(storeMutations.UPDATE_SCHEDULE, scheduleInfo); + }, saveServiceLocation(context, serviceLocationInfo) { context.commit(storeMutations.UPDATE_SERVICE_LOCATION, serviceLocationInfo); },