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 63 64 65 | 45x 79x 79x 10x 73x 69x 69x 69x 69x 69x 69x 69x 327x 73x 254x 69x | import { getLotterySignups } from "server/features/assignment/utils/getLotterySignups";
import { getLotterySignupProgramItems } from "server/features/assignment/utils/getLotterySignupProgramItems";
import { getGroupCreators } from "server/features/assignment/utils/getGroupCreators";
import { getAttendeeGroups } from "server/features/assignment/utils/getAttendeeGroups";
import { getGroupMembersWithCreatorLotterySignups } from "server/features/assignment/utils/getGroupMembers";
import { User } from "shared/types/models/user";
import { ProgramItem } from "shared/types/models/programItem";
import { RunRandomAndPadgInput } from "server/types/resultTypes";
// TODO: When using PADG+random, this is called twice - lift higher
export const getRandomAndPadgInput = (
users: readonly User[],
startingProgramItems: readonly ProgramItem[],
): RunRandomAndPadgInput => {
const lotterySignups = getLotterySignups(users);
if (lotterySignups.length === 0) {
return {
lotterySignupProgramItems: [],
attendeeGroups: [],
allAttendees: [],
numberOfIndividuals: 0,
numberOfGroups: 0,
};
}
const lotterySignupProgramItems = getLotterySignupProgramItems(
startingProgramItems,
lotterySignups,
);
// Get group creators, selected users are group creators since group members don't have signups yet
const groupCreators = getGroupCreators(users, startingProgramItems);
// Get group members based on group creators
const groupMembers = getGroupMembersWithCreatorLotterySignups(
groupCreators,
users,
);
// Combine group creators and group members
const allAttendees = [...groupCreators, ...groupMembers];
// Combine users to groups, single user is size 1 group
const attendeeGroups = getAttendeeGroups(allAttendees);
let numberOfIndividuals = 0;
let numberOfGroups = 0;
for (const attendeeGroup of attendeeGroups) {
if (attendeeGroup.length > 1) {
numberOfGroups += 1;
} else {
numberOfIndividuals += 1;
}
}
return {
lotterySignupProgramItems,
attendeeGroups,
allAttendees,
numberOfIndividuals,
numberOfGroups,
};
};
|