Added user email notifications
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
fd966bf208
commit
11bba98ae4
@ -0,0 +1,13 @@
|
||||
import nodemailer from "nodemailer";
|
||||
import { smtpHostname, smtpPassword, smtpUsername } from "../environment";
|
||||
|
||||
export const transporter = nodemailer.createTransport({
|
||||
host: smtpHostname,
|
||||
port: 587,
|
||||
secure: false,
|
||||
requireTLS: true,
|
||||
auth: {
|
||||
user: smtpUsername,
|
||||
pass: smtpPassword,
|
||||
}
|
||||
});
|
||||
@ -0,0 +1,21 @@
|
||||
import { transporter } from ".";
|
||||
import { smtpAddress } from "../environment";
|
||||
import { Order, OrderObject } from "../interfaces/order";
|
||||
import User from "../interfaces/user";
|
||||
import { formatDate, formatTime } from "../utils/dates";
|
||||
|
||||
export async function sendOrderConfirmationEmail(user: User, order: Order) {
|
||||
await transporter.sendMail({
|
||||
from: `Fitness World <${smtpAddress}>`,
|
||||
to: user.email,
|
||||
subject: "Ordre bekræftelse - Fitness World",
|
||||
text:
|
||||
`Hej, ${user.first_name} ${user.last_name}.
|
||||
|
||||
Din tid ved ${order.trainer.first_name} ${order.trainer.last_name} i ${order.trainer.center_name} er blevet reserveret.
|
||||
|
||||
Vi glæder os til at se dig ${formatDate(order.startDate)} ${formatTime(order.startDate)} - ${formatTime(order.endDate)}
|
||||
|
||||
Venlig hilsen Fitness World.`
|
||||
})
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
import { transporter } from ".";
|
||||
import { smtpAddress } from "../environment";
|
||||
import User from "../interfaces/user";
|
||||
|
||||
export async function sendSignupEmail(user: User) {
|
||||
await transporter.sendMail({
|
||||
from: `Fitness World <${smtpAddress}>`,
|
||||
to: user.email,
|
||||
subject: "Welcome to Fitness World",
|
||||
text:
|
||||
`Hej, ${user.first_name} ${user.last_name}.
|
||||
|
||||
Velkommen til Fitness World.`
|
||||
})
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
import { transporter } from ".";
|
||||
import { smtpAddress } from "../environment";
|
||||
import { Order } from "../interfaces/order";
|
||||
import User from "../interfaces/user";
|
||||
import { formatDate, formatTime } from "../utils/dates";
|
||||
|
||||
export async function sendUserCancelledOrderEmail(user: User, order: Order) {
|
||||
await transporter.sendMail({
|
||||
from: `Fitness World <${smtpAddress}>`,
|
||||
to: user.email,
|
||||
subject: "Ordre afbestilt - Fitness World",
|
||||
text:
|
||||
`Hej, ${user.first_name} ${user.last_name}.
|
||||
|
||||
Du har afbestilt din tid ved ${order.trainer.first_name} ${order.trainer.last_name} i ${order.trainer.center_name} ${formatDate(order.startDate)} ${formatTime(order.startDate)} - ${formatTime(order.endDate)}
|
||||
|
||||
Vi håber at se dig en anden dag.
|
||||
|
||||
Venlig hilsen Fitness World.`
|
||||
})
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
import { transporter } from ".";
|
||||
import { smtpAddress } from "../environment";
|
||||
import { Order, OrderObject } from "../interfaces/order";
|
||||
import User from "../interfaces/user";
|
||||
import { formatDate, formatTime } from "../utils/dates";
|
||||
|
||||
export async function sendUserMovedOrderEmail(user: User, order: Order) {
|
||||
await transporter.sendMail({
|
||||
from: `Fitness World <${smtpAddress}>`,
|
||||
to: user.email,
|
||||
subject: "Ordre flyttet - Fitness World",
|
||||
text:
|
||||
`Hej, ${user.first_name} ${user.last_name}.
|
||||
|
||||
Din tid ved ${order.trainer.first_name} ${order.trainer.last_name} i ${order.trainer.center_name} er blevet flyttet.
|
||||
|
||||
Vi glæder os til at se dig ${formatDate(order.startDate)} ${formatTime(order.startDate)} - ${formatTime(order.endDate)}
|
||||
|
||||
Venlig hilsen Fitness World.`
|
||||
})
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
import dayjs, { Dayjs } from "dayjs"
|
||||
import isoWeek from "dayjs/plugin/isoWeek"
|
||||
import utc from "dayjs/plugin/utc"
|
||||
import LocalizedFormat from "dayjs/plugin/localizedFormat"
|
||||
import localeDA from "dayjs/locale/da";
|
||||
|
||||
dayjs.extend(isoWeek)
|
||||
dayjs.extend(utc)
|
||||
dayjs.extend(LocalizedFormat);
|
||||
|
||||
export function formatDate(date: Date | Dayjs): string {
|
||||
let output: string = dayjs(date).locale(localeDA).format("dddd D. MMM YYYY");
|
||||
let outputStringArray = output.split("");
|
||||
outputStringArray[0] = outputStringArray[0].toLocaleUpperCase();
|
||||
output = outputStringArray.join("");
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
export function formatTime(date: Date | Dayjs): string {
|
||||
let output: string = dayjs(date).locale(localeDA).format("HH:mm");
|
||||
|
||||
return output;
|
||||
}
|
||||
Loading…
Reference in New Issue