76 lines
3 KiB
JavaScript
76 lines
3 KiB
JavaScript
import { storeActions } from "@/constants/store-actions.js";
|
|
import store from "@/store";
|
|
import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin";
|
|
import bailoutMixin from "@/mixins/bailout-mixin";
|
|
import { saveSession } from "@/helpers/heritage-integration/order-helper.js";
|
|
import { experimentSettings } from "@/constants/experiments";
|
|
import { vinLookupMethodSelections } from "@/constants/vin-lookup-method-selections.js";
|
|
import { bailoutCodes } from "@/constants/bailout-codes";
|
|
|
|
export default {
|
|
computed: {
|
|
IsEmailOptional() {
|
|
const emailOptional = this.getSettingValue(experimentSettings.IS_EMAIL_OPTIONAL);
|
|
return emailOptional === "true";
|
|
},
|
|
EmailValidationRules() {
|
|
return this.IsEmailOptional
|
|
? "email-address-format"
|
|
: "email-address-required|email-address-format";
|
|
},
|
|
EmailOrSmsValidationRules() {
|
|
return this.IsEmailOptional
|
|
? "email-sms-format"
|
|
: "email-sms-required|email-sms-format";
|
|
},
|
|
},
|
|
methods: {
|
|
async navigateForwardWithSingleCarMatch() {
|
|
const pageName = this.$options?.name;
|
|
|
|
// If we have not already saved a session, we need to save one now before the lengthy call to getPartsOrQuestions
|
|
if (!store.getters.applicationUser.savedSessionId) {
|
|
await saveSession({ pageNameToLog: pageName });
|
|
}
|
|
|
|
const result = await this.dispatchStoreAction(storeActions.GET_PARTS_OR_QUESTIONS, {
|
|
pageNameToLog: pageName,
|
|
});
|
|
|
|
if (result.PartsNotFound) {
|
|
bailoutMixin.methods.navigateToBailoutPage(this, bailoutCodes.PARTS_NOT_FOUND);
|
|
}
|
|
|
|
const partsOrQuestions = result.data.partsOrQuestions;
|
|
|
|
vehicleQuestionsMixin.methods.navigateForward(partsOrQuestions, this);
|
|
},
|
|
getVinlookupMethod(vinSelection) {
|
|
const vinLookupMethods = {
|
|
vin: vinLookupMethodSelections.MANUALVIN,
|
|
licensePlate: vinLookupMethodSelections.LICENSEPLATE,
|
|
address: vinLookupMethodSelections.HOMEADDRESS,
|
|
decline: vinLookupMethodSelections.DECLINE,
|
|
};
|
|
return vinLookupMethods[vinSelection] || null;
|
|
},
|
|
async getAndSaveBillToAccountNumber() {
|
|
const pageName = this.$options?.name;
|
|
const billToAccountNumber = await this.dispatchStoreActionWithLogging(
|
|
storeActions.GET_BILL_TO_ACCOUNT_NUMBER,
|
|
{},
|
|
pageName,
|
|
false
|
|
);
|
|
await this.dispatchStoreAction(
|
|
this.storeActions.SAVE_BILL_TO_ACCOUNT_NUMBER,
|
|
billToAccountNumber,
|
|
false
|
|
);
|
|
},
|
|
isPhoneNumber(input) {
|
|
const phoneRegex = /^\(?(\d{3})\)?[-. ]?(\d{3})[-. ]?(\d{4})$/;
|
|
return phoneRegex.test(input);
|
|
},
|
|
},
|
|
};
|