Prepopulating tpa search page when return
This commit is contained in:
parent
592e21289e
commit
da3459ce4f
3 changed files with 46 additions and 24 deletions
|
|
@ -131,10 +131,8 @@ import BaseFormMixin from '@/mixins/base-form-mixin.js';
|
|||
import globalRules from '@/constants/global-rules.js';
|
||||
import widgetFields from '@/constants/cms-widget-fields.js';
|
||||
import { shallowRef } from 'vue';
|
||||
import routerParams from '@/router/router-constants/router-params';
|
||||
import { toTitleCase, toDisplayPhoneNumber } from '@/helpers/text-helper.js';
|
||||
import bailoutCode from '@/constants/bailoutCode';
|
||||
import bailoutMessage from "@/constants/bailoutMessage";
|
||||
import bailoutMessage from '@/constants/bailoutMessage';
|
||||
|
||||
const radiusFilterPairs = [
|
||||
{ radius: 15, filter: '15 miles' },
|
||||
|
|
@ -143,15 +141,35 @@ const radiusFilterPairs = [
|
|||
{ radius: 100, filter: '100 miles' }
|
||||
];
|
||||
|
||||
async function getInitialFilterAndProviders() {
|
||||
const { zipCode } = useMainStore().order.customer.address;
|
||||
function convertRadiusFilterToInteger(filter) {
|
||||
const pair = radiusFilterPairs.find((p) => p.filter === filter);
|
||||
return pair?.radius ?? 0;
|
||||
}
|
||||
|
||||
async function getInitialSearchData() {
|
||||
const customerZipCode = useMainStore().order.customer.address.zipCode;
|
||||
const serviceLocationZipCode = useMainStore().order.serviceLocation.zipCode;
|
||||
const zipCode = serviceLocationZipCode ?? customerZipCode;
|
||||
|
||||
const { searchFilter } = useMainStore().order.serviceLocation;
|
||||
let { providerNumber } = useMainStore().order.serviceLocation.provider;
|
||||
|
||||
let pairIndex = 0;
|
||||
let providers = [];
|
||||
let radius = 0;
|
||||
if (searchFilter) {
|
||||
radius = convertRadiusFilterToInteger(searchFilter);
|
||||
const result = await useMainStore().getTpaProviders(zipCode, radius);
|
||||
providers = result?.data?.shopProviders ?? [];
|
||||
|
||||
return { zipCode, filter: searchFilter, providers, providerNumber };
|
||||
}
|
||||
|
||||
providerNumber = null;
|
||||
let pairIndex = 0;
|
||||
let filter = '';
|
||||
while (providers.length === 0 && pairIndex < radiusFilterPairs.length) {
|
||||
const pair = radiusFilterPairs[pairIndex];
|
||||
const { radius } = pair;
|
||||
radius = pair.radius;
|
||||
filter = pair.filter;
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
const result = await useMainStore().getTpaProviders(zipCode, radius);
|
||||
|
|
@ -160,7 +178,7 @@ async function getInitialFilterAndProviders() {
|
|||
pairIndex += 1;
|
||||
}
|
||||
|
||||
return { filter, providers };
|
||||
return { zipCode, filter, providers, providerNumber };
|
||||
}
|
||||
|
||||
export default {
|
||||
|
|
@ -180,21 +198,19 @@ export default {
|
|||
},
|
||||
mixins: [BaseFormMixin],
|
||||
async beforeRouteEnter(to, from, next) {
|
||||
const { filter, providers } = await getInitialFilterAndProviders();
|
||||
const { zipCode, filter, providers, providerNumber } = await getInitialSearchData();
|
||||
const cmsContent = await fetchCmsContentForPage(to.query.issPage);
|
||||
|
||||
next(async (vm) => {
|
||||
vm.setCmsContent(cmsContent);
|
||||
vm.setFilter(filter);
|
||||
vm.setProviders(providers);
|
||||
vm.setInitialSearchData(zipCode, filter, providers, providerNumber);
|
||||
});
|
||||
},
|
||||
data() {
|
||||
const { zipCode } = useMainStore().order.customer.address;
|
||||
return {
|
||||
dataLoaded: false,
|
||||
zipCode,
|
||||
mapZipCode: zipCode,
|
||||
zipCode: null,
|
||||
mapZipCode: null,
|
||||
filter: '',
|
||||
providers: [],
|
||||
selectedProviderNumber: '',
|
||||
|
|
@ -250,8 +266,7 @@ export default {
|
|||
);
|
||||
},
|
||||
radiusInMiles() {
|
||||
const pair = radiusFilterPairs.find((p) => p.filter === this.filter);
|
||||
return pair?.radius ?? 0;
|
||||
return convertRadiusFilterToInteger(this.filter);
|
||||
},
|
||||
noNetworkShopsAlertHeaderText() {
|
||||
return this.getCmsContent(
|
||||
|
|
@ -279,14 +294,18 @@ export default {
|
|||
}
|
||||
},
|
||||
providers(newProviders) {
|
||||
this.selectedProviderNumber = newProviders?.length === 1 ?? false
|
||||
? newProviders[0]?.providerNumber ?? ''
|
||||
: '';
|
||||
if (this.dataLoaded) {
|
||||
this.selectedProviderNumber = newProviders?.length === 1 ?? false
|
||||
? newProviders[0]?.providerNumber ?? ''
|
||||
: '';
|
||||
}
|
||||
},
|
||||
selectedProviderNumber(newNumber) {
|
||||
const provider = this.providers?.find((p) => p.providerNumber === newNumber);
|
||||
if (provider) {
|
||||
if (provider && this.dataLoaded) {
|
||||
useMainStore().updateServiceLocation({
|
||||
searchFilter: this.filter,
|
||||
zipCode: this.zipCode,
|
||||
provider: {
|
||||
providerNumber: provider?.providerNumber,
|
||||
address: {
|
||||
|
|
@ -309,11 +328,12 @@ export default {
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
setFilter(filter) {
|
||||
setInitialSearchData(zipCode, filter, providers, providerNumber) {
|
||||
this.zipCode = zipCode;
|
||||
this.mapZipCode = zipCode;
|
||||
this.filter = filter;
|
||||
},
|
||||
setProviders(providers) {
|
||||
this.providers = providers;
|
||||
this.selectedProviderNumber = providerNumber;
|
||||
},
|
||||
getProviderAddress(provider) {
|
||||
const city = toTitleCase(provider?.address?.city);
|
||||
|
|
|
|||
|
|
@ -671,7 +671,7 @@ const routingTable = () => [
|
|||
},
|
||||
{
|
||||
scenario: navigationScenarios.EDIT_PREFERRED_SHOP,
|
||||
destinationIssPageValue: issPageValues.PROVIDER_PREFERENCE
|
||||
destinationIssPageValue: issPageValues.TPA_SEARCH
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.EDIT_CONTACT_DETAILS,
|
||||
|
|
|
|||
|
|
@ -122,6 +122,7 @@ const getDefaultState = () => ({
|
|||
appointmentType: null,
|
||||
isVehicleProtected: null,
|
||||
IsSafeliteProvider: null,
|
||||
searchFilter: null,
|
||||
provider: {
|
||||
providerNumber: null,
|
||||
address: {
|
||||
|
|
@ -1373,6 +1374,7 @@ export const useMainStore = defineStore({
|
|||
companyName: serviceLocationInfo.provider?.companyName,
|
||||
phoneNumber: serviceLocationInfo.provider?.phoneNumber
|
||||
};
|
||||
this.order.serviceLocation.searchFilter = serviceLocationInfo.searchFilter;
|
||||
},
|
||||
|
||||
resetRegistrationState() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue