Files
api.pawol.nu/api/teks/models/teks.js
T
2021-05-30 12:00:39 +02:00

54 lines
1.7 KiB
JavaScript

'use strict';
const slugify = require('slugify')
const jwennAwtisEpiId = async data => {
const awtis = await strapi.query('awtis').find({_id: data})
return awtis.map(a => a.alias).join('-')
}
module.exports = {
lifecycles: {
beforeCreate: async data => {
if (data.tit) {
const awtis = await jwennAwtisEpiId(data.awtis)
data.slug = slugify(`${awtis}-${data.tit}`, {lower: true, remove: /[*#+~.()'"!:@]/g})
}
},
beforeUpdate: async (params, data) => {
if (data.tit) {
const awtis = await jwennAwtisEpiId(data.awtis)
data.slug = slugify(`${awtis}-${data.tit}`, {lower: true, remove: /[*#+~.()'"!:@]/g})
}
if (data.published_at != null) {
const {_id} = params
const previousData = await strapi.query('teks').findOne({_id})
const previousPublishedAt = previousData.published_at
const currentPublished_at = data.published_at
if (currentPublished_at != previousPublishedAt) {
if (previousData.user) {
strapi.services.email.send(
process.env.SMTP_FROM,
previousData.user.email,
`Publication de "${previousData.tit}"`,
`Le titre que vous avez soumis, "${previousData.tit}" a été publié sur le site.
Vous pouvez le trouver à l'adresse ${process.env.WEBSITE_URL}/teks/${previousData.slug}`
)
}
}
}
},
afterCreate: async data => {
if (data.user) {
strapi.services.email.send(
process.env.SMTP_FROM,
process.env.SMTP_SEND_TO,
`Nouveau texte de ${data.user.username} : "${data.tit}"`,
`Le titre "${data.tit}" a été soumis depuis le site.`
)
}
}
}
}