all repos — caroster @ a69dc08b4f89eca3499b1321ae3077f0846ae591

[Octree] Group carpool to your event https://caroster.io

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};