Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | 44x 18x 11x 19x 11x 11x 44x 2x 2x 6x 6x 2x 44x 16x 16x 5x 5x 14x | import dayjs, { Dayjs } from "dayjs";
import { config } from "shared/config";
import { ProgramItem } from "shared/types/models/programItem";
import { LotterySignup } from "shared/types/models/user";
import { getLotterySignupEndTime } from "shared/utils/signupTimes";
const getLotterySignupProgramItems = (
lotterySignups: readonly LotterySignup[],
programItems: readonly ProgramItem[],
): ProgramItem[] =>
lotterySignups.flatMap((signup) => {
const found = programItems.find(
(programItem) => programItem.programItemId === signup.programItemId,
);
Iif (!found) {
return [];
}
return found;
});
export const getUpcomingLotterySignupProgramItemIds = (
lotterySignups: readonly LotterySignup[],
programItems: readonly ProgramItem[],
timeNow: Dayjs,
): string[] => {
const lotterySignupProgramItems = getLotterySignupProgramItems(
lotterySignups,
programItems,
);
return lotterySignupProgramItems
.filter((lotterySignupProgramItem) => {
const parentStartTime = config
.event()
.startTimesByParentIds.get(lotterySignupProgramItem.parentId);
return timeNow.isBefore(
dayjs(parentStartTime ?? lotterySignupProgramItem.startTime),
);
})
.map((programItem) => programItem.programItemId);
};
export const getLotteryNotYetRunProgramItemIds = (
lotterySignups: readonly LotterySignup[],
programItems: readonly ProgramItem[],
timeNow: Dayjs,
): string[] => {
const lotterySignupProgramItems = getLotterySignupProgramItems(
lotterySignups,
programItems,
);
return lotterySignupProgramItems
.filter((lotterySignupProgramItem) => {
const lotterySignupEndTime = getLotterySignupEndTime(
lotterySignupProgramItem,
);
return timeNow.isBefore(lotterySignupEndTime);
})
.map((programItem) => programItem.programItemId);
};
|