Check weekly ranges for rotws
This commit is contained in:
parent
4f4e51691c
commit
6aaa96ba57
@ -5,12 +5,13 @@ export async function onRequestPost(context: RequestContext) {
|
||||
const now = new Date();
|
||||
const currentMonth = now.getUTCMonth();
|
||||
const currentYear = now.getUTCFullYear();
|
||||
const lastDayOfMonth = new Date(currentYear, currentMonth, 0).getUTCDate();
|
||||
|
||||
if (
|
||||
typeof day !== "number" ||
|
||||
day < 1 ||
|
||||
// Last day of that month
|
||||
day > new Date(currentYear, currentMonth, 0).getUTCDate() ||
|
||||
day > lastDayOfMonth ||
|
||||
// Stop people sending weird decimal days
|
||||
parseInt(day.toString()) !== day ||
|
||||
typeof details !== "string" ||
|
||||
@ -32,6 +33,32 @@ export async function onRequestPost(context: RequestContext) {
|
||||
400,
|
||||
);
|
||||
|
||||
if (type === "rotw") {
|
||||
const weekRanges: { [k: number]: number } = {
|
||||
0: 7,
|
||||
1: 14,
|
||||
2: 21,
|
||||
3: 28,
|
||||
4: 35,
|
||||
};
|
||||
|
||||
const weekRange = Math.floor(day / 7);
|
||||
|
||||
const existingEventInRange = await context.env.D1.prepare(
|
||||
"SELECT id FROM events WHERE day > ? AND day <= ? AND month = ? AND type = 'rotw' AND year = ?;",
|
||||
)
|
||||
.bind(
|
||||
weekRanges[weekRange] - 7,
|
||||
weekRanges[weekRange],
|
||||
currentMonth,
|
||||
currentYear,
|
||||
)
|
||||
.first();
|
||||
|
||||
if (existingEventInRange)
|
||||
return jsonError("There is already an rotw for that week", 400);
|
||||
}
|
||||
|
||||
const id = `${now.getTime()}${crypto.randomUUID().replaceAll("-", "")}`;
|
||||
|
||||
await context.env.D1.prepare(
|
||||
|
Loading…
x
Reference in New Issue
Block a user