From 5c8d68733f0c16c8e8ba7979b0f017acf81d2ac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabrice=20PENHO=C3=8BT?= Date: Thu, 10 Sep 2020 10:54:50 +0200 Subject: [PATCH] =?UTF-8?q?Revue=20script=20relances=20expiration=20abonne?= =?UTF-8?q?ments=20pr=C3=A9mium=20pour=20test=20en=20prod.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/subscription.js | 22 ++++++++++------------ lang/fr/subscription.js | 4 ++-- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/controllers/subscription.js b/controllers/subscription.js index dd69e24..d562543 100644 --- a/controllers/subscription.js +++ b/controllers/subscription.js @@ -41,7 +41,7 @@ exports.unsubscribeLink = async (req, res, next) => // CRONS -// + une autre notification le jour "J" ??? vérifier si l'utilisateur actif les dernières 48H et laisser les autres tranquilles ? +// Envoi des notifications aux abonnés arrivés à quelques jours de la fin de leur période d'abonnement gratuit. exports.notifyExpirationFreeAccount= async(req, res, next) => { try @@ -67,7 +67,6 @@ exports.notifyExpirationFreeAccount= async(req, res, next) => let userInfos=await userCtrl.searchUserById(user.UserId); if(userInfos && userInfos.User.status=="user") { - //const token=jwt.sign({ userId: userInfos.User.id }, config.tokenPrivateKey, { expiresIn: config.tokenLoginLinkTimeInHours }); const mapMail = { SITE_NAME: config.siteName, @@ -95,7 +94,6 @@ exports.notifyExpirationFreeAccount= async(req, res, next) => else res.message=users.length+txt.mailEndFreeTimeMessage; res.status(200).json(true); - console.log(users.length+txt.mailEndFreeTimeMessage); next(); } catch(e) @@ -104,8 +102,9 @@ exports.notifyExpirationFreeAccount= async(req, res, next) => } } +// Envoi des notifications aux abonnés arrivés à quelques jours de la fin de leur période d'abonnement prémium. exports.notifyExpirationAccount= async(req, res, next) => -{ // utiliser la vue puis des recherches en sql natif ou ajouter un modèle : https://stackoverflow.com/questions/48407329/cant-able-to-create-views-in-mysql-using-sequelize-orm +{ try { const db = require("../models/index"); @@ -128,27 +127,26 @@ exports.notifyExpirationAccount= async(req, res, next) => }); return users; } - const sendNotification= async (user, mail) => // utiliser la paramètre "mail" pour adapter le texte du mail ! + const sendNotification= async (user, mail) => { let userInfos=await searchUserById(user.UserId); if(userInfos && userInfos.User.status=="user") - { - //const token=jwt.sign({ userId: userInfos.User.id }, config.tokenPrivateKey, { expiresIn: config.tokenLoginLinkTimeInHours }); + { const mapMail = { SITE_NAME: config.siteName, USER_NAME: userInfos.User.name, - LINK_URL : config.siteUrl+"/"+configTpl.updateAccountPage+"#abo" + LINK_URL : config.siteUrl+"/"+configTpl.updateAccountPage+"#subscribe" }; const mailDatas= { mailSubject: txt.mailExpirationSubject, mailPreheader: txt.mailExpirationSubject, mailTitle: txt.mailExpirationSubject, - mailHeaderLinkUrl: config.siteUrl+"/"+configTpl.updateAccountPage+"#abo", + mailHeaderLinkUrl: config.siteUrl+"/"+configTpl.updateAccountPage+"#subscribe", mailHeaderLinkTxt: txt.mailExpirationLinkTxt, mailMainContent: tool.replaceAll(txt.mailExpirationBodyHTML, mapMail), - linksCTA: [{ url:config.siteUrl+"/"+configTpl.updateAccountPage+"#abo", txt:txt.mailExpirationLinkTxt }], + linksCTA: [{ url:config.siteUrl+"/"+configTpl.updateAccountPage+"#subscribe", txt:txt.mailExpirationLinkTxt }], mailRecipientAddress: userInfos.User.email } await toolMail.sendMail(userInfos.User.smtp, userInfos.User.email, txt.mailExpirationSubject, tool.replaceAll(txt.mailExpirationBodyTxt, mapMail), "", mailDatas); @@ -156,11 +154,11 @@ exports.notifyExpirationAccount= async(req, res, next) => } // première salve : let users1=await getUsers(config.accountExpirationFirstNotificationInDays); - for(i in users1) + for(let i in users1) sendNotification(users1[i], "first"); // deuxième relance : let users2=await getUsers(config.accountExpirationSecondNotificationInDays); - for(i in users2) + for(let i in users2) sendNotification(users2[i], "second"); if(res.message) res.message+="\n"+tool.replaceAll(txt.mailExpirationMessage, { FIRST:users1.length , SECOND:users2.length }); diff --git a/lang/fr/subscription.js b/lang/fr/subscription.js index 29d692c..55f9bc9 100644 --- a/lang/fr/subscription.js +++ b/lang/fr/subscription.js @@ -21,14 +21,14 @@ module.exports = mailExpirationSubject: "Votre abonnement va bientôt expirer", mailExpirationLinkTxt : "Prolonger mon abonnement.", - mailExpirationBodyTxt: "Bonjour USER_NAME,\n\nVotre abonnement à SITE_NAME va expirer d'ici quelques jours.\n\nPour continuer à utiliser le site, vous pouvez le prolonger dès aujourd'hui :\nLINK_URL", + mailExpirationBodyTxt: "Bonjour USER_NAME,\n\nVotre abonnement à SITE_NAME va expirer d'ici quelques jours.\n\nPour continuer à utiliser SITE_NAME, vous pouvez le prolonger dès aujourd'hui :\nLINK_URL", mailExpirationBodyHTML: "

Bonjour USER_NAME,

Votre abonnement à SITE_NAME va expirer d'ici quelques jours.

Pour continuer à utiliser SITE_NAME, vous pouvez le prolonger dès aujourd'hui en cliquant sur le lien ci-dessous.

", mailExpirationMessage: "FIRST premières et SECOND deuxièmes relances envoyées pour des abonnements expirant d'ici peu.", infosNbDays: "Votre abonnement est encore valable pendant NB_DAYS jours.
Vous pouvez à tout moment prolonger votre abonnement en suivant les indications ci-dessous :", infosExpirated: "Votre abonnement a expiré, mais il vous reste encore quelques jours avant que votre compte et vos données ne soient complètement supprimées.
Pour ce faire, suivez sans tarder les indications ci-dessous :", infosNbDaysAdmin: "Cet abonnement est encore valable pendant NB_DAYS jours.", - infosExpiratedAdmin: "Cet abonnement a expiré.", + infosExpiratedAdmin: "Cet abonnement a expiré.", isNotValided : "Cet utilisateur n'a pas encore validé son compte.
Vous pouvez le faire à sa place en cochant la case indiquée et enregistrant.", infosPaymentsAdmin : "DATE_PAYMENT : paiement de AMOUNT € au nom de CLIENT_NAME.", };