X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fhelpers%2FTournament.js;h=60354c2b6bdeae9d927a0cd32714b74e6941d830;hb=cd36cb0ba2718e6bfa08765e7702d57dfe7fd733;hp=ec141d12829b9758405314e052ddeae2aba9d7d7;hpb=d32516335ea2534e15256c948e9c38d3de40794b;p=alttp.git diff --git a/resources/js/helpers/Tournament.js b/resources/js/helpers/Tournament.js index ec141d1..60354c2 100644 --- a/resources/js/helpers/Tournament.js +++ b/resources/js/helpers/Tournament.js @@ -1,3 +1,4 @@ +import Application from './Application'; import Participant from './Participant'; import Round from './Round'; @@ -15,6 +16,13 @@ export const findParticipant = (tournament, user) => { 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 @@ -29,6 +37,20 @@ export const getTournamentAdmins = tournament => { .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; }; @@ -37,6 +59,36 @@ 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 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) { @@ -88,6 +140,16 @@ export const patchUser = (tournament, user) => { }; }; +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; @@ -103,6 +165,12 @@ export default { findParticipant, getRunners, getTournamentAdmins, + getTournamentCrew, + getTournamentMonitors, + hasRunners, + hasTournamentAdmins, + hasTournamentCrew, + hasTournamentMonitors, patchResult, patchRound, patchUser,