Add partial real-time points calculation
This commit is contained in:
parent
80d90e8670
commit
c4b22b6687
@ -55,7 +55,34 @@ export async function loader({ context }: { context: RequestContext }) {
|
||||
status: 500,
|
||||
});
|
||||
|
||||
return { can_manage: true, members: etData.results } as {
|
||||
const now = new Date();
|
||||
const members = etData.results as { [k: string]: any }[];
|
||||
const currentMonthEvents = await context.env.D1.prepare(
|
||||
"SELECT answered_at, created_by, performed_at, reached_minimum_player_count, type FROM events WHERE year = ? AND month = ?;",
|
||||
)
|
||||
.bind(now.getUTCFullYear(), now.getUTCMonth() + 1)
|
||||
.all();
|
||||
|
||||
if (!currentMonthEvents.error) {
|
||||
for (const event of currentMonthEvents.results as { [k: string]: any }[]) {
|
||||
const memberIdx = members.findIndex((m) => m.id === event.created_by);
|
||||
|
||||
if (memberIdx === -1) continue;
|
||||
|
||||
if (event.performed_at) members[memberIdx].points += 10;
|
||||
if (event.type === "gamenight" && event.reached_minimum_player_count)
|
||||
members[memberIdx].points += 10;
|
||||
if (
|
||||
event.type === "rotw" &&
|
||||
event.answered_at - event.performed_at >= 86400000
|
||||
)
|
||||
members[memberIdx].points += 10;
|
||||
if (!event.performed_at && event.day < now.getUTCDate())
|
||||
members[memberIdx].points -= 5;
|
||||
}
|
||||
}
|
||||
|
||||
return { can_manage: true, members } as {
|
||||
can_manage: boolean;
|
||||
members: { [k: string]: any }[];
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user