diff --git a/src/routes/api/registeredEvents/+server.ts b/src/routes/api/registeredEvents/+server.ts index b50b4c0..de4139b 100644 --- a/src/routes/api/registeredEvents/+server.ts +++ b/src/routes/api/registeredEvents/+server.ts @@ -1,7 +1,8 @@ import { globalEmitter, getRegisteredEvents, - getAllRegisteredEventPlayers + getAllRegisteredEventPlayers, + getAllBrackets } from '$lib/server/eventManager'; import { generateEndpoint } from '$lib/server/endpoint'; @@ -13,6 +14,10 @@ export async function GET() { let newEvents = await getRegisteredEvents(); let registeredEventList = newEvents['events']; + // Get all possible brackets from the database + let brackets = await getAllBrackets(); + + // Initilise the final eventList let fullEventList: any[] = []; // For every event @@ -22,17 +27,20 @@ export async function GET() { // Get all players for the event let registeredPlayers = await getAllRegisteredEventPlayers(event.id); - // Some nonsense to extract the players into a better object - let registeredPlayersVec: any[] = []; - for (let player in registeredPlayers.eventPlayers) { - let currentPlayer = registeredPlayers.eventPlayers[player]; - registeredPlayersVec.push(currentPlayer); - } + // Map the players into an [] with structure {id: number, name: string, items: any[]} + // So that the players are sorted by bracket for the frontend + const bracketOrder = brackets.brackets.map((category) => { + return { + ...category, + // Filter the items that match the current bracket name + items: registeredPlayers.eventPlayers.filter((item) => item.bracket === category.name) + }; + }); - // add registeredPlayers as part of the event object + // append the player info to the event object let eventWithPlayers = { ...event, - registeredPlayers: registeredPlayersVec + registeredPlayers: bracketOrder }; // combine all of the events into one array fullEventList.push(eventWithPlayers);