Revue script relances expiration abonnements prémium pour test en prod.
This commit is contained in:
parent
b572306735
commit
5c8d68733f
@ -41,7 +41,7 @@ exports.unsubscribeLink = async (req, res, next) =>
|
|||||||
|
|
||||||
// CRONS
|
// 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) =>
|
exports.notifyExpirationFreeAccount= async(req, res, next) =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -67,7 +67,6 @@ exports.notifyExpirationFreeAccount= async(req, res, next) =>
|
|||||||
let userInfos=await userCtrl.searchUserById(user.UserId);
|
let userInfos=await userCtrl.searchUserById(user.UserId);
|
||||||
if(userInfos && userInfos.User.status=="user")
|
if(userInfos && userInfos.User.status=="user")
|
||||||
{
|
{
|
||||||
//const token=jwt.sign({ userId: userInfos.User.id }, config.tokenPrivateKey, { expiresIn: config.tokenLoginLinkTimeInHours });
|
|
||||||
const mapMail =
|
const mapMail =
|
||||||
{
|
{
|
||||||
SITE_NAME: config.siteName,
|
SITE_NAME: config.siteName,
|
||||||
@ -95,7 +94,6 @@ exports.notifyExpirationFreeAccount= async(req, res, next) =>
|
|||||||
else
|
else
|
||||||
res.message=users.length+txt.mailEndFreeTimeMessage;
|
res.message=users.length+txt.mailEndFreeTimeMessage;
|
||||||
res.status(200).json(true);
|
res.status(200).json(true);
|
||||||
console.log(users.length+txt.mailEndFreeTimeMessage);
|
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
catch(e)
|
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) =>
|
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
|
try
|
||||||
{
|
{
|
||||||
const db = require("../models/index");
|
const db = require("../models/index");
|
||||||
@ -128,27 +127,26 @@ exports.notifyExpirationAccount= async(req, res, next) =>
|
|||||||
});
|
});
|
||||||
return users;
|
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);
|
let userInfos=await searchUserById(user.UserId);
|
||||||
if(userInfos && userInfos.User.status=="user")
|
if(userInfos && userInfos.User.status=="user")
|
||||||
{
|
{
|
||||||
//const token=jwt.sign({ userId: userInfos.User.id }, config.tokenPrivateKey, { expiresIn: config.tokenLoginLinkTimeInHours });
|
|
||||||
const mapMail =
|
const mapMail =
|
||||||
{
|
{
|
||||||
SITE_NAME: config.siteName,
|
SITE_NAME: config.siteName,
|
||||||
USER_NAME: userInfos.User.name,
|
USER_NAME: userInfos.User.name,
|
||||||
LINK_URL : config.siteUrl+"/"+configTpl.updateAccountPage+"#abo"
|
LINK_URL : config.siteUrl+"/"+configTpl.updateAccountPage+"#subscribe"
|
||||||
};
|
};
|
||||||
const mailDatas=
|
const mailDatas=
|
||||||
{
|
{
|
||||||
mailSubject: txt.mailExpirationSubject,
|
mailSubject: txt.mailExpirationSubject,
|
||||||
mailPreheader: txt.mailExpirationSubject,
|
mailPreheader: txt.mailExpirationSubject,
|
||||||
mailTitle: txt.mailExpirationSubject,
|
mailTitle: txt.mailExpirationSubject,
|
||||||
mailHeaderLinkUrl: config.siteUrl+"/"+configTpl.updateAccountPage+"#abo",
|
mailHeaderLinkUrl: config.siteUrl+"/"+configTpl.updateAccountPage+"#subscribe",
|
||||||
mailHeaderLinkTxt: txt.mailExpirationLinkTxt,
|
mailHeaderLinkTxt: txt.mailExpirationLinkTxt,
|
||||||
mailMainContent: tool.replaceAll(txt.mailExpirationBodyHTML, mapMail),
|
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
|
mailRecipientAddress: userInfos.User.email
|
||||||
}
|
}
|
||||||
await toolMail.sendMail(userInfos.User.smtp, userInfos.User.email, txt.mailExpirationSubject, tool.replaceAll(txt.mailExpirationBodyTxt, mapMail), "", mailDatas);
|
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 :
|
// première salve :
|
||||||
let users1=await getUsers(config.accountExpirationFirstNotificationInDays);
|
let users1=await getUsers(config.accountExpirationFirstNotificationInDays);
|
||||||
for(i in users1)
|
for(let i in users1)
|
||||||
sendNotification(users1[i], "first");
|
sendNotification(users1[i], "first");
|
||||||
// deuxième relance :
|
// deuxième relance :
|
||||||
let users2=await getUsers(config.accountExpirationSecondNotificationInDays);
|
let users2=await getUsers(config.accountExpirationSecondNotificationInDays);
|
||||||
for(i in users2)
|
for(let i in users2)
|
||||||
sendNotification(users2[i], "second");
|
sendNotification(users2[i], "second");
|
||||||
if(res.message)
|
if(res.message)
|
||||||
res.message+="\n"+tool.replaceAll(txt.mailExpirationMessage, { FIRST:users1.length , SECOND:users2.length });
|
res.message+="\n"+tool.replaceAll(txt.mailExpirationMessage, { FIRST:users1.length , SECOND:users2.length });
|
||||||
|
@ -21,14 +21,14 @@ module.exports =
|
|||||||
|
|
||||||
mailExpirationSubject: "Votre abonnement va bientôt expirer",
|
mailExpirationSubject: "Votre abonnement va bientôt expirer",
|
||||||
mailExpirationLinkTxt : "Prolonger mon abonnement.",
|
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>",
|
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.",
|
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 :",
|
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 :",
|
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>.",
|
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.",
|
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.",
|
infosPaymentsAdmin : "DATE_PAYMENT : paiement de AMOUNT € au nom de CLIENT_NAME.",
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user