From d87622417a5264f3e063fccdff833acda785fb6f Mon Sep 17 00:00:00 2001 From: Egor Date: Sat, 6 Sep 2025 01:07:52 +0300 Subject: [PATCH] Update promocodes.py --- app/handlers/admin/promocodes.py | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/app/handlers/admin/promocodes.py b/app/handlers/admin/promocodes.py index fc75be5e..e51d364b 100644 --- a/app/handlers/admin/promocodes.py +++ b/app/handlers/admin/promocodes.py @@ -969,6 +969,38 @@ async def show_promocode_stats( await callback.message.edit_text(text, reply_markup=keyboard) await callback.answer() +@admin_required +@error_handler +async def show_general_promocode_stats( + callback: types.CallbackQuery, + db_user: User, + db: AsyncSession +): + total_codes = await get_promocodes_count(db) + active_codes = await get_promocodes_count(db, is_active=True) + + text = f""" +πŸ“Š ΠžΠ±Ρ‰Π°Ρ статистика ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄ΠΎΠ² + +πŸ“ˆ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ: +- ВсСго ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄ΠΎΠ²: {total_codes} +- Активных: {active_codes} +- НСактивных: {total_codes - active_codes} + +Для Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ статистики Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄ ΠΈΠ· списка. +""" + + keyboard = types.InlineKeyboardMarkup(inline_keyboard=[ + [ + types.InlineKeyboardButton(text="🎫 К ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄Π°ΠΌ", callback_data="admin_promo_list") + ], + [ + types.InlineKeyboardButton(text="⬅️ Назад", callback_data="admin_promocodes") + ] + ]) + + await callback.message.edit_text(text, reply_markup=keyboard) + await callback.answer() def register_handlers(dp: Dispatcher): dp.callback_query.register(show_promocodes_menu, F.data == "admin_promocodes") @@ -984,6 +1016,7 @@ def register_handlers(dp: Dispatcher): dp.callback_query.register(start_edit_promocode_amount, F.data.startswith("promo_edit_amount_")) dp.callback_query.register(start_edit_promocode_days, F.data.startswith("promo_edit_days_")) dp.callback_query.register(start_edit_promocode_uses, F.data.startswith("promo_edit_uses_")) + dp.callback_query.register(show_general_promocode_stats, F.data == "admin_promo_general_stats") dp.callback_query.register( show_promocode_edit_menu, @@ -997,3 +1030,4 @@ def register_handlers(dp: Dispatcher): dp.message.register(process_promocode_value, AdminStates.setting_promocode_value) dp.message.register(process_promocode_uses, AdminStates.setting_promocode_uses) dp.message.register(process_promocode_expiry, AdminStates.setting_promocode_expiry) +