feat: enhance email processing with dynamic filenames and additional email notifications
This commit is contained in:
parent
453183ce3b
commit
e0353bb6f9
1 changed files with 51 additions and 5 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import { TRPCError } from "@trpc/server";
|
||||
import { format } from "date-fns";
|
||||
import { z } from "zod/v4";
|
||||
import type { EmailsIdEmail } from "~/schemas/public/Emails";
|
||||
import type { EventQueueUpdate } from "~/schemas/public/EventQueue";
|
||||
|
|
@ -109,9 +110,9 @@ export const comunicazioniRouter = createTRPCRouter({
|
|||
try {
|
||||
const ordine = await db
|
||||
.selectFrom("ordini")
|
||||
.selectAll()
|
||||
.selectAll("ordini")
|
||||
.innerJoin("users", "users.id", "ordini.userid")
|
||||
.select(["users.email"])
|
||||
.select(["users.email", "users.username"])
|
||||
.innerJoin("prezziario", "prezziario.idprezziario", "ordini.packid")
|
||||
.select(["prezziario.testo_condizioni"])
|
||||
.where("ordine_id", "=", input.ordineId)
|
||||
|
|
@ -119,6 +120,10 @@ export const comunicazioniRouter = createTRPCRouter({
|
|||
throw new Error(`Ordine not found - ordineId: ${input.ordineId}`);
|
||||
});
|
||||
|
||||
const condizioniFilename = `condizioni_contrattuali_${ordine.created_at.toISOString()}.pdf`;
|
||||
const ricevutaFilename = `ricevuta_cortesia_${ordine.username.replace(/\s+/g, "-")}-${format(ordine.created_at, "dd-MM-yyyy")}.pdf`;
|
||||
const lock_expires = new Date(Date.now() + 3000); // Lock for 30 sec
|
||||
|
||||
await addEventToQueue({
|
||||
data: {
|
||||
tipo: "email",
|
||||
|
|
@ -131,7 +136,7 @@ export const comunicazioniRouter = createTRPCRouter({
|
|||
to: ordine.email,
|
||||
attachments: [
|
||||
{
|
||||
filename: `condizioni_contrattuali_${ordine.created_at.toISOString()}.pdf`,
|
||||
filename: condizioniFilename,
|
||||
generate: {
|
||||
type: "condizioni",
|
||||
stringId: (ordine.testo_condizioni ||
|
||||
|
|
@ -141,7 +146,7 @@ export const comunicazioniRouter = createTRPCRouter({
|
|||
contentType: "application/pdf",
|
||||
},
|
||||
{
|
||||
filename: `ricevuta_cortesia_${ordine.ordine_id}.pdf`,
|
||||
filename: ricevutaFilename,
|
||||
|
||||
generate: {
|
||||
type: "ricevuta_cortesia",
|
||||
|
|
@ -155,7 +160,48 @@ export const comunicazioniRouter = createTRPCRouter({
|
|||
userId: ordine.userid,
|
||||
},
|
||||
},
|
||||
lock_expires: new Date(Date.now() + 3000), // Lock for 30 sec
|
||||
lock_expires,
|
||||
});
|
||||
await addEventToQueue({
|
||||
data: {
|
||||
tipo: "email",
|
||||
data: {
|
||||
template: {
|
||||
mailType: "generic",
|
||||
props: {
|
||||
title: "Nuovo pagamento ricevuto",
|
||||
testo: `È stato ricevuto un nuovo pagamento.`,
|
||||
},
|
||||
},
|
||||
mail: {
|
||||
subject: "Ric pagamento",
|
||||
to: "web@infoalloggi.it",
|
||||
attachments: [
|
||||
{
|
||||
filename: ricevutaFilename,
|
||||
|
||||
generate: {
|
||||
type: "ricevuta_cortesia",
|
||||
ordineId: ordine.ordine_id,
|
||||
},
|
||||
encoding: "base64",
|
||||
contentType: "application/pdf",
|
||||
},
|
||||
{
|
||||
filename: condizioniFilename,
|
||||
generate: {
|
||||
type: "condizioni",
|
||||
stringId: (ordine.testo_condizioni ||
|
||||
CONDIZIONI_DEFAULT) as TestiEStringheStingaId,
|
||||
},
|
||||
encoding: "base64",
|
||||
contentType: "application/pdf",
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
lock_expires,
|
||||
});
|
||||
} catch (e) {
|
||||
throw new TRPCError({
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue