All files / server/src/features/assignment/utils getLotterySignupProgramItems.ts

100% Statements 14/14
100% Branches 2/2
100% Functions 1/1
100% Lines 14/14

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        45x       69x 69x 69x 69x     69x 269x 19362x 238x 238x 238x 238x         69x       69x    
import { logger } from "server/utils/logger";
import { ProgramItem } from "shared/types/models/programItem";
import { AssignmentLotterySignup } from "server/types/userTypes";
 
export const getLotterySignupProgramItems = (
  startingProgramItems: readonly ProgramItem[],
  lotterySignups: readonly AssignmentLotterySignup[],
): ProgramItem[] => {
  logger.debug("Get selected program items");
  const lotterySignupProgramItems: ProgramItem[] = [];
  let minAttendance = 0;
  let maxAttendance = 0;
 
  // Get valid program items from program items that are starting and program items that have lottery signups
  for (const startingProgramItem of startingProgramItems) {
    for (const lotterySignup of lotterySignups) {
      if (startingProgramItem.programItemId === lotterySignup.programItemId) {
        lotterySignupProgramItems.push(startingProgramItem);
        minAttendance += startingProgramItem.minAttendance;
        maxAttendance += startingProgramItem.maxAttendance;
        break;
      }
    }
  }
 
  logger.debug(
    `Found ${lotterySignupProgramItems.length} program items that have lottery signups and ${minAttendance}-${maxAttendance} available seats`,
  );
 
  return lotterySignupProgramItems;
};