from fastapi import APIRouter, Depends, Query from app.core.auth import get_current_admin_user, get_current_user from app.models.models import ( CreateMenuRequest, CreateRoleRequest, UpdateMenuRequest, UpdateRolePermissionsRequest, UpdateRoleRequest, ) import app.services.admin_service as admin_service router = APIRouter() @router.get("/admin/menus") async def get_all_menus(current_user=Depends(get_current_admin_user)): return admin_service.get_all_menus() @router.post("/admin/menus") async def create_menu(request: CreateMenuRequest, current_user=Depends(get_current_admin_user)): return admin_service.create_menu(request) @router.put("/admin/menus/{menu_id}") async def update_menu(menu_id: int, request: UpdateMenuRequest, current_user=Depends(get_current_admin_user)): return admin_service.update_menu(menu_id, request) @router.delete("/admin/menus/{menu_id}") async def delete_menu(menu_id: int, current_user=Depends(get_current_admin_user)): return admin_service.delete_menu(menu_id) @router.get("/admin/roles") async def get_all_roles(current_user=Depends(get_current_admin_user)): return admin_service.get_all_roles() @router.post("/admin/roles") async def create_role(request: CreateRoleRequest, current_user=Depends(get_current_admin_user)): return admin_service.create_role(request) @router.put("/admin/roles/{role_id}") async def update_role(role_id: int, request: UpdateRoleRequest, current_user=Depends(get_current_admin_user)): return admin_service.update_role(role_id, request) @router.get("/admin/roles/{role_id}/users") async def get_role_users( role_id: int, page: int = Query(1, ge=1), size: int = Query(10, ge=1, le=100), current_user=Depends(get_current_admin_user), ): return admin_service.get_role_users(role_id, page, size) @router.get("/admin/roles/permissions/all") async def get_all_role_permissions(current_user=Depends(get_current_admin_user)): return admin_service.get_all_role_permissions() @router.get("/admin/roles/{role_id}/permissions") async def get_role_permissions(role_id: int, current_user=Depends(get_current_admin_user)): return admin_service.get_role_permissions(role_id) @router.put("/admin/roles/{role_id}/permissions") async def update_role_permissions( role_id: int, request: UpdateRolePermissionsRequest, current_user=Depends(get_current_admin_user), ): return admin_service.update_role_permissions(role_id, request) @router.get("/menus/user") async def get_user_menus(current_user=Depends(get_current_user)): return admin_service.get_user_menus(current_user)