Fix error and improve commentaire lifecycles

This commit is contained in:
Cédric FAMIBELLE-PRONZOLA
2022-05-20 00:07:11 +04:00
parent 4efc176e0f
commit 0e21e4b136
@@ -1,40 +1,64 @@
'use strict'; 'use strict';
const jwennTeksEpiId = async teksId => { const { ValidationError, NotFoundError } = require("@strapi/utils").errors
const paroles = await strapi.db.query('api::parole.parole').findOne({id: teksId})
return paroles
}
const jwennUserEpiId = async userId => { const jwennUserEpiId = async userId => {
const user = await strapi.db.query('plugin::users-permissions.user').findOne({id: userId}) if (!userId) {
return null
}
const user = await strapi.db.query('plugin::users-permissions.user').findOne({
where: {id: userId}
})
return user return user
} }
const jwennParoleEpiId = async paroleId => {
if (!paroleId) {
return null
}
const parole = await strapi.db.query('api::parole.parole').findOne({
where: {id: paroleId}
})
return parole
}
const validateCommentaire = data => {
if (!data.contenu && !data.datePublication) {
throw new ValidationError('Mauvaise requête, contenu et datePublication sont obligatoires')
}
if (!data.contenu || data.contenu.trim().length === 0) {
throw new ValidationError('Champ obligatoire. Veuillez renseigner le contenu du commentaire.')
}
if (data.contenu.trim().length > 500) {
throw new ValidationError('Le commentaire doit contenir 500 caractères maximum.')
}
}
module.exports = { module.exports = {
beforeCreate: async event => { beforeCreate: async event => {
let {data} = event.params const {data} = event.params
validateCommentaire(data)
if (data.contenu && data.parole && data.user) {
const parole = await jwennTeksEpiId(data.parole)
const user = await jwennUserEpiId(data.user)
if(!parole || !user) {
throw new NotFoundError('Introuvable')
}
} else {
throw new ValidationError('Mauvaise requête')
}
}, },
afterCreate: async event => { afterCreate: async event => {
const {data} = event.params const {data, result} = event.params
const user = await jwennUserEpiId(data.user) const user = await jwennUserEpiId(data.user)
const parole = await jwennParoleEpiId(data.parole)
if (!parole) {
throw new NotFoundError('Texte introuvable.')
}
if (user) { if (user) {
strapi.plugins['email'].services.email.send({ strapi.plugins['email'].services.email.send({
from: process.env.SMTP_FROM, from: process.env.SMTP_FROM,
to: process.env.SMTP_SEND_TO, to: process.env.SMTP_SEND_TO,
subject: `Nouveau commentaire de ${user.username}`, subject: `Commentaire de ${user.username} sur "${parole.titre}"`,
html: data.contenu html: data.contenu
}) })
} }