2019-12-25 13:10:13 +01:00
const Queries = require ( './Queries' )
2019-12-25 12:47:09 +01:00
const moment = require ( 'moment' )
2019-12-25 13:10:13 +01:00
class When extends Queries {
2019-12-25 12:47:09 +01:00
constructor ( models ) {
2019-12-25 13:10:13 +01:00
super ( )
2019-12-25 12:47:09 +01:00
this . models = models
}
/ * *
* Point d ' entrée
* @ param { Function } botSay
* @ param { String } where
* @ param { Array } line
* /
action ( botSay , where , line ) {
if ( line . length < 4 ) {
botSay ( where , 'Tu as oublié la période et ou l\'artiste/titre !' )
return false
}
let isOk = true
2019-12-25 13:10:13 +01:00
this . setBaseFilter ( line , 3 )
const period = line [ 2 ]
const filter = this . getFilter ( )
2019-12-25 12:47:09 +01:00
switch ( period ) {
case 'day' :
case 'week' :
case 'month' :
case 'year' :
case 'lastday' :
case 'lastweek' :
case 'lastmonth' :
case 'lastyear' :
2019-12-25 13:47:42 +01:00
this . setPeriod ( period )
filter . createdAt = this . period
2019-12-25 12:47:09 +01:00
break
default :
isOk = false
}
if ( ! isOk ) {
botSay ( where , 'Période invalide !' )
return false
}
this . models . Histories
. findOne ( filter )
. sort ( {
createdAt : 'desc'
} )
. limit ( 1 )
. then ( item => {
if ( ! item ) {
2019-12-25 13:10:13 +01:00
botSay ( where , ` ${ this . getValue ( ) } n'a pas était joué pour cette période sur ${ process . env . RADIO _ALIAS } ` )
2019-12-25 12:47:09 +01:00
return true
}
2019-12-25 13:10:13 +01:00
if ( item . artist . toLowerCase ( ) === this . getValue ( ) . toLowerCase ( ) ) {
botSay ( where , ` Pour cette période ${ this . getValue ( ) } a été entendu pour la dernière fois le ${ moment ( item . createdAt ) . format ( 'DD/MM/YYYY à HH:mm' ) } avec ${ item . title } ` )
2019-12-25 12:47:09 +01:00
} else {
2019-12-25 13:10:13 +01:00
botSay ( where , ` Pour cette période ${ this . getValue ( ) } a été entendu pour la dernière fois le ${ moment ( item . createdAt ) . format ( 'DD/MM/YYYY à HH:mm' ) } ` )
2019-12-25 12:47:09 +01:00
}
} )
. catch ( err => {
console . log ( 'ERR:' , err )
botSay ( where , 'Impossible de te répondre pour le moment, j\'ai buggé...' )
} )
}
}
module . exports = When