const formatString = require('../helpers/strings').formatString class ArtistSong { constructor (models) { this.models = models } /** * Point d'entrée pour l'ajout suppression de favoris * @param {String} type * @param {Function} botSay * @param {String} from * @param {Object} currentSong * @param {Array} line */ action (type, botSay, from, currentSong, line) { let value = currentSong[type] if (line.length > 3) { value = '' for (let i = 3; i < line.length; i += 1) { value += ' ' + line[i] } value = value.replace(' ', '') } const item = { user: from, type: type, value: value } switch (line[2]) { case 'add': this.add(botSay, from, item) break case 'del': this.delete(botSay, from, item) } } /** * Fonction permettant de notifier les utilisateurs lorsqu'un bon song est joué * @param {Function} botSay * @param {String} where * @param {Object} currentSong */ notify (botSay, where, currentSong) { this.models.Notifications .find({ $or: [ { type: 'artist', value: formatString(currentSong.artist) }, { type: 'title', value: formatString(currentSong.title) } ] }) .then(list => { const artist = [] const song = [] for (let i = 0; i < list.length; i += 1) { if (list[i].type === 'artist') { artist.push(list[i].user) } else { song.push(list[i].user) } } if (artist.length > 0) { botSay(where, `${process.env.RADIO_ALIAS} : Hey ${artist.toString().replace(/,/g, ', ')} ! Y'a ${currentSong.title} ! Monte${artist.length > 1 ? 'z' : ''} le son !`) } if (song.length > 0) { botSay(where, `${process.env.RADIO_ALIAS} : Hey ${song.toString().replace(/,/g, ', ')} ! Y'a ${song.title} ! Monte${song.length > 1 ? 'z' : ''} le son !`) } }) .catch(err => { console.log('ERR:', err) }) } /** * Fonction permettant d'ajouter un favoris * @param {Function} botSay * @param {String} from * @param {Object} item */ add (botSay, from, item) { this.models.Notifications .findOne(item) .then(notification => { if (!notification) { const newItem = new this.models.Notifications(item) newItem.save((err, res) => { if (err) { console.log('ERR:', err) } else { botSay(from, `${item.value} correctement ajouté dans vos favoris`) } }) } else { botSay(from, `${item.value} est déjà dans tes favoris, c'est moche de vieillir...`) } }) .catch(err => { console.log('ERR:', err) }) } /** * Fonction permettant de supprimer un favoris * @param {Function} botSay * @param {String} from * @param {Object} item */ delete (botSay, from, item) { this.models.Notifications .findOne(item) .then(notification => { if (notification) { notification.remove((err, res) => { if (err) { console.log('ERR:', err) } else { botSay(from, `${item.value} correctement retiré dans vos favoris`) } }) } else { botSay(from, `${item.value} n'est dpas dans tes favoris, c'est moche de vieillir...`) } }) .catch(err => { console.log('ERR:', err) }) } } module.exports = ArtistSong