Category rendering, DB columns refined.
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
from aiogram import Router
|
||||
from aiogram.types import Message
|
||||
from aiogram import Router, F
|
||||
from aiogram.types import CallbackQuery, Message
|
||||
from aiogram.filters import Command
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from misc.kb import main_menu_kb
|
||||
from misc.kb import main_menu_kb, render_category
|
||||
from repositories.categories import CategoriesRepository
|
||||
from services.categories import CategoryService
|
||||
from services.orders import OrderService
|
||||
|
||||
router = Router()
|
||||
@@ -19,6 +21,15 @@ async def main_menu(msg: Message, state: FSMContext):
|
||||
) # TODO: Write a welcome message
|
||||
|
||||
|
||||
@router.callback_query(F.data.startswith("menu:"))
|
||||
async def main_menu_cb(cb: CallbackQuery, state: FSMContext):
|
||||
await state.clear()
|
||||
|
||||
await cb.message.edit_text(
|
||||
"hii!", reply_markup=await main_menu_kb(cb.from_user.id)
|
||||
) # TODO: Write a welcome message
|
||||
|
||||
|
||||
@router.message(Command("orders"))
|
||||
async def get_orders(
|
||||
msg: Message,
|
||||
@@ -30,3 +41,33 @@ async def get_orders(
|
||||
|
||||
count = await order_service.get_order_count(session, msg.from_user.id)
|
||||
await msg.answer(f"you have {count} orders.")
|
||||
|
||||
|
||||
@router.callback_query(F.data.startswith("cat:"))
|
||||
async def subcatalogue(
|
||||
cb: CallbackQuery,
|
||||
state: FSMContext,
|
||||
category_service: CategoryService,
|
||||
session: AsyncSession,
|
||||
categories_repo: CategoriesRepository,
|
||||
):
|
||||
await state.clear()
|
||||
|
||||
cat_id = cb.data.split(":")[1]
|
||||
|
||||
if cat_id == "root":
|
||||
children = await category_service.get_children(session)
|
||||
kb = await render_category(children, show_menu=True)
|
||||
|
||||
else:
|
||||
cat_id = int(cat_id)
|
||||
|
||||
children = await category_service.get_children(session, cat_id)
|
||||
category = await categories_repo.get_category_by_id(session, cat_id)
|
||||
parent_id = category.parent_id or "root"
|
||||
kb = await render_category(children, parent_id)
|
||||
|
||||
await cb.message.edit_text(
|
||||
"category selection",
|
||||
reply_markup=kb,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user