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