(isRefresh = false)
| 12 | import {decodePathParam} from "../RouteUtils"; |
| 13 | |
| 14 | async function getAllRecords(isRefresh = false) { |
| 15 | let programs = await getPrograms(isRefresh); |
| 16 | programs = Object.values(programs).flat().filter(program => program.Applicants?.length > 0); |
| 17 | const recordIDs = programs.flatMap(program => ( |
| 18 | program.Applicants.map(applicant => applicant + "|" + program.ProgramID) |
| 19 | )); |
| 20 | const programOrder = new Map(programs.map((program, index) => [program.ProgramID, index])); |
| 21 | const recordsById = await getRecordByRecordIDs(recordIDs, isRefresh); |
| 22 | const missingRecordIDs = recordIDs.filter((recordId) => !isLoadedRecord(recordsById[recordId])); |
| 23 | const refreshedMissingRecords = missingRecordIDs.length > 0 && !isRefresh |
| 24 | ? await getRecordByRecordIDs(missingRecordIDs, true) |
| 25 | : {}; |
| 26 | return Object.values({...recordsById, ...refreshedMissingRecords}) |
| 27 | .filter(isLoadedRecord) |
| 28 | .sort((a, b) => { |
| 29 | return (programOrder.get(a.ProgramID) ?? Number.MAX_SAFE_INTEGER) - |
| 30 | (programOrder.get(b.ProgramID) ?? Number.MAX_SAFE_INTEGER); |
| 31 | }); |
| 32 | } |
| 33 | |
| 34 | export async function loader() { |
| 35 | return {records: await getAllRecords()}; |
no test coverage detected