const {
    Telegraf
} = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN)
const {
    UserModel,
    WorldModel,
    BusinessModel
} = global.config
const {
    spaces,
    giveExp,
    rand
} = global.utils

module.exports = async (ctx) => {
    let user = null
    let business = await BusinessModel.findOne({
      where: {
        owner: ctx.from.id.toString()
      }
    })
    let world = await WorldModel.findByPk(1)
    if (business === null) return await ctx.reply(`У вас нет организации.`)
    if (business.checks < 12) return await ctx.reply(`Недостаточно отработок для формирования выплаты.`)
    let percentSum = 0
    let text = ``
    let percentErrorText = ``
    let profit = 0
    let piece = 0
    let moneyList = rand(1000, 3000)
    moneyList = moneyList*business.users.length
    for (i = 0; i < business.users.length; i++) { // Summary percent
        user = await UserModel.findByPk(business.users[i])
        percentSum += Number(user.business.percent)
        percentErrorText += `ℹ️ ${user.username} ${user.business.percent}% [/percent ${user.username} [проценты]]\n`
    }
    if (percentSum > 100) return await ctx.reply(`⚠️ Общий процент всех сотрудников превышает 100%\n    ➕ Остаток процентов перенесется в баланс организации.\n\n${percentErrorText}\n`)
    for (x = 0; x < business.users.length; x++) { // Общая внесенная сумма всеми участниками
        user = await UserModel.findByPk(business.users[x])
        profit += user.business.checks * moneyList * user.level
        text += `ℹ️ ${user.username} отработал ${user.business.checks} раз.\n`
        user.business = {
            id: user.business.id,
            checks: 0,
            percent: user.business.percent
        }
        user.save()
    }
    text += `   💹 Наработка за текущий период: ${profit}\n`
    let profitCheck = profit
    for (n = 0; n < business.users.length; n++) { // Процент выплаты участникам
        user = await UserModel.findByPk(business.users[n])
        piece = Math.round(profit / 100 * user.business.percent)
        profitCheck -= piece
        user.money += piece
        text += `➕ ${user.username} получает ₽${piece}\n`
        await bot.telegram.sendMessage(user.telegram_id, `ℹ️ Директор организации сформировал выплаты.\n➕ На ваш баланс поступило: ₽${spaces(piece)}`)
        giveExp(user, business.checks)
        user.save()
    }
    if (profitCheck > 0) {
        business.balance += profitCheck
        text += `➕ На баланс бизнеса поступило ₽${profitCheck}`
    }
    business.checks = 0
    business.save()
    console.log(`Payday: ${business.name}\n${text}`)
    return await ctx.reply(text)
}