diff --git a/services/api-gateway/app/routers/auth.py b/services/api-gateway/app/routers/auth.py index d8e0444..1562701 100644 --- a/services/api-gateway/app/routers/auth.py +++ b/services/api-gateway/app/routers/auth.py @@ -17,6 +17,7 @@ from app.schemas.auth import ( TokenResponse, UserResponse, CreateUserRequest, + UpdateStatusRequest, ) router = APIRouter(prefix="/auth", tags=["auth"]) @@ -94,3 +95,51 @@ def register_first_admin(request: CreateUserRequest, db: Session = Depends(get_d db.refresh(user) return UserResponse.model_validate(user) + + +@router.put("/me/status") +def update_my_status( + request: UpdateStatusRequest, + db: Session = Depends(get_db), + current_user: User = Depends(get_current_user), +): + current_user.status = request.status + db.commit() + return {"success": True, "status": request.status.value} + + +@router.get("/agents") +def list_agents( + db: Session = Depends(get_db), + current_user: User = Depends(get_current_user), +): + """List all agents with their status and conversation counts""" + from app.models.whatsapp import Conversation, ConversationStatus + + agents = db.query(User).filter(User.is_active == True).all() + result = [] + + for agent in agents: + active_count = ( + db.query(Conversation) + .filter( + Conversation.assigned_to == agent.id, + Conversation.status.in_( + [ConversationStatus.ACTIVE, ConversationStatus.WAITING] + ), + ) + .count() + ) + + result.append( + { + "id": str(agent.id), + "name": agent.name, + "email": agent.email, + "role": agent.role.value, + "status": agent.status.value, + "active_conversations": active_count, + } + ) + + return result diff --git a/services/api-gateway/app/schemas/auth.py b/services/api-gateway/app/schemas/auth.py index 2c448eb..4c02e98 100644 --- a/services/api-gateway/app/schemas/auth.py +++ b/services/api-gateway/app/schemas/auth.py @@ -43,3 +43,7 @@ class CreateUserRequest(BaseModel): password: str name: str role: UserRole = UserRole.AGENT + + +class UpdateStatusRequest(BaseModel): + status: UserStatus