Skip to content

Commit 5cac5cb

Browse files
committed
feat: add actuality error mail
1 parent 8845188 commit 5cac5cb

File tree

2 files changed

+42
-9
lines changed

2 files changed

+42
-9
lines changed

back/api/actuality/services/actuality.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,26 @@ const validateEmail = (email) => {
1717
};
1818

1919
module.exports = {
20+
async sendActualityErrorEmail(actuality, email, error) {
21+
let errorMessage = `Une erreur est survenue lors de la publication de l'actualité "${actuality.title}". Merci de vérifier les informations de l'actualité et réessayer.`
22+
23+
if (error === 'not_published') {
24+
errorMessage = `Les notificiations concernant l'actualité "${actuality.title}" n'ont pas été envoyées car elle est encore en brouillon et ce malgré le fait que la date de publication soit passée. Merci de la publier pour pouvoir envoyer les notifications.`
25+
}
26+
27+
await strapi.plugins['email'].services.email.sendEmail(
28+
{
29+
to: email,
30+
},
31+
{
32+
templateId: 'actuality-error',
33+
},
34+
{
35+
actuality_error: errorMessage,
36+
actuality_url: `${process.env.BASE_URL}/admin/plugins/content-manager/collectionType/application::actuality.actuality/${actuality.id}`,
37+
}
38+
)
39+
},
2040
async sendActualityEmails(actuality, emails) {
2141
const date = new Date().toLocaleDateString('fr-FR', { year: 'numeric', month: 'long', day: 'numeric' });
2242
const image = await strapi.query('file', 'upload').findOne({ id: actuality.image });

back/config/functions/cron.js

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ module.exports = {
6666
notification_email_broadcast_date_null: false,
6767
notification_email_broadcast_date_lte: new Date(),
6868
notification_email_sent_at_null: true,
69-
published_at_null: false,
7069
});
7170

7271
const users = await knex.raw(`
@@ -80,21 +79,35 @@ module.exports = {
8079
(type = 'place' AND place.id IS NOT NULL)
8180
)
8281
`);
83-
8482
for (const actuality of actualities) {
8583
try {
86-
const emails = [...new Set(users.rows.map(user => user.email))]
84+
if (!actuality.published_at) {
85+
throw new Error('not_published');
86+
}
8787

88+
const emails = [...new Set(users.rows.map(user => user.email))]
8889
console.log(`Sending actuality ${actuality.id} email to ${emails.length} users`)
90+
8991
await strapi.services.actuality.sendActualityEmails({ ...actuality, image: actuality.image.id }, emails);
92+
await strapi.query("actuality").update(
93+
{ id: actuality.id }, {
94+
notification_email_sent_at: new Date(),
95+
});
9096
} catch (error) {
9197
console.log(`Error sending actuality ${actuality.id} email`, error);
92-
}
98+
let errorType = "unknown"
99+
100+
if (error.message === 'not_published') {
101+
errorType = 'not_published'
102+
}
93103

94-
await strapi.query("actuality").update(
95-
{ id: actuality.id }, {
96-
notification_email_sent_at: new Date(),
97-
},);
104+
await strapi.services.actuality.sendActualityErrorEmail(actuality, process.env.EMAIL_RECIPIENT, errorType);
105+
await strapi.query("actuality").update(
106+
{ id: actuality.id }, {
107+
notification_email_broadcast_date: null,
108+
notification_email_sent_at: null,
109+
})
110+
}
98111
}
99-
},
112+
}
100113
};

0 commit comments

Comments
 (0)