from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from backend.app.api.deps import require_permissions, require_roles from backend.app.db import get_db_session from backend.app.core.error_codes import ErrorCode from backend.app.core.exceptions import AppException from backend.app.schemas.common import success_payload from backend.app.services.reminder_service import reminder_service from backend.app.services.order_service import order_service router = APIRouter(prefix="/api/salesman", tags=["salesman"]) @router.get("/dashboard") def salesman_dashboard( session: Session = Depends(get_db_session), current_user: dict = Depends(require_roles("salesman", "admin")), _permission_user: dict = Depends(require_permissions("order:list")), ) -> dict: orders = order_service.list_orders(session, {"salesman_id": current_user.get("user_id")}) reminders = reminder_service.list_reminders(session, {"receiver_user_id": current_user.get("user_id")}) return success_payload( { "orders": orders[:20], "reminders": reminders.get("list", []) if isinstance(reminders, dict) else [], "summary": { "order_count": len(orders), "reminder_count": len(reminders.get("list", [])) if isinstance(reminders, dict) else 0, }, } )