backend/api/event/services/event.js (view raw)
1'use strict';
2const moment = require('moment');
3
4const TEMPLATE_NAME_RECAP = 'event_recap';
5
6const {STRAPI_URL = ''} = process.env;
7
8module.exports = {
9 sendDailyRecap: async event => {
10 const referenceDate = moment().subtract(1, 'day');
11 const hasBeenModified = referenceDate.isSameOrBefore(event.updated_at);
12 if (hasBeenModified) {
13 strapi.log.debug(
14 `Send daily recap to ${event.email} for event #${event.id}`
15 );
16 const newCars = event.cars?.filter(car =>
17 referenceDate.isSameOrBefore(car.created_at)
18 );
19 try {
20 const templateId = await strapi.plugins[
21 'email-designer'
22 ].services.template.getId(TEMPLATE_NAME_RECAP);
23 await strapi.plugins[
24 'email-designer'
25 ].services.email.sendTemplatedEmail(
26 {
27 to: event.email,
28 },
29 {
30 templateId,
31 subject: `Caroster: ${event.name}`,
32 },
33 {
34 eventName: event.name,
35 eventLink: `${STRAPI_URL}/e/${event.uuid}`,
36 waitingListCount: event.waitingList?.length || 0,
37 carsCount: event.cars?.length || 0,
38 newCarsCount: newCars?.length || 0,
39 }
40 );
41 } catch (error) {
42 console.error(error);
43 strapi.log.error(
44 `Impossible to send recap notification to ${event.email} for event #${
45 event.id
46 }. Error: ${JSON.stringify(error)}`
47 );
48 }
49 }
50 },
51};