diff --git a/src/layouts/tpa-search/tpa-search.vue b/src/layouts/tpa-search/tpa-search.vue index 7f763f6e..9f686ed4 100644 --- a/src/layouts/tpa-search/tpa-search.vue +++ b/src/layouts/tpa-search/tpa-search.vue @@ -199,7 +199,21 @@ export default { filter: globalRules.OPTION_REQUIRED, // TODO do we even need this? provider: globalRules.OPTION_REQUIRED }, - shopListButton: shallowRef(shopListButton) + shopListButton: shallowRef(shopListButton), + radiusFilterPairs: [ + { + radius: 25, + filter: '25 miles' + }, + { + radius: 50, + filter: '50 miles' + }, + { + radius: 100, + filter: '100 miles' + } + ] }; }, computed: { @@ -233,16 +247,18 @@ export default { ); }, radiusInMiles() { - switch (this.filter) { - case '25 miles': - return 25; - case '50 miles': - return 50; - case '100 miles': - return 100; - default: - return 0; - } + const pair = this.radiusFilterPairs.find((p) => p.filter === this.filter); + return pair?.radius ?? 0; + // switch (this.filter) { + // case '25 miles': + // return 25; + // case '50 miles': + // return 50; + // case '100 miles': + // return 100; + // default: + // return 0; + // } }, noNetworkShopsAlertHeaderText() { return this.getCmsContent( @@ -312,18 +328,32 @@ export default { this.initialLoading = true; const { zipCode } = useMainStore().order.customer.address; - let radius = '25 miles'; - let providers = await useMainStore().getTpaProviders(zipCode, 25); - if ((providers?.data?.shopProviders ?? []).length === 0) { - radius = '50 miles'; - providers = await useMainStore().getTpaProviders(zipCode, 50); - if ((providers?.data?.shopProviders ?? []).length === 0) { - radius = '100 miles'; - providers = await useMainStore().getTpaProviders(zipCode, 100); - } + let pairIndex = 0; + let providers = []; + let filter = ''; + while (providers.length === 0 && pairIndex < this.radiusFilterPairs.length) { + const pair = this.radiusFilterPairs[pairIndex]; + const { radius } = pair; + filter = pair.filter; + // eslint-disable-next-line no-await-in-loop + const result = await useMainStore().getTpaProviders(zipCode, radius); + providers = result?.data?.shopProviders ?? []; + + pairIndex += 1; } - this.filter = radius; - this.providers = providers?.data?.shopProviders ?? []; + + // let radius = '25 miles'; + // let providers = await useMainStore().getTpaProviders(zipCode, 25); + // if ((providers?.data?.shopProviders ?? []).length === 0) { + // radius = '50 miles'; + // providers = await useMainStore().getTpaProviders(zipCode, 50); + // if ((providers?.data?.shopProviders ?? []).length === 0) { + // radius = '100 miles'; + // providers = await useMainStore().getTpaProviders(zipCode, 100); + // } + // } + this.filter = filter; + this.providers = providers; }, async getProviderButtonData() { const getTpaProvidersResult = await useMainStore().getTpaProviders(this.zipCode, this.radiusInMiles);