2 additl files part of page prereqs refactor
This commit is contained in:
parent
a8694c7268
commit
6997c2160d
2 changed files with 214 additions and 9 deletions
199
src/helpers/page-prerequisites-helper.js
Normal file
199
src/helpers/page-prerequisites-helper.js
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
import { debugLog } from "@/helpers/debug-log-helper.js";
|
||||
import { AppointmentTypeStrings } from "@/constants/schedule-constants";
|
||||
import { coverageStatus } from "@/constants/insurance";
|
||||
import store from "@/store";
|
||||
|
||||
export function logPagePrereqsStart(source, preReqResult) {
|
||||
// prettier-ignore
|
||||
{
|
||||
debugLog(`--- ${source} pagePrereqs start ---`, null, !preReqResult);
|
||||
}
|
||||
}
|
||||
|
||||
export function logPagePrereqsEnd(source, preReqResult) {
|
||||
// prettier-ignore
|
||||
{
|
||||
debugLog(`--- ${source} pagePrereqs end ---`, null, !preReqResult);
|
||||
}
|
||||
}
|
||||
|
||||
function queueLogging(logQueue, logFn) {
|
||||
if (logQueue) {
|
||||
logQueue.push(logFn);
|
||||
}
|
||||
}
|
||||
|
||||
export function hasServiceZipInfo(order, logQueue = null) {
|
||||
const serviceLocation = order.serviceLocation;
|
||||
const result = !!(serviceLocation.zipCode && serviceLocation.zipCodeCtu);
|
||||
|
||||
queueLogging(logQueue, () => {
|
||||
// prettier-ignore
|
||||
{
|
||||
debugLog("hasServiceZipInfo:", result, !result);
|
||||
debugLog("serviceLocation.zipCode:", serviceLocation.zipCode, !result);
|
||||
debugLog("serviceLocation.zipCodeCtu:", serviceLocation.zipCodeCtu, !result);
|
||||
debugLog("", null, !result);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
export function hasServiceLocationInfo(order, logQueue = null) {
|
||||
const serviceLocation = 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 result = (isMobile && mobileReqs) || (!isMobile && dropOffInshopReqs);
|
||||
|
||||
queueLogging(logQueue, () => {
|
||||
// prettier-ignore
|
||||
{
|
||||
debugLog("hasServiceLocationInfo mobileReqs:", mobileReqs, !result);
|
||||
debugLog("serviceLocation.address:", serviceLocation.address, !result);
|
||||
debugLog("serviceLocation.city:", serviceLocation.city, !result);
|
||||
debugLog("serviceLocation.state:", serviceLocation.state, !result);
|
||||
debugLog("serviceLocation.zipCode:", serviceLocation.zipCode, !result);
|
||||
debugLog("dropOffInshopReqs:", dropOffInshopReqs, !result);
|
||||
debugLog("providerLocation.streetAddress:", providerLocation.streetAddress, !result);
|
||||
debugLog("providerLocation.city:", providerLocation.city, !result);
|
||||
debugLog("providerLocation.state:", providerLocation.state, !result);
|
||||
debugLog("providerLocation.zipCode:", providerLocation.zipCode, !result);
|
||||
debugLog("", null, !result);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
export function hasInsuranceInfo(order, logQueue = null) {
|
||||
const isInsurance = order.payment.isInsurance;
|
||||
const insuranceCoverageStatus = store.getters.payment?.insuranceCoverage?.coverageStatus;
|
||||
const currentDeductible = store.getters.policy?.currentDeductible;
|
||||
|
||||
let result = false;
|
||||
if (isInsurance !== null) {
|
||||
if (
|
||||
insuranceCoverageStatus === coverageStatus.VERIFIED &&
|
||||
!(currentDeductible === 0 || currentDeductible > 0)
|
||||
) {
|
||||
result = false; // if coverageStatus is verified there must be a valid deductible also
|
||||
} else {
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
||||
queueLogging(logQueue, () => {
|
||||
// prettier-ignore
|
||||
{
|
||||
debugLog("hasInsuranceInfo:", result, !result);
|
||||
if (insuranceCoverageStatus === coverageStatus.VERIFIED) {
|
||||
debugLog("hasInsuranceInfo coverageStatus:", insuranceCoverageStatus, !result);
|
||||
debugLog("hasInsuranceInfo currentDeductible:", currentDeductible, !result);
|
||||
}
|
||||
debugLog("", null, !result);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
export function hasSchedulingInfo(order, logQueue = null) {
|
||||
const schedule = order.schedule;
|
||||
const result = !!(
|
||||
schedule.date &&
|
||||
schedule.startTime &&
|
||||
schedule.endTime &&
|
||||
schedule.jobMaxMinutes &&
|
||||
schedule.jobMinMinutes
|
||||
);
|
||||
|
||||
queueLogging(logQueue, () => {
|
||||
// prettier-ignore
|
||||
{
|
||||
debugLog("hasSchedulingInfo:", result, !result);
|
||||
debugLog("schedule.date:", schedule.date, !result);
|
||||
debugLog("schedule.startTime:", schedule.startTime, !result);
|
||||
debugLog("schedule.endTime:", schedule.endTime, !result);
|
||||
debugLog("schedule.jobMaxMinutes:", schedule.jobMaxMinutes, !result);
|
||||
debugLog("schedule.jobMinMinutes:", schedule.jobMinMinutes, !result);
|
||||
debugLog("", null, !result);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
export function hasCustomerInfo(order, logQueue = null) {
|
||||
const customer = order.customer;
|
||||
const result = !!(
|
||||
customer.firstName &&
|
||||
customer.lastName &&
|
||||
customer.phoneNumber &&
|
||||
customer.emailAddress
|
||||
);
|
||||
|
||||
queueLogging(logQueue, () => {
|
||||
// prettier-ignore
|
||||
{
|
||||
debugLog("hasCustomerInfo:", result, !result);
|
||||
debugLog("customer.firstName:", customer.firstName, !result);
|
||||
debugLog("customer.lastName:", customer.lastName, !result);
|
||||
debugLog("customer.phoneNumber:", customer.phoneNumber, !result);
|
||||
debugLog("customer.emailAddress:", customer.emailAddress, !result);
|
||||
debugLog("", null, !result);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
export function hasGlassPartsOrRepairInfo(order, logQueue = null) {
|
||||
const isRepair = order.damage?.isRepair;
|
||||
const glassParts = order.lineItems?.glassParts;
|
||||
const hasGlassParts = glassParts != null && glassParts.length > 0;
|
||||
const result = !!isRepair || hasGlassParts;
|
||||
|
||||
queueLogging(logQueue, () => {
|
||||
// prettier-ignore
|
||||
{
|
||||
debugLog("hasGlassPartsOrRepairInfo:", result, !result);
|
||||
debugLog("damage.isRepair:", isRepair, !result);
|
||||
debugLog("lineItems.glassParts:", glassParts, !result);
|
||||
debugLog("", null, !result);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
export function hasPaymentMethodInfo(order, logQueue = null) {
|
||||
const payment = order.payment;
|
||||
const result = payment.isPia !== null && (payment.isPia || !!payment.piaType);
|
||||
|
||||
queueLogging(logQueue, () => {
|
||||
// prettier-ignore
|
||||
{
|
||||
debugLog("hasPaymentMethodInfo:", result, !result);
|
||||
debugLog("payment.isPia:", payment?.isPia, !result);
|
||||
debugLog("payment.piaType:", payment?.piaType, !result);
|
||||
debugLog("", null, !result);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -78,6 +78,11 @@ import { settleAllPromises } from "@/helpers/layout-helper";
|
|||
import { AppointmentTypeStrings } from "@/constants/schedule-constants";
|
||||
import textLink from "@/ux-components/text-link/text-link";
|
||||
import analyticsMixin from "@/mixins/analytics-mixin";
|
||||
import {
|
||||
logPagePrereqsStart,
|
||||
logPagePrereqsEnd,
|
||||
hasSchedulingInfo,
|
||||
} from "@/helpers/page-prerequisites-helper";
|
||||
export default {
|
||||
name: "MobileDetails",
|
||||
data() {
|
||||
|
|
@ -110,6 +115,9 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
arePagePrerequisitesValid() {
|
||||
const logQueue = [];
|
||||
const order = store.getters.order;
|
||||
|
||||
const serviceLocation = store.getters.order.serviceLocation;
|
||||
const serviceLocationPreReqs =
|
||||
serviceLocation.zipCode &&
|
||||
|
|
@ -118,16 +126,14 @@ export default {
|
|||
serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE;
|
||||
|
||||
// Schedule
|
||||
const schedule = store.getters.order.schedule;
|
||||
const scheduleReqs = !!(
|
||||
schedule.date &&
|
||||
schedule.startTime &&
|
||||
schedule.endTime &&
|
||||
schedule.jobMaxMinutes &&
|
||||
schedule.jobMinMinutes
|
||||
);
|
||||
const scheduleInfoPreReqs = hasSchedulingInfo(order, logQueue);
|
||||
|
||||
const preReqResult = serviceLocationPreReqs && scheduleInfoPreReqs;
|
||||
|
||||
logPagePrereqsStart("mobile-details.vue", preReqResult);
|
||||
logQueue.forEach((fn) => fn());
|
||||
logPagePrereqsEnd("mobile-details.vue", preReqResult);
|
||||
|
||||
const preReqResult = serviceLocationPreReqs && scheduleReqs;
|
||||
return preReqResult;
|
||||
},
|
||||
getServiceAddressFromStore() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue