88 lines
2.2 KiB
JavaScript
88 lines
2.2 KiB
JavaScript
const setPeriod = require('../helpers/dates').setPeriod
|
|
const formatString = require('../helpers/strings').formatString
|
|
const moment = require('moment')
|
|
|
|
class When {
|
|
constructor (models) {
|
|
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
|
|
}
|
|
|
|
const period = line[2]
|
|
let value = ''
|
|
for (let i = 3; i < line.length; i += 1) {
|
|
value += ' ' + line[i]
|
|
}
|
|
value = value.replace(' ', '')
|
|
let isOk = true
|
|
const filter = {
|
|
$or: [
|
|
{
|
|
artist: formatString(value)
|
|
},
|
|
{
|
|
title: formatString(value)
|
|
}
|
|
]
|
|
}
|
|
|
|
switch (period) {
|
|
case 'day':
|
|
case 'week':
|
|
case 'month':
|
|
case 'year':
|
|
case 'lastday':
|
|
case 'lastweek':
|
|
case 'lastmonth':
|
|
case 'lastyear':
|
|
filter.createdAt = setPeriod(period)
|
|
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) {
|
|
botSay(where, `${value} n'a pas était joué pour cette période sur ${process.env.RADIO_ALIAS}`)
|
|
return true
|
|
}
|
|
|
|
if (item.artist.toLowerCase() === value.toLowerCase()) {
|
|
botSay(where, `Pour cette période ${value} a été entendu pour la dernière fois le ${moment(item.createdAt).format('DD/MM/YYYY à HH:mm')} avec ${item.title}`)
|
|
} else {
|
|
botSay(where, `Pour cette période ${value} a été entendu pour la dernière fois le ${moment(item.createdAt).format('DD/MM/YYYY à HH:mm')}`)
|
|
}
|
|
})
|
|
.catch(err => {
|
|
console.log('ERR:', err)
|
|
botSay(where, 'Impossible de te répondre pour le moment, j\'ai buggé...')
|
|
})
|
|
|
|
console.log('PERIOD:', period, 'SONG:', value)
|
|
console.log('FILTER:', filter)
|
|
}
|
|
}
|
|
|
|
module.exports = When
|