"""Analytics reports API router.""" from fastapi import APIRouter, Depends, status from app.core.logging import get_logger from app.dependencies.auth import get_current_user, TokenUser from app.reports.schemas.schema import ReportCreate, ReportResponse, ReportListRequest, StatusResponse from app.reports.services.service import ReportService from app.reports.sales.router import router as sales_router from app.reports.purchases.router import router as purchases_router from app.reports.inventory.router import router as inventory_router from app.reports.customers.router import router as customers_router from app.reports.employees.router import router as employees_router from app.reports.spa_bookings.router import router as spa_bookings_router from app.reports.financial.router import router as financial_router logger = get_logger(__name__) router = APIRouter(prefix="/reports", tags=["reports"]) @router.post("", response_model=StatusResponse, status_code=status.HTTP_201_CREATED, summary="Create a report") async def create_report( payload: ReportCreate, current_user: TokenUser = Depends(get_current_user), ): report_id = await ReportService.create_report(payload, created_by=current_user.user_id) return StatusResponse(success=True, message="Report created", report_id=report_id) @router.get("/{report_id}", response_model=ReportResponse, summary="Get report by ID") async def get_report( report_id: str, current_user: TokenUser = Depends(get_current_user), ): return await ReportService.get_report(report_id) @router.post("/list", summary="List reports with filters and optional projection") async def list_reports( payload: ReportListRequest, current_user: TokenUser = Depends(get_current_user), ): results = await ReportService.list_reports( filters=payload.filters, skip=payload.skip, limit=payload.limit, projection_list=payload.projection_list, ) total = await ReportService.count_reports(payload.filters) return {"success": True, "total": total, "skip": payload.skip, "limit": payload.limit, "data": results} router.include_router(sales_router) router.include_router(purchases_router) router.include_router(inventory_router) router.include_router(customers_router) router.include_router(employees_router) router.include_router(spa_bookings_router) router.include_router(financial_router)