+export const getRunners = tournament => {
+ if (!tournament || !tournament.participants || !tournament.participants.length) return [];
+ return tournament.participants
+ .filter(Participant.isRunner)
+ .sort(Participant.compareUsername);
+};
+
+export const getTournamentAdmins = tournament => {
+ if (!tournament || !tournament.participants || !tournament.participants.length) return [];
+ return tournament.participants
+ .filter(Participant.isTournamentAdmin)
+ .sort(Participant.compareUsername);
+};
+
+export const getTournamentCrew = tournament => {
+ if (!tournament || !tournament.participants || !tournament.participants.length) return [];
+ return tournament.participants
+ .filter(Participant.isTournamentCrew)
+ .sort(Participant.compareUsername);
+};
+
+export const getTournamentMonitors = tournament => {
+ if (!tournament || !tournament.participants || !tournament.participants.length) return [];
+ return tournament.participants
+ .filter(Participant.isTournamentMonitor)
+ .sort(Participant.compareUsername);
+};
+
+export const hasRunners = tournament => {
+ return getRunners(tournament).length > 0;
+};
+
+export const hasTournamentAdmins = tournament => {
+ return getTournamentAdmins(tournament).length > 0;
+};
+
+export const hasTournamentCrew = tournament => {
+ return getTournamentCrew(tournament).length > 0;
+};
+
+export const hasTournamentMonitors = tournament => {
+ return getTournamentMonitors(tournament).length > 0;
+};
+
+export const patchParticipant = (tournament, participant) => {
+ if (!tournament) return tournament;
+ if (!tournament.participants || !tournament.participants.length) {
+ return {
+ ...tournament,
+ participants: [participant],
+ };
+ }
+ if (!tournament.participants.find(p => p.id === participant.id)) {
+ return {
+ ...tournament,
+ participants: [...tournament.participants, participant],
+ };
+ }
+ return {
+ ...tournament,
+ participants: tournament.participants.map(
+ p => p.id === participant.id ? participant : p,
+ ),
+ };
+};
+