diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 8843c001..0ae142d5 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -84,6 +84,7 @@ stages: appDeployVariables: __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) + __VUE_APP_CUSTOMER_PORTAL_URL__: $(__VUE_APP_CUSTOMER_PORTAL_URL__) __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) __VUE_APP_SAFELITE_HOP__: $(__VUE_APP_SAFELITE_HOP__) indexDeployVariables: @@ -91,13 +92,13 @@ stages: __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) __VUE_APP_GOOGLE_MAPS_API_SCRIPT__: $(__VUE_APP_GOOGLE_MAPS_API_SCRIPT__) - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: + parameters: awsCliContainer: awscli distributionId: $(cfDistributionId) paths: /* awsProfile: $(devDeploymentProfile) - # Test Build/Deploy + # Test Build/Deploy - stage: Test condition: eq(variables['Build.SourceBranch'], variables['test-branch'] ) variables: @@ -133,8 +134,9 @@ stages: deployFolder: "" region: us-east-2 appDeployVariables: - __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) + __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) + __VUE_APP_CUSTOMER_PORTAL_URL__: $(__VUE_APP_CUSTOMER_PORTAL_URL__) __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) __VUE_APP_SAFELITE_HOP__: $(__VUE_APP_SAFELITE_HOP__) indexDeployVariables: @@ -142,12 +144,12 @@ stages: __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) __VUE_APP_GOOGLE_MAPS_API_SCRIPT__: $(__VUE_APP_GOOGLE_MAPS_API_SCRIPT__) - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: + parameters: awsCliContainer: awscli distributionId: $(cfDistributionId) paths: /* awsProfile: $(sysDeploymentProfile) - + # QA Build/Deploy - stage: QA condition: eq(variables['Build.SourceBranch'], variables['qa-branch'] ) @@ -186,6 +188,7 @@ stages: appDeployVariables: __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) + __VUE_APP_CUSTOMER_PORTAL_URL__: $(__VUE_APP_CUSTOMER_PORTAL_URL__) __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) __VUE_APP_SAFELITE_HOP__: $(__VUE_APP_SAFELITE_HOP__) indexDeployVariables: @@ -193,7 +196,7 @@ stages: __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) __VUE_APP_GOOGLE_MAPS_API_SCRIPT__: $(__VUE_APP_GOOGLE_MAPS_API_SCRIPT__) - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: + parameters: awsCliContainer: awscli distributionId: $(cfDistributionId) paths: /* @@ -237,6 +240,7 @@ stages: appDeployVariables: __VUE_APP_CONSUMER_CF_DISTRO__: $(__VUE_APP_CONSUMER_CF_DISTRO__) __VUE_APP_CURRENT_ENVIRONMENT__: $(__VUE_APP_CURRENT_ENVIRONMENT__) + __VUE_APP_CUSTOMER_PORTAL_URL__: $(__VUE_APP_CUSTOMER_PORTAL_URL__) __VUE_APP_GOOGLE_PLACES_API_KEY__: $(__VUE_APP_GOOGLE_PLACES_API_KEY__) __VUE_APP_SAFELITE_HOP__: $(__VUE_APP_SAFELITE_HOP__) indexDeployVariables: @@ -244,7 +248,7 @@ stages: __VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__: $(__VUE_APP_GOOGLE_TAG_MANAGER_NOSCRIPT_FRAME_SRC__) __VUE_APP_GOOGLE_MAPS_API_SCRIPT__: $(__VUE_APP_GOOGLE_MAPS_API_SCRIPT__) - template: templates/digital/invalidate-cloudfront-cache.yml@AzureDevOps - parameters: + parameters: awsCliContainer: awscli distributionId: $(cfDistributionId) paths: /* @@ -255,4 +259,3 @@ stages: userName: SafeliteAzureDevops userEmail: githubazuredevops@safelite.com - \ No newline at end of file diff --git a/src/constants/application-config.js b/src/constants/application-config.js index 7230f485..1d1ee4a1 100644 --- a/src/constants/application-config.js +++ b/src/constants/application-config.js @@ -6,6 +6,7 @@ const applicationConfig = Object.freeze({ CURRENT_ENVIRONMENT: process.env.VUE_APP_CURRENT_ENVIRONMENT, // "Localhost", "Dev", "QA", and "Prod" CONSUMER_CF_DISTRO: process.env.VUE_APP_CONSUMER_CF_DISTRO, + CUSTOMER_PORTAL_URL: process.env.VUE_APP_CUSTOMER_PORTAL_URL, ANALYTICS_SESSION_TIMEOUT_MINUTES: 30, SAVED_SESSION_TIMEOUT_DAYS: 45, COOKIE_PATH: '/', diff --git a/src/iss-components/cart-dropdown/cart-dropdown.spec.js b/src/iss-components/cart-dropdown/cart-dropdown.spec.js index fc09a48e..5d125a0b 100644 --- a/src/iss-components/cart-dropdown/cart-dropdown.spec.js +++ b/src/iss-components/cart-dropdown/cart-dropdown.spec.js @@ -42,13 +42,7 @@ function getMountedComponent(mainInitialState = {}, initialData = {}, propsData describe('cart-dropdown component', () => { test('initial data rendered as expected', () => { // Arrange - const { wrapper } = getMountedComponent({ - order: { - lineItems: { - supportingItems: [] - } - } - }); + const { wrapper } = getMountedComponent({}); // Assert expect(wrapper.vm.$data).toMatchSnapshot(); @@ -239,13 +233,9 @@ describe('cart-dropdown component', () => { // Arrange const storeData = { order: { - payment: { - insuranceCoverage: { - coverageStatus: coverageStatuses.NO_COMP - } - }, policy: { - isITAC: isItac + isITAC: isItac, + noCoverage: true, } } }; @@ -285,13 +275,9 @@ describe('cart-dropdown component', () => { // Arrange const storeData = { order: { - payment: { - insuranceCoverage: { - coverageStatus: coverageStatuses.PENDING - } - }, policy: { - isITAC: false + isITAC: false, + noCoverage: false } } }; @@ -309,13 +295,9 @@ describe('cart-dropdown component', () => { // Arrange const storeData = { order: { - payment: { - insuranceCoverage: { - coverageStatus: coverageStatuses.NO_COMP - } - }, policy: { - isITAC: false + isITAC: false, + noCoverage: true, }, currentDeductible: null } @@ -378,13 +360,9 @@ describe('cart-dropdown component', () => { // Arrange const storeData = { order: { - payment: { - insuranceCoverage: { - coverageStatus: coverageStatuses.VERIFIED - } - }, policy: { - isITAC: false + isITAC: false, + noCoverage: false }, currentDeductible: null } @@ -526,13 +504,9 @@ describe('cart-dropdown component', () => { // Arrange const storeData = { order: { - payment: { - insuranceCoverage: { - coverageStatus: coverageStatuses.NO_COMP - } - }, policy: { - isITAC: false + isITAC: false, + noCoverage: true }, currentDeductible: 321 } @@ -579,7 +553,7 @@ describe('cart-dropdown component', () => { test('Shows recycle fee when preset in supported items', () => { // Arrange const reference = '#recycle-fee-item'; - const {wrapper} = getMountedComponent({ + const { wrapper } = getMountedComponent({ order: { lineItems: { supportingItems: [{ @@ -599,7 +573,7 @@ describe('cart-dropdown component', () => { test('Hides recycle fee when not in supported items', () => { // Arrange const reference = '#recycle-fee-item'; - const {wrapper} = getMountedComponent({ + const { wrapper } = getMountedComponent({ order: { lineItems: { supportingItems: [] diff --git a/src/iss-components/cart-dropdown/cart-dropdown.vue b/src/iss-components/cart-dropdown/cart-dropdown.vue index 368b30d3..d71b7830 100644 --- a/src/iss-components/cart-dropdown/cart-dropdown.vue +++ b/src/iss-components/cart-dropdown/cart-dropdown.vue @@ -340,7 +340,6 @@ export default { ? VERIFYING_COVERAGE : formatAmountInDollars(amount); }, - formatAmountInDollars, getCartItem(label, lineItems) { let cartItem = null; @@ -368,7 +367,8 @@ export default { const vapsTypeName = vapsItemDescriptions.find((entry) => entry.Name === vapsType); return vapsTypeName.Text; - } + }, + formatAmountInDollars } }; diff --git a/src/layouts/order-confirmation/order-confirmation.vue b/src/layouts/order-confirmation/order-confirmation.vue index 7ee31d95..8fcf3c54 100644 --- a/src/layouts/order-confirmation/order-confirmation.vue +++ b/src/layouts/order-confirmation/order-confirmation.vue @@ -47,6 +47,9 @@ v-html="appointmentWordingText2"> +
'); + }, orderConfirmationHeaderText() { return this.getCmsContent('OrderConfirmationContent', 'HeaderText'); }, @@ -338,4 +349,11 @@ $page-side-padding: 1.5rem; color: $black; } } + +.email-confirmation-text { + :deep(a) { + font-weight: $font-weight-bold; + text-decoration: none; + } +} diff --git a/src/layouts/payment-page/payment-page.vue b/src/layouts/payment-page/payment-page.vue index 3c0c8913..d8d2f907 100644 --- a/src/layouts/payment-page/payment-page.vue +++ b/src/layouts/payment-page/payment-page.vue @@ -514,11 +514,11 @@ export default { computed: { payInAdvanceResponseUrl() { const { protocol, host } = window.location; - return `${protocol}//${host}/?issPage=${issPageValues.PAYMENT_RETURN}&src=concept-funnel`; + return `${protocol}//${host}/?issPage=${issPageValues.PAYMENT_RETURN}&src=iss-nextgen`; }, payInAdvanceCancelUrl() { const { protocol, host } = window.location; - return `${protocol}//${host}/?issPage=${issPageValues.PAYMENT_METHOD}&src=concept-funnel`; + return `${protocol}//${host}/?issPage=${issPageValues.PAYMENT_METHOD}&src=iss-nextgen`; }, dynamicCSSUrl() { const { protocol, hostname, port } = window.location; diff --git a/src/layouts/service-location/service-location.vue b/src/layouts/service-location/service-location.vue index 2f503879..8d1cfa12 100644 --- a/src/layouts/service-location/service-location.vue +++ b/src/layouts/service-location/service-location.vue @@ -343,7 +343,10 @@ export default { let provider = this.selectedProvider; this.mainStore.updateMobileFee(null); if (this.isMobileLocationDisplayed) { - this.mainStore.updateMobileFee(this.mobileFeePart); + if (this.mainStore.isNoComp || this.mainStore.isITAC) { + this.mainStore.updateMobileFee(this.mobileFeePart); + } + provider = { providerNumber: this.mobileProviderNumber, address: { diff --git a/src/layouts/vin-lookup/vin-lookup.vue b/src/layouts/vin-lookup/vin-lookup.vue index 9a4bbaa2..3cea2d69 100644 --- a/src/layouts/vin-lookup/vin-lookup.vue +++ b/src/layouts/vin-lookup/vin-lookup.vue @@ -144,7 +144,7 @@ export default { const lastSixChars = this.vin.substring(11, this.vin.length); return `!X!X!X!X!X!X!X!X!X!X!X${lastSixChars}`; } - return 'XXXXXXXXXXXXXXXXX'; + return '*****************'; }, carIdIsValid() { return this.hasValidCarId(); diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js index 5deec630..ca20237b 100644 --- a/src/mixins/base-mixin.js +++ b/src/mixins/base-mixin.js @@ -78,7 +78,7 @@ export default { }); }, getAmountDue(lineItems) { - if (!useMainStore().isNoComp && !useMainStore().policy.isITAC) { + if (!useMainStore().isNoComp && !useMainStore().isITAC) { return useMainStore().order.currentDeductible; } diff --git a/src/store/index.js b/src/store/index.js index 5b9e2bd9..5add699d 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -21,6 +21,7 @@ import { noCoverageForSelectedVehicle, repairWaivedForSelectedVehicle } from '@/helpers/policy-vehicle-helper'; +import partTypeStrings from '@/constants/part-type-strings'; const storeId = 'main'; @@ -197,6 +198,7 @@ const getDefaultState = () => ({ referralSequenceNumber: null, eon: null, workOrderNumber: null, + customerPortalLoginToken: null, originalDeductible: null, currentDeductible: null, carrierPhoneNumber: null, @@ -259,7 +261,8 @@ export const useMainStore = defineStore({ isClaimRegistrationRequired: (state) => state.issConfig.isClaimRegistrationRequired, isClaimAlreadyRegistered: (state) => state.order.payment.insuranceCoverage.claimNumber !== null, isBailout: (state) => state.applicationUser.pageData[issPageValues.BAILOUT_PAGE] != null, - isNoComp: (state) => state.order.payment.insuranceCoverage.coverageStatus === coverageStatuses.NO_COMP, + isNoComp: (state) => !!state.order.policy.noCoverage, + isITAC: (state) => !!state.order.policy.isITAC, isVerifiedCoverageStatus: (state) => state.order.payment.insuranceCoverage.coverageStatus === coverageStatuses.VERIFIED, eventBusItem: (state) => (eventCategory, eventSubCategory) => { const matchedEvent = state.applicationUser.eventBus.find(({ category, subCategory }) => category === eventCategory && subCategory === eventSubCategory); @@ -1142,6 +1145,7 @@ export const useMainStore = defineStore({ this.order.referralCorrelationId = response.referralCorrelationId; this.order.eon = response.eon; this.order.workOrderNumber = response.workOrderNumber; + this.order.customerPortalLoginToken = response.customerPortalLoginToken; this.applicationUser.savedSessionId = response.savedSessionId; this.applicationUser.crmCustomerId = response.crmCustomerId.toString(); }, @@ -1531,7 +1535,17 @@ export const useMainStore = defineStore({ }, updateSupportingItems(partsData) { - this.order.lineItems.supportingItems = partsData; + if (partsData == null) { + this.order.lineItems.supportingItems = null; + return; + } + + let parts = partsData; + if (!this.isNoComp && !this.isITAC) { + parts = parts.filter((i) => i.partNumber !== partTypeStrings.RECYCLE_FEE); + } + + this.order.lineItems.supportingItems = parts; }, updateVaps(partsData) { diff --git a/vue.config.js b/vue.config.js index 0a7711e6..e2c3176a 100644 --- a/vue.config.js +++ b/vue.config.js @@ -1,6 +1,7 @@ /* eslint-disable max-len */ process.env.VUE_APP_CONSUMER_CF_DISTRO = 'https://digitalapi.dev.safelite.io'; process.env.VUE_APP_CURRENT_ENVIRONMENT = 'Localhost'; +process.env.VUE_APP_CUSTOMER_PORTAL_URL = 'https://myaccountdev.safelite.com/'; process.env.VUE_APP_GOOGLE_PLACES_API_KEY = 'AIzaSyCuLhQcDdZTTb4JzpUFms1OCch2dk5lHF0'; process.env.VUE_APP_SAFELITE_HOP = 'https://iss-hop-sys.glassclaim.com/fmgCheckoutEmbedded.aspx'; diff --git a/vue.release.config.js b/vue.release.config.js index 2cfed6dd..6e8ad2b7 100644 --- a/vue.release.config.js +++ b/vue.release.config.js @@ -1,5 +1,6 @@ process.env.VUE_APP_CONSUMER_CF_DISTRO = "__VUE_APP_CONSUMER_CF_DISTRO__"; process.env.VUE_APP_CURRENT_ENVIRONMENT = "__VUE_APP_CURRENT_ENVIRONMENT__"; +process.env.VUE_APP_CUSTOMER_PORTAL_URL = '__VUE_APP_CUSTOMER_PORTAL_URL__'; process.env.VUE_APP_GOOGLE_PLACES_API_KEY = "__VUE_APP_GOOGLE_PLACES_API_KEY__"; process.env.VUE_APP_SAFELITE_HOP = "__VUE_APP_SAFELITE_HOP__"; @@ -24,7 +25,7 @@ module.exports = { `, }, }, - }, + }, configureWebpack: { devtool: 'source-map' },