Revue script relances expiration abonnements prémium pour test en prod.

This commit is contained in:
Fabrice PENHOËT 2020-09-10 10:54:50 +02:00
parent b572306735
commit 5c8d68733f
2 changed files with 12 additions and 14 deletions

View File

@ -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 });

View File

@ -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: "<h3>Bonjour USER_NAME,</h3><p>Votre abonnement à SITE_NAME va expirer d'ici quelques jours.<br><br>Pour continuer à utiliser SITE_NAME, vous pouvez le prolonger dès aujourd'hui en cliquant sur le lien ci-dessous.</p>",
mailExpirationMessage: "FIRST premières et SECOND deuxièmes relances envoyées pour des abonnements expirant d'ici peu.",
infosNbDays: "Votre abonnement est encore valable <b>pendant NB_DAYS jours</b>.<br>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.<br>Pour ce faire, suivez sans tarder les indications ci-dessous :",
infosNbDaysAdmin: "Cet abonnement est encore valable <b>pendant NB_DAYS jours</b>.",
infosExpiratedAdmin: "Cet abonnement a expiré.",
infosExpiratedAdmin: "Cet abonnement a expiré.",
isNotValided : "Cet utilisateur n'a pas encore validé son compte.<br>Vous pouvez le faire à sa place <a href='#validationOk'>en cochant la case indiquée</a> et enregistrant.",
infosPaymentsAdmin : "DATE_PAYMENT : paiement de AMOUNT € au nom de CLIENT_NAME.",
};