const crypto = require("crypto"); const emailQueue = require("../../queues/email.queue"); const db = require("../../models"); const templates = { otp: { subject: "Your ZUMRI login code" }, passwordChanged: { subject: "Your ZUMRI password was changed" }, passwordReset: { subject: "Reset your ZUMRI password" }, emailVerification: { subject: "Verify your ZUMRI email" }, welcome: { subject: "Welcome to ZUMRI" }, }; const send = async ({ templateKey, recipient, locale = "en", variables = {}, correlationId, notificationId, userId, eventId }) => { if (!templates[templateKey]) throw new Error("Unknown email template"); const id = crypto.randomUUID(); await db.NotificationDelivery.create({ id, notificationId, userId, channel: "EMAIL", recipient, templateKey, status: "QUEUED" }); await emailQueue.add("send-email", { deliveryId: id, templateKey, recipient, locale, variables, correlationId }, { jobId: `email-${eventId || id}` }); return { deliveryId: id }; }; module.exports = { send, templates };