all repos — caroster @ 82a6b00ced5640055e8caff7e67636e5746cc112

[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  'cars',
18  'created_at',
19  'updated_at',
20];
21
22const {STRAPI_URL = ''} = process.env;
23
24module.exports = {
25  sanitize: event => {
26    const cars = event?.cars?.map(strapi.services.car.sanitize);
27    const waitingList = event?.waitingList?.map(list =>
28      _pick(list, ['id', 'name', 'location', 'user'])
29    );
30    const sanitizedEvent = _pick(event, PUBLIC_FIELDS);
31    return {...sanitizedEvent, cars, waitingList};
32  },
33
34  sendDailyRecap: async event => {
35    const referenceDate = moment().subtract(1, 'day');
36    const hasBeenModified = referenceDate.isSameOrBefore(event.updated_at);
37    if (hasBeenModified) {
38      strapi.log.debug(
39        `Send daily recap to ${event.email} for event #${event.id}`
40      );
41      const newCars = event.cars?.filter(car =>
42        referenceDate.isSameOrBefore(car.created_at)
43      );
44      try {
45        const templateId = await strapi.plugins[
46          'email-designer'
47        ].services.template.getId(TEMPLATE_NAME_RECAP);
48        await strapi.plugins[
49          'email-designer'
50        ].services.email.sendTemplatedEmail(
51          {
52            to: event.email,
53          },
54          {
55            templateId,
56          },
57          {
58            event,
59            eventLink: `${STRAPI_URL}/e/${event.uuid}`,
60            waitingListCount: event.waitingList?.length || 0,
61            carsCount: event.cars?.length || 0,
62            newCarsCount: newCars?.length || 0,
63          }
64        );
65      } catch (error) {
66        console.error(error);
67        strapi.log.error(
68          `Impossible to send recap notification to ${event.email} for event #${
69            event.id
70          }. Error: ${JSON.stringify(error)}`
71        );
72      }
73    }
74  },
75};