51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
from aiogram.filters.callback_data import CallbackData
|
||
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||
|
||
from keyboards.admin.panel_kb import AdminPanelCallback, build_admin_back_btn
|
||
|
||
|
||
class AdminCouponDeleteCallback(CallbackData, prefix="admin_coupon_delete"):
|
||
coupon_code: str
|
||
|
||
|
||
def build_coupons_kb() -> InlineKeyboardMarkup:
|
||
builder = InlineKeyboardBuilder()
|
||
builder.button(text="➕ Создать купон", callback_data=AdminPanelCallback(action="coupons_create").pack())
|
||
builder.button(text="Купоны", callback_data=AdminPanelCallback(action="coupons_list").pack())
|
||
builder.row(build_admin_back_btn())
|
||
return builder.as_markup()
|
||
|
||
|
||
def build_coupons_list_kb(coupons: list, current_page: int, total_pages: int) -> InlineKeyboardMarkup:
|
||
builder = InlineKeyboardBuilder()
|
||
|
||
for coupon in coupons:
|
||
coupon_code = coupon["code"]
|
||
builder.button(
|
||
text=f"❌{coupon_code}",
|
||
callback_data=AdminCouponDeleteCallback(coupon_code=coupon_code).pack(),
|
||
)
|
||
|
||
pagination_buttons = []
|
||
if current_page > 1:
|
||
pagination_buttons.append(
|
||
InlineKeyboardButton(
|
||
text="⬅️ Назад",
|
||
callback_data=AdminPanelCallback(action="coupons_list", page=current_page - 1).pack(),
|
||
)
|
||
)
|
||
if current_page < total_pages:
|
||
pagination_buttons.append(
|
||
InlineKeyboardButton(
|
||
text="Вперед ➡️",
|
||
callback_data=AdminPanelCallback(action="coupons_list", page=current_page + 1).pack(),
|
||
)
|
||
)
|
||
if pagination_buttons:
|
||
builder.row(*pagination_buttons)
|
||
|
||
builder.row(build_admin_back_btn("coupons"))
|
||
builder.adjust(2)
|
||
return builder.as_markup()
|