|
1 | 1 | import { defineStore } from 'pinia';
|
| 2 | +import pLimit from 'p-limit'; |
2 | 3 |
|
3 | 4 | import ApiService from '@/common/apiService.js';
|
4 | 5 | import { useAppStore } from '@/store/app.js';
|
@@ -41,59 +42,49 @@ async function mapFacility(facility) {
|
41 | 42 | const appStore = useAppStore();
|
42 | 43 | let facilityLicenseResponse = undefined;
|
43 | 44 | try {
|
44 |
| - facilityLicenseResponse = ( |
45 |
| - await ApiService.apiAxios.get(`${ApiRoutes.FACILITY}/${facility.facilityId}/licenseCategories`) |
46 |
| - ).data; |
47 |
| - facility.licenseCategories = parseLicenseCategories(facilityLicenseResponse); |
| 45 | + facilityLicenseResponse = await ApiService.apiAxios.get( |
| 46 | + `${ApiRoutes.FACILITY}/${facility.facilityId}/licenseCategories`, |
| 47 | + ); |
| 48 | + facility.licenseCategories = parseLicenseCategories(facilityLicenseResponse.data); |
48 | 49 | } catch {
|
49 | 50 | console.log('error, unable to get childcare category for provider: ', facility.facilityId);
|
50 | 51 | }
|
51 | 52 |
|
52 | 53 | // check for opt out - no need for more calls if opt-out
|
53 | 54 | if (facility.ccfri?.ccfriId && facility.ccfri?.ccfriOptInStatus == 1) {
|
54 |
| - const ccfriPromises = [ApiService.apiAxios.get(`${ApiRoutes.CCFRIFACILITY}/${facility.ccfri.ccfriId}`)]; |
55 |
| - const afterLoadHooks = [ |
56 |
| - (data) => { |
57 |
| - facility.ccfri.childCareTypes = data.childCareTypes; |
58 |
| - facility.ccfri.dates = data.dates; |
59 |
| - }, |
60 |
| - ]; |
| 55 | + const ccfri = await ApiService.apiAxios.get(`${ApiRoutes.CCFRIFACILITY}/${facility.ccfri.ccfriId}`); |
| 56 | + facility.ccfri.childCareTypes = ccfri.data.childCareTypes; |
| 57 | + facility.ccfri.dates = ccfri.data.dates; |
61 | 58 |
|
62 | 59 | // load up the previous ccfri app if it exists, so we can check that we are not missing any child care fee
|
63 | 60 | // categories from the last year.
|
64 | 61 | if (facility.ccfri.previousCcfriId) {
|
65 |
| - ccfriPromises.push(ApiService.apiAxios.get(`${ApiRoutes.CCFRIFACILITY}/${facility.ccfri.previousCcfriId}`)); |
66 |
| - afterLoadHooks.push((data) => (facility.ccfri.prevYearCcfriApp = data)); |
| 62 | + const previousCcfriid = await ApiService.apiAxios.get( |
| 63 | + `${ApiRoutes.CCFRIFACILITY}/${facility.ccfri.previousCcfriId}`, |
| 64 | + ); |
| 65 | + facility.ccfri.prevYearCcfriApp = previousCcfriid.data; |
67 | 66 | }
|
68 | 67 |
|
69 | 68 | if (facility.ccfri?.hasRfi || facility.ccfri?.unlockRfi) {
|
70 |
| - ccfriPromises.push(ApiService.apiAxios.get(`${ApiRoutes.APPLICATION_RFI}/${facility.ccfri.ccfriId}/rfi`)); |
71 |
| - afterLoadHooks.push((data) => (facility.rfiApp = data)); |
| 69 | + const rfiApp = await ApiService.apiAxios.get(`${ApiRoutes.APPLICATION_RFI}/${facility.ccfri.ccfriId}/rfi`); |
| 70 | + facility.rfiApp = rfiApp.data; |
72 | 71 | }
|
73 | 72 |
|
74 | 73 | if (facility.ccfri?.hasNmf || facility.ccfri?.unlockNmf) {
|
75 |
| - ccfriPromises.push(ApiService.apiAxios.get(`${ApiRoutes.APPLICATION_NMF}/${facility.ccfri.ccfriId}/nmf`)); |
76 |
| - afterLoadHooks.push((data) => (facility.nmfApp = data)); |
| 74 | + const nmfApp = await ApiService.apiAxios.get(`${ApiRoutes.APPLICATION_NMF}/${facility.ccfri.ccfriId}/nmf`); |
| 75 | + facility.nmfApp = nmfApp.data; |
77 | 76 | }
|
78 | 77 |
|
79 |
| - const APIResponses = await Promise.all(ccfriPromises); |
80 |
| - const dataFromResponses = APIResponses.map((res) => res.data); |
81 |
| - |
82 | 78 | facility.ccfri.childCareLicenses = facilityLicenseResponse; // jb - so I can build the CCFRI section
|
83 | 79 | const ccofProgramYearId = applicationStore.programYearId;
|
84 | 80 | const programYearList = appStore.programYearList.list;
|
85 | 81 | facility.ccfri.currentYear = getProgramYear(ccofProgramYearId, programYearList);
|
86 | 82 | facility.ccfri.prevYear = getProgramYear(facility.ccfri.currentYear.previousYearId, programYearList);
|
87 |
| - |
88 |
| - for (let i = 0; i < afterLoadHooks.length; i++) { |
89 |
| - const hook = afterLoadHooks[i]; |
90 |
| - const data = dataFromResponses[i]; |
91 |
| - hook(data); |
92 |
| - } |
93 | 83 | }
|
94 | 84 |
|
95 | 85 | // jb changed below to work with renewel apps
|
96 |
| - facility.facilityInfo = (await ApiService.apiAxios.get(`${ApiRoutes.FACILITY}/${facility.facilityId}`)).data; |
| 86 | + const facilityInfo = await ApiService.apiAxios.get(`${ApiRoutes.FACILITY}/${facility.facilityId}`); |
| 87 | + facility.facilityInfo = facilityInfo.data; |
97 | 88 |
|
98 | 89 | return facility;
|
99 | 90 | }
|
@@ -289,9 +280,12 @@ export const useSummaryDeclarationStore = defineStore('summaryDeclaration', {
|
289 | 280 |
|
290 | 281 | try {
|
291 | 282 | const mappedFacilities = [];
|
| 283 | + const limit = pLimit(3); |
| 284 | + |
292 | 285 | for (const facility of summaryModel.facilities) {
|
293 |
| - mappedFacilities.push(mapFacility(facility)); |
| 286 | + mappedFacilities.push(limit(() => mapFacility(facility))); |
294 | 287 | }
|
| 288 | + |
295 | 289 | summaryModel.facilities = await Promise.all(mappedFacilities);
|
296 | 290 | } catch (error) {
|
297 | 291 | console.log(`Failed to load Summary - ${error}`);
|
|
0 commit comments