const {
    UserModel,
    WorldModel,
    BusinessModel
} = global.config
const {
  rand,
  setCooldown
} = require('../utils')

module.exports = async (ctx) => {
    let user = await UserModel.findByPk(ctx.from.id);
    if (!user) return ctx.reply(`Ошибка #1`);
    let bonustime = user.bonustime
    let cooldown = setCooldown(user, 3600, bonustime)
    if (user.bonustime > cooldown.currentTime) return ctx.reply(`📛 Забрать бонус можно будет через ${cooldown.timeLeftInMinutes} минут(у/ы)`);
    user.bonus = 1;
    user.bonustime = cooldown.endTime
    let world = await WorldModel.findByPk(1)
    let text = ``;
    let money = [100, 200, 300, 400, 500, 1000].random();
    if (user.level >= 5) {
        money += money;
    }
    let r = rand(1, 2);
    let x = rand(2, 7);
    if (r == 1) {
        text += `⏩ ₽${money}\n`;
    }
    if (r == 2) {
        money = money*x
        text += `⏩ ₽${money}\n`;
    }
    switch(user.status){
        case 'bronze':
            user.money += 5000
            text += `⭐ Дополнительный бонус за Bronze:\n⏩ ₽5.000\n`
            break;
        case 'silver':
            user.money += 15000
            text += `⭐ Дополнительный бонус за Silver:\n⏩ ₽15.000\n`
            break;
        case 'gold':
            user.money += 30000
            text += `⭐ Дополнительный бонус за Gold:\n⏩ ₽30.000\n`
            break;
    }
    user.money += money;
    world.balance -= money
    if (user.business.id == 0){
      await user.save();
      await world.save();
      return ctx.reply(`
      ⭐ Из ежечасного бонуса Вам выпало:
${text}
      `)
    }
    let business = await BusinessModel.findOne({
      where: {
        owner: user.business.id.toString()
      }
    })
    if(business != null){
      let mats = rand(3, 10)
      switch(user.status){
        case 'bronze':
            business.materials += 5
            text += `⭐ Дополнительный бонус за Bronze:\n⏩ 5 материалов\n`
            break;
        case 'silver':
            business.materials += 10
            text += `⭐ Дополнительный бонус за Silver:\n⏩ 10 материалов\n`
            break;
        case 'gold':
            business.materials += 20
            text += `⭐ Дополнительный бонус за Gold:\n⏩ 20 материалов\n`
            break;
    }
      text += `⏩ ${mats} материалов в организацию\n`
      business.materials += Number(mats)
      business.save()
    }
    await user.save();
    await world.save();
    return ctx.reply(`
      ⭐ Из ежечасного бонуса Вам выпало:
${text}
      `)
}