backend/api/car/models/car.js (view raw)
1'use strict';
2
3const _uniq = require('lodash/uniq');
4
5const {STRAPI_URL = ''} = process.env;
6
7module.exports = {
8 lifecycles: {
9 async afterCreate(result) {
10 sendEmailsToWaitingList(result.event);
11 },
12 },
13};
14
15const sendEmailsToWaitingList = async event => {
16 const eventWaitingList = event?.waitingList || [];
17 const userEmails = eventWaitingList.map(user => user.email).filter(Boolean);
18 const templateId = await getTemplateId('waitinglist_notif');
19
20 try {
21 await strapi.plugins['email-designer'].services.email.sendTemplatedEmail(
22 {
23 to: _uniq(userEmails),
24 },
25 {
26 templateId,
27 subject: `Caroster: nouvelle voiture pour ${event.name}`,
28 },
29 {
30 eventName: event.name,
31 eventLink: `${STRAPI_URL}/e/${event.uuid}`,
32 }
33 );
34 } catch (error) {
35 console.error(error);
36 strapi.log.error(
37 `Impossible to send email waiting list notification for event #${
38 event.id
39 }. Error: ${JSON.stringify(error)}`
40 );
41 }
42};
43
44const getTemplateId = async templateName => {
45 const template = await strapi.plugins[
46 'email-designer'
47 ].services.template.fetch({name: templateName});
48 if (!template) throw new Error(`No email template with name ${templateName}`);
49 return template.id;
50};