Created an e-mail type to be sent to the ticket reporter with the ticket's information
This commit is contained in:
35
src/email/templates/submittedFeedback.handlebars
Normal file
35
src/email/templates/submittedFeedback.handlebars
Normal file
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet">
|
||||
</head>
|
||||
<div style="background-color: #ffffff; color: #353338;"
|
||||
class="h-full min-h-screen w-full flex flex-col p-8 gap-16 text-base">
|
||||
<img src="/logo_title.png" class="w-48 h-48 self-center" />
|
||||
<div>
|
||||
<span>Thank you for your ticket submission!</span>
|
||||
<br/>
|
||||
<span>Here is the ticket's information:</span>
|
||||
<br/>
|
||||
<br/>
|
||||
<span><b>ID:</b> {{id}}</span><br/>
|
||||
<span><b>Subject:</b> {{subject}}</span><br/>
|
||||
<span><b>Reporter:</b> {{reporter.name}} - {{reporter.email}}</span><br/>
|
||||
<span><b>Date:</b> {{date}}</span><br/>
|
||||
<span><b>Type:</b> {{type}}</span><br/>
|
||||
<span><b>Page:</b> {{reportedFrom}}</span>
|
||||
<br/>
|
||||
<br/>
|
||||
<span><b>Description:</b> {{description}}</span><br/>
|
||||
</div>
|
||||
<br />
|
||||
<br />
|
||||
<div>
|
||||
<span>Thanks, <br /> Your EnCoach team</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -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 });
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user