const {
    UserModel,
    WorldModel,
    JobModel
} = global.config

const {
    random,
    setCooldown,
    giveExp
  } = global.utils

module.exports = async (ctx) => {
    let user = await UserModel.findByPk(ctx.from.id);
    let job = await JobModel.findByPk(user.job);
    let world = await WorldModel.findByPk(1)
    let timer = user.jobtime
    let cooldown = setCooldown(user, 3600, timer)
    if (user.jobtime > cooldown.currentTime) return ctx.reply(`📛 Работать можно будет через ${cooldown.timeLeftInMinutes} минут(у/ы)`);
    if (user.job == 0) {
        return await ctx.reply(`📛 Вы безработный.`)
    }
    user.jobtime = Number(cooldown.endTime)
    let jobExp = job.exp;
    user.jobcheck++
    switch (user.job) {
        case 1:
            if (user.jobcheck >= 4) {
                let paydayfee = job.salary / 100 * world.transactionfee
                let payday = job.salary - paydayfee
                world.balance -= payday
                user.money += payday
                giveExp(user, jobExp)
                user.jobcheck = 0
                user.save()
                world.save()
                return ctx.reply(`👔 Вы отработали смену дворника. \n🧾 Расчетный лист: \n⏳ Отработано часов: 4/4 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
            } else {
                user.save()
                return ctx.reply(`👔 Вы подмели дворы. \n⏳ Отработано часов: ${user.jobcheck}/4`)
            }
            break;
        case 2:
            if (user.jobcheck >= 2) {
                let paydayfee = job.salary / 100 * world.transactionfee
                let payday = job.salary - paydayfee
                world.balance -= payday
                user.money += payday
                giveExp(user, jobExp)
                user.jobcheck = 0
                user.save()
                world.save()
                return ctx.reply(`👔 Вы отработали смену промоутера. \n🧾 Расчетный лист: \n⏳ Отработано часов: 2/2 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
            } else {
                user.save()
                return ctx.reply(`👔 Вы раздавали листовки целый час. \n⏳ Отработано часов: ${user.jobcheck}/2`)
            }
            break;
        case 3:
            if (user.jobcheck >= 4) {
                let paydayfee = job.salary / 100 * world.transactionfee
                let payday = job.salary - paydayfee
                world.balance -= payday
                let tips = [50, 100, 200, 500, 1000].random()
                user.money += tips
                user.money += payday
                giveExp(user, jobExp)
                user.jobcheck = 0
                user.save()
                world.save()
                return ctx.reply(`👔 Вы отработали смену официанта. \n🧾 Расчетный лист: \n⏳ Отработано часов: 4/4 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday} \n💰 Получено чаевых: ₽${tips}`)
            } else {
                let tips = [50, 100, 200, 500, 1000].random()
                user.money += tips
                user.save()
                return ctx.reply(`👔 Вы целый час бегали и отрабатывали заказы. \n🧾 Получено чаевых: ₽${tips} \n⏳ Отработано часов: ${user.jobcheck}/4`)
            }
            break;
        case 4:
            if (user.jobcheck >= 5) {
                let paydayfee = job.salary / 100 * world.transactionfee
                let payday = job.salary - paydayfee
                world.balance -= payday
                let tips = [50, 100, 200, 300, 500, 1000, 2000].random()
                world.balance -= tips
                user.money += tips
                user.money += payday
                giveExp(user, jobExp)
                user.jobcheck = 0
                user.save()
                world.save()
                return ctx.reply(`👔 Вы отработали смену бармена. \n🧾 Расчетный лист: \n⏳ Отработано часов: 5/5 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday} \n💰 Получено чаевых: ₽${tips}`)
            } else {
                let tips = [50, 100, 200, 300, 500, 1000, 2000].random()
                world.balance -= tips
                user.money += tips
                user.save()
                world.save()
                return ctx.reply(`👔 Вы целый час стояли за стойкой и разливали пойло. \n🧾 Получено чаевых: ₽${tips} \n⏳ Отработано часов: ${user.jobcheck}/5`)
            }
            break;
        case 5:
            if (user.jobcheck >= 5) {
                let paydayfee = job.salary / 100 * world.transactionfee
                let payday = job.salary - paydayfee
                world.balance -= payday
                user.money += payday
                giveExp(user, jobExp)
                user.jobcheck = 0
                user.save()
                world.save()
                return ctx.reply(`👔 Вы отработали смену кассира. \n🧾 Расчетный лист: \n⏳ Отработано часов: 5/5 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
            } else {
                user.save()
                return ctx.reply(`👔 Вы целый час обслуживали покупателей и кричали: "Гаааляяя, отмена!". \n⏳ Отработано часов: ${user.jobcheck}/5`)
            }
            break;
        case 6:
            if (user.jobcheck >= 6) {
                let paydayfee = job.salary / 100 * world.transactionfee
                let payday = job.salary - paydayfee
                let stealed = [{
                    name: "Помада",
                    price: 200
                }, {
                    name: "Бюстгалтер",
                    price: 1300
                }, {
                    name: "Прокладки",
                    price: 250
                }, {
                    name: "Перцовый балончик",
                    price: 600
                }, {
                    name: "Гитара",
                    price: 6500
                }, {
                    name: "Комбик",
                    price: 9000
                }, {
                    name: "Кроссовки",
                    price: 2000
                }, {
                    name: "Шампунь",
                    price: 180
                }, {
                    name: "Смартфон Texno",
                    price: 6999
                }, {
                    name: "TWS Гарнитура",
                    price: 2800
                }, {
                    name: "Геймпад GameStation 5",
                    price: 1400
                }, {
                    name: "Дилдо",
                    price: 600
                }, {
                    name: "Вагиноимитатор",
                    price: 600
                }].random()
                world.balance -= payday
                world.balance -= Number(stealed.price)
                user.money += payday
                user.money += Number(stealed.price)
                giveExp(user, jobExp)
                user.jobcheck = 0
                user.save()
                world.save()
                return ctx.reply(`👔 Вы отработали смену в Диких Ягодах. \n🧾 Расчетный лист: \n⏳ Отработано часов: 6/6 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday} \n💰 Вы украли и продали со склада: ${stealed.name} (₽${stealed.price})`)
            } else {
                user.save()
                return ctx.reply(`👔 Вы целый час выдавали заказы в Диких Ягодах. \n⏳ Отработано часов: ${user.jobcheck}/6`)
            }
            break;
        case 7:
            if (user.jobcheck >= 6) {
                let paydayfee = job.salary / 100 * world.transactionfee
                let payday = job.salary - paydayfee
                world.balance -= payday
                user.money += payday
                giveExp(user, jobExp)
                user.jobcheck = 0
                user.save()
                world.save()
                return ctx.reply(`👔 Вы отработали смену слесарем. \n🧾 Расчетный лист: \n⏳ Отработано часов: 6/6 \n💸 Оклад: ₽${job.salary} \nℹ️ Подоходный налог: ${world.transactionfee}% \n💹 К выплате: ₽${payday}`)
            } else {
                user.save()
                return ctx.reply(`👔 Вы целый час работали на заводе, вы молодец! \n⏳ Отработано часов: ${user.jobcheck}/6`)
            }
            break;
    }
}