# app/api/v1/vendor/dashboard.py """ Vendor dashboard and statistics endpoints. """ import logging from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.api.deps import get_current_user from app.core.database import get_db from middleware.vendor_context import require_vendor_context from app.services.stats_service import stats_service from models.database.user import User from models.database.vendor import Vendor router = APIRouter(prefix="/dashboard") logger = logging.getLogger(__name__) @router.get("/stats") def get_vendor_dashboard_stats( vendor: Vendor = Depends(require_vendor_context()), current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): """ Get vendor-specific dashboard statistics. Returns statistics for the current vendor only: - Total products in catalog - Total orders - Total customers - Revenue metrics """ # Get vendor-scoped statistics stats_data = stats_service.get_vendor_stats(db=db, vendor_id=vendor.id) return { "vendor": { "id": vendor.id, "name": vendor.name, "vendor_code": vendor.vendor_code, }, "products": { "total": stats_data.get("total_products", 0), "active": stats_data.get("active_products", 0), }, "orders": { "total": stats_data.get("total_orders", 0), "pending": stats_data.get("pending_orders", 0), "completed": stats_data.get("completed_orders", 0), }, "customers": { "total": stats_data.get("total_customers", 0), "active": stats_data.get("active_customers", 0), }, "revenue": { "total": stats_data.get("total_revenue", 0), "this_month": stats_data.get("revenue_this_month", 0), } }