Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | import { Request, Response } from 'express'; import { EmailService, pendingEmails } from '../services/email'; import { ETemplates } from '../types'; export class EmailController { static async sendEmail(req: Request, res: Response) { const { email, firstName, lastName, officeName, template } = req.body; try { const templateVariables = { first_name: firstName || '', last_name: lastName || '', office_name: officeName || '', link: `${process.env.APP_HOST}` }; const result = await EmailService.sendTransactionalEmail( email, ETemplates[template as keyof typeof ETemplates], 'Votre notaire vous envoie un message', templateVariables ); if (!result.success) { // Add to pending emails to retry later const emailId = `${email}-${Date.now()}`; pendingEmails.set(emailId, { to: email, templateName: ETemplates[template as keyof typeof ETemplates], subject: 'Votre notaire vous envoie un message', templateVariables, attempts: 1, lastAttempt: Date.now() }); } res.json({ success: true, message: 'Email envoyé avec succès' }); } catch (error: any) { console.error('Erreur:', error); res.status(500).json({ success: false, message: 'Erreur serveur lors de l\'envoi de l\'email' }); } } static async subscribeToList(req: Request, res: Response) { const { email } = req.body; try { const result = await EmailService.addToMailchimpList(email); if (result.success) { res.json({ success: true, message: 'Inscription à la liste réussie' }); } else { res.status(500).json({ success: false, message: 'Échec de l\'inscription à la liste' }); } } catch (error: any) { console.error('Erreur:', error); res.status(500).json({ success: false, message: 'Erreur serveur lors de l\'inscription' }); } } static async sendReminder(req: Request, res: Response) { const { office, customer } = req.body; try { const to = customer.contact.email; const templateVariables = { office_name: office.name, last_name: customer.contact.last_name || '', first_name: customer.contact.first_name || '', link: `${process.env.APP_HOST}` }; await EmailService.sendTransactionalEmail( to, ETemplates.DOCUMENT_REMINDER, 'Vous avez des documents à déposer pour votre dossier.', templateVariables ); res.json({ success: true, message: 'Email envoyé avec succès' }); } catch (error) { console.error(error); return; } } } |