68 lines
2.9 KiB
JavaScript
68 lines
2.9 KiB
JavaScript
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
|
||
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 * world.matPrice * 10 * 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)
|
||
} |