diff --git a/functions/api/events-team/events/[id]/decision.ts b/functions/api/events-team/events/[id]/decision.ts index e7eb16c..6670463 100644 --- a/functions/api/events-team/events/[id]/decision.ts +++ b/functions/api/events-team/events/[id]/decision.ts @@ -1,14 +1,41 @@ import { jsonError } from "../../../../common.js"; +import sendEmail from "../../../../email.js"; export async function onRequestPost(context: RequestContext) { if (typeof context.data.body.approved !== "boolean") return jsonError("Decision type must be a boolean", 400); - await context.env.D1.prepare( - "UPDATE events SET approved = ?, pending = 0 WHERE id = ?;", - ) - .bind(Number(context.data.body.approved), context.data.event.id) - .run(); + const updatedEvent: Record | null = + await context.env.D1.prepare( + "UPDATE events SET approved = ?, pending = 0 WHERE id = ? RETURNING created_by, day, month, year;", + ) + .bind(Number(context.data.body.approved), context.data.event.id) + .first(); + + if (!updatedEvent) return jsonError("This event does not exist", 404); + + const email = await context.env.DATA.get( + `eventemail_${context.data.event.id}`, + ); + const usernameData: Record | null = + await context.env.D1.prepare("SELECT name FROM et_members WHERE id = ?;") + .bind(updatedEvent.created_by) + .first(); + + if (email && usernameData) { + await sendEmail( + email, + context.env.MAILGUN_API_KEY, + `Event ${context.data.body.approved ? "Approved" : "Rejected"}`, + `event_${context.data.body.approved ? "approved" : "rejected"}`, + { + date: `${updatedEvent.year}-${updatedEvent.month.toString().padStart(2, "0")}-${updatedEvent.day.toString().padStart(2, "0")}`, + username: usernameData.name, + }, + ); + } + + await context.env.DATA.delete(`eventemail_${context.data.event.id}`); return new Response(null, { status: 204, diff --git a/functions/api/events-team/events/new.ts b/functions/api/events-team/events/new.ts index c0680bd..b7043d8 100644 --- a/functions/api/events-team/events/new.ts +++ b/functions/api/events-team/events/new.ts @@ -93,6 +93,12 @@ export async function onRequestPost(context: RequestContext) { method: "POST", }); + await context.env.DATA.put( + `eventemail_${id}`, + context.data.current_user.email, + { expirationTtl: 2678400 }, + ); + return new Response(null, { status: 204, });