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);
11 },
12 },
13};
14
15const sendEmailsToWaitingList = async car => {
16 const event = car.event;
17 const eventWaitingList = event?.waitingList || [];
18 const userEmails = eventWaitingList.map(user => user.email).filter(Boolean);
19 const templateId = await strapi.plugins[
20 'email-designer'
21 ].services.template.getId('waitinglist_notif');
22
23 if (userEmails?.length > 0)
24 try {
25 await strapi.plugins['email-designer'].services.email.sendTemplatedEmail(
26 {
27 to: _uniq(userEmails),
28 },
29 {
30 templateId,
31 subject: `Caroster: nouvelle voiture pour ${event.name}`,
32 },
33 {
34 event,
35 car,
36 eventLink: `${STRAPI_URL}/e/${event.uuid}`,
37 }
38 );
39 } catch (error) {
40 console.error(error);
41 strapi.log.error(
42 `Impossible to send email waiting list notification for event #${
43 event.id
44 }. Error: ${JSON.stringify(error)}`
45 );
46 }
47};