From 4adb021e8614bec2015def120b5dba7e5db4507a Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Thu, 26 Oct 2023 17:15:00 -0400 Subject: [PATCH] Add page pre-requisites for payment --- src/layouts/payment/payment.vue | 62 +++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index 10de5cedf..8c4a28e7f 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -165,6 +165,7 @@ import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { settleAllPromises } from "@/helpers/layout-helper"; import { applicationConfig } from "@/constants/application-config"; import { paymentMethods } from "@/constants/payment-method-constants"; +import { AppointmentTypeStrings } from "@/constants/schedule-constants"; import baseMixin from "@/mixins/base-mixin.js"; // Validation @@ -251,8 +252,65 @@ export default { }, methods: { arePagePrerequisitesValid() { - // TODO - return true; + // Line Items + const packageReqs = !!store.getters.order.lineItems.supportingItems; + + // Service Location + const serviceLocation = store.getters.order.serviceLocation; + const mobileReqs = !!( + serviceLocation.address && + serviceLocation.city && + serviceLocation.state && + serviceLocation.zipCode + ); + + const providerLocation = serviceLocation.provider.address; + const dropOffInshopReqs = !!( + providerLocation.streetAddress && + providerLocation.city && + providerLocation.state && + providerLocation.zipCode + ); + + const isMobile = serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE; + + const serviceLocationReqs = + (isMobile && mobileReqs) || (!isMobile && dropOffInshopReqs); + + // Insurance + const isInsuranceSet = store.getters.order.payment.isInsurance !== null; + + // Schedule + const schedule = store.getters.order.schedule; + const scheduleReqs = !!( + schedule.date && + schedule.startTime && + (!isMobile || schedule.endTime) && + schedule.jobMaxMinutes && + schedule.jobMinMinutes + ); + + // Customer + const customer = store.getters.order.customer; + const customerReqs = !!( + customer.firstName && + customer.lastName && + customer.phoneNumber && + customer.emailAddress + ); + + const paymentMethodReqs = + store.getters.order.payment.isPia !== null && + (store.getters.order.payment.isPia || !!store.getters.order.payment.piaType); + + return ( + packageReqs && + serviceLocationReqs && + isInsuranceSet && + scheduleReqs && + customerReqs && + paymentMethodReqs + ); }, getWOrkOrderNumber() { if (store.getters.order.workOrderNumber) {