+import Application from './Application';
import Participant from './Participant';
import Round from './Round';
return tournament.participants.find(p => p.user_id == user.id);
};
+export const getPendingApplications = tournament => {
+ if (!tournament || !tournament.applications || !tournament.applications.length) return [];
+ return tournament.applications
+ .filter(Application.isPending)
+ .sort(Application.compareUsername);
+};
+
export const getRunners = tournament => {
if (!tournament || !tournament.participants || !tournament.participants.length) return [];
return tournament.participants
.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;
};
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 patchApplication = (tournament, application) => {
+ if (!tournament) return tournament;
+ if (!tournament.applications || !tournament.applications.length) {
+ return {
+ ...tournament,
+ applications: [application],
+ };
+ }
+ if (!tournament.applications.find(a => a.user_id == application.user_id)) {
+ return {
+ ...tournament,
+ applications: [...tournament.applications, application],
+ };
+ }
+ return {
+ ...tournament,
+ applications: tournament.applications.map(
+ a => a.user_id === application.user_id ? application : a,
+ ),
+ };
+};
+
export const patchParticipant = (tournament, participant) => {
if (!tournament) return tournament;
if (!tournament.participants || !tournament.participants.length) {
};
};
+export const removeApplication = (tournament, id) => {
+ if (!tournament || !tournament.applications || !tournament.applications.find(a => a.id == id)) {
+ return tournament;
+ }
+ return {
+ ...tournament,
+ applications: tournament.applications.filter(a => a.id != id),
+ };
+};
+
export const sortParticipants = tournament => {
if (!tournament || !tournament.participants || !tournament.participants.length) {
return tournament;
findParticipant,
getRunners,
getTournamentAdmins,
+ getTournamentCrew,
+ getTournamentMonitors,
+ hasRunners,
+ hasTournamentAdmins,
+ hasTournamentCrew,
+ hasTournamentMonitors,
patchResult,
patchRound,
patchUser,