Improve calculation to match the monthly job

This commit is contained in:
Regalijan 2024-09-13 14:49:50 -04:00
parent 4f08791f98
commit 8711794bc4
Signed by: regalijan
GPG Key ID: 5D4196DA269EF520

View File

@ -37,6 +37,11 @@ export async function loader({ context }: { context: RequestContext }) {
const eventMemberQuery = await context.env.D1.prepare(
"SELECT id, name, roblox_id FROM et_members;",
).all();
const inactivityQuery: D1Result<Record<string, any>> =
await context.env.D1.prepare(
"SELECT decisions, json_extract(user, '$.id') AS uid FROM inactivity_notices WHERE (end BETWEEN DATE('now', 'start of month', '-1 month') AND DATE('now', 'start of month', '-1 day')) OR (start BETWEEN DATE('now', 'start of month', '-1 month') AND DATE('now', 'start of month', '-1 day'));",
).all();
const eventsQuery = await context.env.D1.prepare(
"SELECT approved, answered_at, created_by, performed_at, reached_minimum_player_count, type FROM events WHERE month = ? AND year = ?;",
)
@ -62,14 +67,20 @@ export async function loader({ context }: { context: RequestContext }) {
if (!memberMap[event.created_by] || !event.approved) continue;
if (event.performed_at) memberMap[event.created_by].points += 10;
else memberMap[event.created_by].points -= 10;
else memberMap[event.created_by].points -= 5;
if (event.type === "gamenight" && event.reached_minimum_player_count)
memberMap[event.created_by].points += 10;
}
for (const member of Object.keys(memberMap))
if (memberMap[member].points < 30) memberMap[member].points -= 30;
if (
memberMap[member].points < 30 &&
!inactivityQuery.results.find(
(i) => i.uid === member && JSON.parse(i.decisions).et,
)
)
memberMap[member].points -= 30;
return memberMap;
}