From adde22804a3774f22a501c34935b97278f81c427 Mon Sep 17 00:00:00 2001 From: regalijan Date: Fri, 20 Oct 2023 13:56:40 -0400 Subject: [PATCH] Send notifications on inactivity notice closure --- functions/api/inactivity/[id].ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/functions/api/inactivity/[id].ts b/functions/api/inactivity/[id].ts index 97efeee..b2040bb 100644 --- a/functions/api/inactivity/[id].ts +++ b/functions/api/inactivity/[id].ts @@ -1,4 +1,6 @@ import { jsonError } from "../../common.js"; +import sendEmail from "../../email.js"; +import { sendPushNotification } from "../../gcloud.js"; import validateInactivityNotice from "./validate.js"; export async function onRequestDelete(context: RequestContext) { @@ -65,11 +67,34 @@ export async function onRequestPost(context: RequestContext) { if (Object.values(decisions).length === requestedNotice.departments.length) { requestedNotice.open = false; + const approved = !Object.values(decisions).find((d) => !d); + await context.env.D1.prepare( "UPDATE inactivity_notices SET open = 0 WHERE id = ?;", ) .bind(context.params.id) .run(); + + if (requestedNotice.fcm_token) { + await sendPushNotification( + context.env, + `Inactivity Request ${approved ? "Approved" : "Denied"}`, + accepted + ? "Your inactivity request was approved." + : "Your inactivity request was denied, please reach to management if you require more details.", + requestedNotice.fcm_token, + ); + } else { + await sendEmail( + requestedNotice.user.email, + context.env.MAILGUN_API_KEY, + `Inactivity Request ${approved ? "Approved" : "Denied"}`, + `inactivity_${approved ? "approved" : "denied"}`, + { username: requestedNotice.user.username }, + ); + } + + delete requestedNotice.user.email; } await context.env.DATA.put(