all repos — caroster @ b2f79a8edfa66402e88fc52215152f5a36b079d9

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

backend/config/cron-tasks.ts (view raw)

 1import { DateTime } from "luxon";
 2import pMap from "p-map";
 3
 4export default {
 5  /**
 6   * Send event recap to creators
 7   * Everyday at 08:00
 8   */
 9  "0 8 * * *": async ({ strapi }) => {
10    const events = await strapi.entityService.findMany("api::event.event", {
11      filters: {
12        date: {
13          $gte: DateTime.now().toISODate(),
14        },
15        isReturnEvent: false,
16      },
17      populate: { linkedEvent: { populate: ["travels", "passengers"] } },
18      limit: -1,
19    });
20
21    await pMap(events, strapi.service("api::event.event").sendDailyRecap, {
22      concurrency: 5,
23    });
24  },
25  /**
26   * Send event recap when it has ended
27   * Only to events with a provided 'date' field
28   * Everyday at 08:30
29   */
30  "30 8 * * *": async ({ strapi }) => {
31    const events = await strapi.entityService.findMany("api::event.event", {
32      filters: {
33        date: {
34          $eq: DateTime.now().minus({ day: 1 }).toISODate(),
35        },
36        isReturnEvent: false,
37      },
38      populate: {
39        linkedEvents: {
40          populate: {
41            travels: true,
42            passengers: { populate: { passengers: true } },
43          },
44        },
45        travels: true,
46        passengers: { populate: { passengers: true } },
47      },
48      limit: -1,
49    });
50    await pMap(events, strapi.service("api::event.event").sendEndRecap, {
51      concurrency: 5,
52    });
53  },
54  /**
55   * Clean unpaid events
56   * Every sunday at 02:00
57   */
58  "0 2 * * 0": async ({ strapi }) => {
59    try {
60      const { count } = await strapi.db.query("api::event.event").updateMany({
61        where: { unpaid: true },
62        data: { unpaid: false, enabled_modules: [] },
63      });
64      strapi.log.info(`${count} unpaid events reset to basic.`);
65    } catch (error) {
66      strapi.log.error(`Can't delete unpaid events`);
67      console.error(error);
68    }
69  },
70};