2020-12-18 19:23:21 +01:00
'use strict' ;
const slugify = require ( 'slugify' )
2021-09-25 10:48:28 +02:00
const axios = require ( 'axios' )
const TELEGRAM _API _URL = 'https://api.telegram.org'
const TELEGRAM _CHAN _ID = process . env . TELEGRAM _CHAN _ID || null
const TELEGRAM _API _TOKEN = process . env . TELEGRAM _API _TOKEN || null
const MESSAGE _URL = ` ${ TELEGRAM _API _URL } /bot ${ TELEGRAM _API _TOKEN } /sendMessage?chat_id= ${ TELEGRAM _CHAN _ID } &parse_mode=html `
2020-12-18 19:23:21 +01:00
const jwennAwtisEpiId = async data => {
2022-05-05 20:20:00 +04:00
const awtis = await strapi . query ( 'awtis' ) . find ( { id : data } )
2020-12-18 19:23:21 +01:00
return awtis . map ( a => a . alias ) . join ( '-' )
}
2022-03-27 02:13:58 +04:00
const jwennUserEpiId = async userId => {
2022-05-08 03:31:15 +04:00
if ( ! userId ) {
return null
}
2022-03-27 02:13:58 +04:00
const user = await strapi . query ( 'user' , 'users-permissions' ) . findOne ( { id : userId } )
return user
}
2022-05-08 05:24:55 +04:00
const jwennUserAdminEpiId = async userAdminId => {
if ( ! userAdminId ) {
return null
}
const user = await strapi . query ( 'user' , 'admin' ) . findOne ( { id : userAdminId , 'roles.code_nin' : 'strapi-super-admin' } )
return user
}
2022-03-27 02:13:58 +04:00
const translateTeks = async teksFR => {
const english = await strapi . services . translator . translate ( 'FR' , 'EN' , teksFR )
const espagnol = await strapi . services . translator . translate ( 'FR' , 'ES' , teksFR )
const deutsch = await strapi . services . translator . translate ( 'FR' , 'DE' , teksFR )
const italiano = await strapi . services . translator . translate ( 'FR' , 'IT' , teksFR )
return {
francais : teksFR ,
2022-04-01 18:52:17 +04:00
english : english + '\n\n (Translated by DeepL)' ,
espagnol : espagnol + '\n\n (Traducido por DeepL)' ,
deutsch : deutsch + '\n\n (Übersetzt von DeepL)' ,
italiano : italiano + '\n\n (Tradotto da DeepL)'
2022-03-27 02:13:58 +04:00
}
}
2020-12-18 19:23:21 +01:00
module . exports = {
lifecycles : {
beforeCreate : async data => {
2022-05-08 03:31:15 +04:00
const user = await jwennUserEpiId ( data ? . user ? . id )
2022-05-08 05:24:55 +04:00
const userAdmin = await jwennUserAdminEpiId ( data ? . created _by )
if ( userAdmin ) {
data . userAdmin = userAdmin . username
}
2022-03-27 02:13:58 +04:00
2022-03-23 09:08:25 +04:00
if ( data . tit && ! data . forceSlug ) {
2020-12-18 19:23:21 +01:00
const awtis = await jwennAwtisEpiId ( data . awtis )
data . slug = slugify ( ` ${ awtis } - ${ data . tit } ` , { lower : true , remove : /[*#+~.()'"!:@]/g } )
}
2022-03-27 02:13:58 +04:00
2022-05-08 03:31:15 +04:00
if ( user && user . canAutoTranslate && data . tradiksyonOtomatik && data . tradiksyon . francais && ( ! data . tradiksyon . english || ! data . tradiksyon . espagnol || ! data . tradiksyon . deutsch || ! data . tradiksyon . italiano ) ) {
2022-03-27 02:13:58 +04:00
const traslate = await translateTeks ( data . tradiksyon . francais )
data . tradiksyon = traslate
}
2020-12-18 19:23:21 +01:00
} ,
beforeUpdate : async ( params , data ) => {
2022-03-23 09:08:25 +04:00
if ( data . tit && ! data . forceSlug ) {
2020-12-18 19:23:21 +01:00
const awtis = await jwennAwtisEpiId ( data . awtis )
data . slug = slugify ( ` ${ awtis } - ${ data . tit } ` , { lower : true , remove : /[*#+~.()'"!:@]/g } )
}
2021-05-30 12:00:39 +02:00
if ( data . published _at != null ) {
2022-05-05 20:20:00 +04:00
const { id } = params
const previousData = await strapi . query ( 'teks' ) . findOne ( { id } )
2021-05-30 12:00:39 +02:00
const previousPublishedAt = previousData . published _at
const currentPublished _at = data . published _at
if ( currentPublished _at != previousPublishedAt ) {
2021-09-25 10:48:28 +02:00
const message = ` <b>Nouvelle publication</b> \x F0 \x 9F \x 8E \x B6 \x F0 \x 9F \x 94 \x A5
2022-03-13 02:27:54 +04:00
\n ${ process . env . WEBSITE _URL } /paroles/ ${ previousData . slug } `
2021-05-30 12:00:39 +02:00
if ( previousData . user ) {
strapi . services . email . send (
process . env . SMTP _FROM ,
previousData . user . email ,
` Publication de " ${ previousData . tit } " ` ,
2022-05-08 05:24:35 +04:00
` Le titre que vous avez soumis, " ${ previousData . tit } " a été publié sur le site. Vous pouvez le trouver à l'adresse ${ process . env . WEBSITE _URL } /paroles/ ${ previousData . slug } `
2021-05-30 12:00:39 +02:00
)
}
2021-09-25 10:48:28 +02:00
2022-05-08 05:24:55 +04:00
const user = await jwennUserAdminEpiId ( previousData ? . created _by ? . id )
if ( user ) {
2022-05-08 03:31:15 +04:00
strapi . services . email . send (
process . env . SMTP _FROM ,
2022-05-08 05:24:55 +04:00
user . email ,
2022-05-08 03:31:15 +04:00
` Publication de " ${ previousData . tit } " ` ,
2022-05-08 05:24:35 +04:00
` Le titre que vous avez soumis, " ${ previousData . tit } " a été publié sur le site. Vous pouvez le trouver à l'adresse ${ process . env . WEBSITE _URL } /paroles/ ${ previousData . slug } `
2022-05-08 03:31:15 +04:00
)
}
2021-09-25 10:48:28 +02:00
await axios . post ( ` ${ MESSAGE _URL } &text= ${ message } ` )
2021-05-30 12:00:39 +02:00
}
}
2021-05-24 18:57:12 +02:00
} ,
afterCreate : async data => {
if ( data . user ) {
strapi . services . email . send (
process . env . SMTP _FROM ,
process . env . SMTP _SEND _TO ,
2022-05-08 03:31:15 +04:00
` Nouveau texte de ${ data . user . username } : " ${ data . tit } " (site) ` ,
2021-05-24 18:57:12 +02:00
` Le titre " ${ data . tit } " a été soumis depuis le site. `
)
}
2022-05-08 03:31:15 +04:00
2022-05-08 05:24:55 +04:00
const user = await jwennUserAdminEpiId ( data ? . created _by ? . id )
if ( user ) {
2022-05-08 03:31:15 +04:00
strapi . services . email . send (
process . env . SMTP _FROM ,
process . env . SMTP _SEND _TO ,
2022-05-08 05:24:55 +04:00
` Nouveau texte de ${ user . username } : " ${ data . tit } " (dashboard) ` ,
2022-05-08 03:31:15 +04:00
` Le titre " ${ data . tit } " a été soumis depuis le dashboard. `
)
}
2020-12-18 19:23:21 +01:00
}
}
}