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)
+