irc-radio-bot/libs/When.js

76 lines
1.9 KiB
JavaScript
Raw Normal View History

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
2020-01-09 11:24:40 +01:00
this.setBaseFilter(line, 3, true)
2019-12-25 13:10:13 +01:00
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':
2020-01-13 14:26:18 +01:00
case 'yesterday':
2019-12-25 12:47:09 +01:00
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