all repos — caroster @ 35fc135e937a5b85fe35e7f9b03772d2e1f3f04e

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

backend/api/event/services/event.js (view raw)

 1'use strict';
 2const moment = require('moment');
 3const _pick = require('lodash/pick');
 4
 5const TEMPLATE_NAME_RECAP = 'event_recap';
 6const PUBLIC_FIELDS = [
 7  'id',
 8  'uuid',
 9  'name',
10  'description',
11  'email',
12  'id',
13  'date',
14  'address',
15  'position',
16  'waitingList',
17  'travels',
18  'created_at',
19  'updated_at',
20];
21
22const {STRAPI_URL = ''} = process.env;
23
24module.exports = {
25  sanitize: event => {
26    const waitingList = event?.waitingList?.map(list =>
27      _pick(list, ['id', 'name', 'location', 'user'])
28    );
29    const sanitizedEvent = _pick(event, PUBLIC_FIELDS);
30    return {...sanitizedEvent, waitingList};
31  },
32
33  sendDailyRecap: async event => {
34    const referenceDate = moment().subtract(1, 'day');
35    const hasBeenModified = referenceDate.isSameOrBefore(event.updated_at);
36    if (hasBeenModified) {
37      strapi.log.debug(
38        `Send daily recap to ${event.email} for event #${event.id}`
39      );
40      const newTravels = event.travels?.filter(travel =>
41        referenceDate.isSameOrBefore(travel.created_at)
42      );
43      try {
44        const templateId = await strapi.plugins[
45          'email-designer'
46        ].services.template.getId(TEMPLATE_NAME_RECAP);
47        await strapi.plugins[
48          'email-designer'
49        ].services.email.sendTemplatedEmail(
50          {
51            to: event.email,
52          },
53          {
54            templateId,
55          },
56          {
57            event,
58            eventLink: `${STRAPI_URL}/e/${event.uuid}`,
59            waitingListCount: event.waitingList?.length || 0,
60            travelsCount: event.travels?.length || 0,
61            newTravelsCount: newTravels?.length || 0,
62          }
63        );
64      } catch (error) {
65        console.error(error);
66        strapi.log.error(
67          `Impossible to send recap notification to ${event.email} for event #${
68            event.id
69          }. Error: ${JSON.stringify(error)}`
70        );
71      }
72    }
73  },
74};