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,
|
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;
|
can_manage: boolean;
|
||||||
members: { [k: string]: any }[];
|
members: { [k: string]: any }[];
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user