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) {
|
async function post(req: NextApiRequest, res: NextApiResponse) {
|
||||||
const body = req.body as Invite;
|
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));
|
const invitedRef = await getDoc(doc(db, "users", body.to));
|
||||||
if (!invitedRef.exists()) return res.status(404).json({ ok: false });
|
if (!invitedRef.exists()) return res.status(404).json({ ok: false });
|
||||||
|
|
||||||
@@ -76,4 +71,9 @@ async function post(req: NextApiRequest, res: NextApiResponse) {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(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
|
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
|
||||||
|
import { sendEmail } from "@/email";
|
||||||
import { app } from "@/firebase";
|
import { app } from "@/firebase";
|
||||||
import { Ticket } from "@/interfaces/ticket";
|
import { Ticket, TicketTypeLabel } from "@/interfaces/ticket";
|
||||||
import { sessionOptions } from "@/lib/session";
|
import { sessionOptions } from "@/lib/session";
|
||||||
import {
|
import {
|
||||||
collection,
|
collection,
|
||||||
@@ -10,6 +11,7 @@ import {
|
|||||||
setDoc,
|
setDoc,
|
||||||
} from "firebase/firestore";
|
} from "firebase/firestore";
|
||||||
import { withIronSessionApiRoute } from "iron-session/next";
|
import { withIronSessionApiRoute } from "iron-session/next";
|
||||||
|
import moment from "moment";
|
||||||
import type { NextApiRequest, NextApiResponse } from "next";
|
import type { NextApiRequest, NextApiResponse } from "next";
|
||||||
import ShortUniqueId from "short-unique-id";
|
import ShortUniqueId from "short-unique-id";
|
||||||
|
|
||||||
@@ -42,6 +44,26 @@ async function post(req: NextApiRequest, res: NextApiResponse) {
|
|||||||
const body = req.body as Ticket;
|
const body = req.body as Ticket;
|
||||||
|
|
||||||
const shortUID = new ShortUniqueId();
|
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 });
|
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