holy shit i can score an event properly!!!! this is awesome
This commit is contained in:
@@ -22,7 +22,6 @@ export async function POST({ request }: any) {
|
||||
return new Error();
|
||||
}
|
||||
let scoringPreset = eventData.events[0].scoringPreset;
|
||||
console.log(scoringPreset);
|
||||
|
||||
// make a new main ledger entry
|
||||
let newLedgerEntry = await db
|
||||
@@ -45,41 +44,77 @@ export async function POST({ request }: any) {
|
||||
);
|
||||
}
|
||||
|
||||
// for every bracket and player
|
||||
// Create a Map to collect total scores per team
|
||||
const teamScores = new Map<any, number>();
|
||||
|
||||
// for every bracket
|
||||
for (let bracket in responseBody.brackets) {
|
||||
// for every player
|
||||
for (let player in responseBody.brackets[bracket].players) {
|
||||
// variable fun
|
||||
let currentPlayer = responseBody.brackets[bracket].players[player];
|
||||
console.log(currentPlayer);
|
||||
let currentPlayerTeam = currentPlayer.teamId;
|
||||
let currentPlayerPosition = currentPlayer.position;
|
||||
|
||||
// If they put in a score
|
||||
// If they put in a score / result
|
||||
if (currentPlayerPosition > 0) {
|
||||
let score = getPoints(scoringPreset, currentPlayerPosition);
|
||||
// If their score is in the preset and they put in a score
|
||||
if (currentPlayer.scores.length > 0) {
|
||||
if (score > 0) {
|
||||
// put the scores on the board baby
|
||||
// THIS SHOULDNT BE REFERENCED THIS IS INTENDED
|
||||
let newScoreLedgerEntry = await db
|
||||
.insert(schema.scoreLedger)
|
||||
.values({ ledgerID: ledgerEntryId, teamID: currentPlayerTeam, points: score });
|
||||
// Accumulate points for this team instead of inserting right away
|
||||
const currentTeamScore = teamScores.get(currentPlayerTeam) || 0;
|
||||
teamScores.set(currentPlayerTeam, currentTeamScore + score);
|
||||
}
|
||||
|
||||
// PLACEMENT LOGIC (Left untouched)
|
||||
let newPlayerPlacement = await db
|
||||
.update(schema.registeredPlayers)
|
||||
.set({ placement: currentPlayerPosition })
|
||||
.where(eq(schema.registeredPlayers.playerID, currentPlayer.id))
|
||||
.where(eq(schema.registeredPlayers.id, currentPlayer.registeredPlayerId))
|
||||
.returning();
|
||||
console.log(newPlayerPlacement);
|
||||
console.log(newPlayerPlacement[0].placement, currentPlayer.firstName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// After calculating all player scores, batch insert team scores into the ledger
|
||||
if (teamScores.size > 0) {
|
||||
const ledgerEntries = Array.from(teamScores.entries()).map(([teamID, points]) => ({
|
||||
ledgerID: ledgerEntryId,
|
||||
teamID,
|
||||
points
|
||||
}));
|
||||
|
||||
let newScores = await db.insert(schema.scoreLedger).values(ledgerEntries).returning();
|
||||
console.log(newScores);
|
||||
}
|
||||
|
||||
// 2. Determine the winner right here using the same Map data
|
||||
let highestScore = -1;
|
||||
let winningTeamId = null;
|
||||
|
||||
for (let [teamID, points] of teamScores.entries()) {
|
||||
if (points > highestScore) {
|
||||
highestScore = points;
|
||||
winningTeamId = teamID;
|
||||
}
|
||||
}
|
||||
|
||||
if (winningTeamId) {
|
||||
let teamWinnerUpdate = await db
|
||||
.update(schema.registeredEvents)
|
||||
.set({ teamWinner: winningTeamId, state: 2, timeCompleted: Date.now() })
|
||||
.where(eq(schema.registeredEvents.id, responseBody.eventId))
|
||||
.returning();
|
||||
console.log(teamWinnerUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
// Update the frontends
|
||||
globalEmitter.emit('scoreUpdate');
|
||||
// Return a resonse because
|
||||
// Return a response because
|
||||
return new Response('coolsies');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user