From 2c4168a014b850cba0cdbc88018691695e5cb430 Mon Sep 17 00:00:00 2001 From: Tiago Ribeiro Date: Mon, 29 Jan 2024 13:19:12 +0000 Subject: [PATCH] Created an e-mail type to be sent to the ticket reporter with the ticket's information --- .../templates/submittedFeedback.handlebars | 35 +++++++++++++++++++ src/pages/api/invites/index.ts | 10 +++--- src/pages/api/tickets/index.ts | 26 ++++++++++++-- 3 files changed, 64 insertions(+), 7 deletions(-) create mode 100644 src/email/templates/submittedFeedback.handlebars diff --git a/src/email/templates/submittedFeedback.handlebars b/src/email/templates/submittedFeedback.handlebars new file mode 100644 index 00000000..4bbd94b2 --- /dev/null +++ b/src/email/templates/submittedFeedback.handlebars @@ -0,0 +1,35 @@ + + + + + + + + +
+ +
+ Thank you for your ticket submission! +
+ Here is the ticket's information: +
+
+ ID: {{id}}
+ Subject: {{subject}}
+ Reporter: {{reporter.name}} - {{reporter.email}}
+ Date: {{date}}
+ Type: {{type}}
+ Page: {{reportedFrom}} +
+
+ Description: {{description}}
+
+
+
+
+ Thanks,
Your EnCoach team
+
+
+ + diff --git a/src/pages/api/invites/index.ts b/src/pages/api/invites/index.ts index 4481680e..72402665 100644 --- a/src/pages/api/invites/index.ts +++ b/src/pages/api/invites/index.ts @@ -45,11 +45,6 @@ async function get(req: NextApiRequest, res: NextApiResponse) { async function post(req: NextApiRequest, res: NextApiResponse) { const body = req.body as Invite; - const shortUID = new ShortUniqueId(); - await setDoc(doc(db, "invites", body.id || shortUID.randomUUID(8)), body); - - res.status(200).json({ ok: true }); - const invitedRef = await getDoc(doc(db, "users", body.to)); if (!invitedRef.exists()) return res.status(404).json({ ok: false }); @@ -76,4 +71,9 @@ async function post(req: NextApiRequest, res: NextApiResponse) { } catch (e) { console.log(e); } + + const shortUID = new ShortUniqueId(); + await setDoc(doc(db, "invites", body.id || shortUID.randomUUID(8)), body); + + res.status(200).json({ ok: true }); } diff --git a/src/pages/api/tickets/index.ts b/src/pages/api/tickets/index.ts index 670e9fc4..009ed4b9 100644 --- a/src/pages/api/tickets/index.ts +++ b/src/pages/api/tickets/index.ts @@ -1,6 +1,7 @@ // Next.js API route support: https://nextjs.org/docs/api-routes/introduction +import { sendEmail } from "@/email"; import { app } from "@/firebase"; -import { Ticket } from "@/interfaces/ticket"; +import { Ticket, TicketTypeLabel } from "@/interfaces/ticket"; import { sessionOptions } from "@/lib/session"; import { collection, @@ -10,6 +11,7 @@ import { setDoc, } from "firebase/firestore"; import { withIronSessionApiRoute } from "iron-session/next"; +import moment from "moment"; import type { NextApiRequest, NextApiResponse } from "next"; import ShortUniqueId from "short-unique-id"; @@ -42,6 +44,26 @@ async function post(req: NextApiRequest, res: NextApiResponse) { const body = req.body as Ticket; const shortUID = new ShortUniqueId(); - await setDoc(doc(db, "tickets", body.id || shortUID.randomUUID(8)), body); + const id = body.id || shortUID.randomUUID(8); + await setDoc(doc(db, "tickets", id), body); res.status(200).json({ ok: true }); + + try { + await sendEmail( + "submittedFeedback", + { + id, + subject: body.subject, + reporter: body.reporter, + date: moment(body.date).format("DD/MM/YYYY - HH:mm"), + type: TicketTypeLabel[body.type], + reportedFrom: body.reportedFrom, + description: body.description, + }, + [body.reporter.email], + `Ticket ${id}: ${body.subject}`, + ); + } catch (e) { + console.log(e); + } }