Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 16 additions & 8 deletions emails/templates/tickets/ticket-transfer-received/9punto5.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,35 @@ setDefaultOptions({ locale: es });

type Props = {
transferId: string;
recipientName: string;
senderName: string;
recipient: {
name: string;
};
sender: {
name: string;
};
ticketType: "CONFERENCE" | "EXPERIENCE";
transferMessage?: string | null;
expirationDate: Date;
};

export const TicketTransferReceived9punto5 = ({
transferId,
recipientName = "Juan",
senderName = "Pedro",
ticketType = "CONFERENCE",
transferMessage = "Mensaje de regalo",
recipient = {
name: "Juan",
},
sender = {
name: "Pedro",
},
ticketType,
transferMessage,
expirationDate,
}: Props) => {
return (
<TicketTemplate9punto5>
<Text>¡Hola {recipientName}!</Text>
<Text>¡Hola {recipient.name}!</Text>

<Text>
Tenemos una gran noticia para ti. <strong>{senderName}</strong> te ha
Tenemos una gran noticia para ti. <strong>{sender.name}</strong> te ha
enviado una entrada para:
</Text>

Expand Down
32 changes: 20 additions & 12 deletions emails/templates/tickets/ticket-transfer-sent/9punto5.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,36 @@ import { TicketTemplate9punto5 } from "emails/templates/helpers/9punto5";
setDefaultOptions({ locale: es });

type Props = {
recipientName: string;
recipientEmail: string;
senderName: string;
recipient: {
name: string;
email: string;
};
sender: {
name: string;
};
ticketType: "CONFERENCE" | "EXPERIENCE";
transferMessage?: string | null;
expirationDate: Date;
};

export const TicketTransferSent9punto5 = ({
recipientName = "Juan",
recipientEmail = "pedro@example.com",
senderName = "Pedro",
ticketType = "CONFERENCE",
transferMessage = "Mensaje de regalo",
recipient = {
name: "Juan",
email: "juan@example.com",
},
sender = {
name: "Pedro",
},
ticketType,
transferMessage,
expirationDate,
}: Props) => {
return (
<TicketTemplate9punto5>
<Text>¡Hola {senderName}!</Text>
<Text>¡Hola {sender.name}!</Text>

<Text>
Tu entrada para {recipientName} ({recipientEmail}) ha sido enviada con
Tu entrada para {recipient.name} ({recipient.email}) ha sido enviada con
éxito. Aquí están los detalles:
</Text>

Expand All @@ -44,12 +52,12 @@ export const TicketTransferSent9punto5 = ({
)}

<Text>
Hemos notificado a {recipientName} y le hemos proporcionado un enlace
Hemos notificado a {recipient.name} y le hemos proporcionado un enlace
para confirmar su asistencia ingresando a https://9punto5.cl
</Text>

<Text>
{recipientName} tendrá hasta el{" "}
{recipient.name} tendrá hasta el{" "}
<strong>
{format(expirationDate, "dd 'de' MMMM 'a las' HH:mm")} hs
</strong>{" "}
Expand Down
98 changes: 73 additions & 25 deletions workers/transactional_email_service/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,12 @@ import {
sendTransactionalHTMLEmail,
} from "~/datasources/email/sendTransactionalHTMLEmail";
import { createLogger } from "~/logging";
import { ENV, CommunityInfo, EventInfo, UserTicketTransferInfo } from "~workers/transactional_email_service/types";
import {
ENV,
CommunityInfo,
EventInfo,
UserTicketTransferInfo,
} from "~workers/transactional_email_service/types";

import { defaultInfo } from "./helpers";
import { EventInvitation } from "../../emails/templates/tickets/event-invitation";
Expand All @@ -27,7 +32,6 @@ import { WaitlistAccepted } from "../../emails/templates/tickets/waitlist-accept
import { WaitlistRejected } from "../../emails/templates/tickets/waitlist-rejected";
import { YouAreOnTheWaitlist } from "../../emails/templates/tickets/you-are-on-the-waitlist-confirmation";


type ReceiverType = {
name?: string;
email: string;
Expand Down Expand Up @@ -403,56 +407,75 @@ export default class EmailService extends WorkerEntrypoint<ENV> {
this.logger.info(`Sending transfer ticket notifications`, {
userTicketTransferId: userTicketTransfer.id,
recipientEmail: userTicketTransfer.recipientUser.email,
senderEmail: userTicketTransfer.senderUser.email
senderEmail: userTicketTransfer.senderUser.email,
});
const expirationDate = userTicketTransfer.expirationDate ?? add(new Date(), { weeks: 1 });
const expirationDate =
userTicketTransfer.expirationDate ?? add(new Date(), { weeks: 1 });

if (communityInfo.name === "9punto5") {
const userTicket = userTicketTransfer.userTicket;
const ticketTemplate = userTicket.ticketTemplate;

const ticketType = get9unto5TicketType(ticketTemplate.tags);

// Send confirmation email to transfer sender
// Send confirmation email to recipient
await sendTransactionalHTMLEmail(this.resend, this.logger, {
htmlContent: render(
<TicketTransferReceived9punto5
recipient={{
name: userTicketTransfer.recipientUser.name ?? "",
}}
sender={{
name: userTicketTransfer.senderUser.name ?? "",
}}
transferId={userTicketTransfer.id}
recipientName={userTicketTransfer.recipientUser.name ?? ""}
senderName={userTicketTransfer.senderUser.name ?? ""}
ticketType={ticketType}
transferMessage={userTicketTransfer.transferMessage ?? ""}
expirationDate={expirationDate}
/>,
),
to: [{ name: userTicketTransfer.senderUser.name ?? "", email: userTicketTransfer.senderUser.email ?? "" }],
to: [
{
name: userTicketTransfer.recipientUser.name ?? "",
email: userTicketTransfer.recipientUser.email,
},
],
from: defaultInfo.nuevopuntocinco.from,
subject: `La entrada ${
ticketType === "CONFERENCE" ? "CONFERENCIA" : "EXPERIENCIA"
} 9.5 para ${userTicketTransfer.recipientUser.name ?? ""} ha sido enviada`,
subject: `Te han enviado una entrada para 9punto5`,
});

// Send confirmation email to transfer sender
await sendTransactionalHTMLEmail(this.resend, this.logger, {
htmlContent: render(
<TicketTransferSent9punto5
recipient={{
name: userTicketTransfer.recipientUser.name ?? "",
email: userTicketTransfer.recipientUser.email,
}}
sender={{
name: userTicketTransfer.senderUser.name ?? "",
}}
ticketType={ticketType}
recipientName={userTicketTransfer.recipientUser.name ?? ""}
senderName={userTicketTransfer.senderUser.name ?? ""}
transferMessage={userTicketTransfer.transferMessage ?? ""}
recipientEmail={userTicketTransfer.recipientUser.email}
expirationDate={expirationDate}
/>,
),
to: [{ name: userTicketTransfer.senderUser.name ?? "", email: userTicketTransfer.senderUser.email ?? "" }],
to: [
{
name: userTicketTransfer.senderUser.name ?? "",
email: userTicketTransfer.senderUser.email,
},
],
from: defaultInfo.nuevopuntocinco.from,
subject: `La entrada ${
ticketType === "CONFERENCE" ? "CONFERENCIA" : "EXPERIENCIA"
} 9.5 para ${userTicketTransfer.recipientUser.name ?? ""} ha sido enviada`,
} 9.5 para ${
userTicketTransfer.recipientUser.name ?? ""
} ha sido enviada`,
});

this.logger.info(`Transfer ticket notifications sent successfully`, {
transferId: userTicketTransfer.id
transferId: userTicketTransfer.id,
});
} else if (communityInfo.slug?.toLowerCase() === "jscl") {
// Send email to transfer recipient
Expand All @@ -468,7 +491,15 @@ export default class EmailService extends WorkerEntrypoint<ENV> {
expirationDate={expirationDate}
/>,
),
to: [{ name: userTicketTransfer.recipientUser.name ?? userTicketTransfer.recipientUser.username ?? "", email: userTicketTransfer.recipientUser.email }],
to: [
{
name:
userTicketTransfer.recipientUser.name ??
userTicketTransfer.recipientUser.username ??
"",
email: userTicketTransfer.recipientUser.email,
},
],
from: defaultInfo.jscl.from,
subject: `Te han enviado una entrada para ${eventInfo.name}`,
});
Expand All @@ -486,9 +517,16 @@ export default class EmailService extends WorkerEntrypoint<ENV> {
expirationDate={expirationDate}
/>,
),
to: [{ name: userTicketTransfer.senderUser.name ?? "", email: userTicketTransfer.senderUser.email ?? "" }],
to: [
{
name: userTicketTransfer.senderUser.name ?? "",
email: userTicketTransfer.senderUser.email ?? "",
},
],
from: defaultInfo.jscl.from,
subject: `La entrada a ${eventInfo.name} para ${userTicketTransfer.recipientUser.name ?? ""} ha sido enviada`,
subject: `La entrada a ${eventInfo.name} para ${
userTicketTransfer.recipientUser.name ?? ""
} ha sido enviada`,
});

this.logger.info(`Transfer ticket notifications sent successfully`, {
Expand Down Expand Up @@ -532,12 +570,17 @@ export default class EmailService extends WorkerEntrypoint<ENV> {
),
to: [
{
name: userTicketTransfer.senderUser.name ?? userTicketTransfer.senderUser.username ?? "",
name:
userTicketTransfer.senderUser.name ??
userTicketTransfer.senderUser.username ??
"",
email: userTicketTransfer.senderUser.email,
},
],
from: defaultInfo.nuevopuntocinco.from,
subject: `${userTicketTransfer.recipientUser.name ?? ""} aceptó tu entrada ${
subject: `${
userTicketTransfer.recipientUser.name ?? ""
} aceptó tu entrada ${
ticketType === "CONFERENCE" ? "CONFERENCIA" : "EXPERIENCIA"
} 9.5`,
});
Expand All @@ -554,12 +597,17 @@ export default class EmailService extends WorkerEntrypoint<ENV> {
),
to: [
{
name: userTicketTransfer.senderUser.name ?? userTicketTransfer.senderUser.username ?? "",
name:
userTicketTransfer.senderUser.name ??
userTicketTransfer.senderUser.username ??
"",
email: userTicketTransfer.senderUser.email,
},
],
from: defaultInfo.jscl.from,
subject: `${userTicketTransfer.recipientUser.name ?? ""} aceptó tu entrada para ${eventInfo.name}`
subject: `${
userTicketTransfer.recipientUser.name ?? ""
} aceptó tu entrada para ${eventInfo.name}`,
});
} else {
throw new Error(`No community/event handler found`);
Expand Down