import type { ConfigurationContextValue } from "../root/ConfigurationContext"; import type { Deal } from "../types"; export type DealsByStage = Record; export const getDealsByStage = ( unorderedDeals: Deal[], dealStages: ConfigurationContextValue["dealStages"], ) => { if (!dealStages) return {}; const dealsByStage: Record = unorderedDeals.reduce( (acc, deal) => { if (acc[deal.stage]) { acc[deal.stage].push(deal); } return acc; }, dealStages.reduce( (obj, stage) => ({ ...obj, [stage.value]: [] }), {} as Record, ), ); // order each column by index dealStages.forEach((stage) => { dealsByStage[stage.value] = dealsByStage[stage.value].sort( (recordA: Deal, recordB: Deal) => recordA.index - recordB.index, ); }); return dealsByStage; };