# app/api/v1/vendor/teams.py """ Vendor team member management 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.team_service import team_service from models.database.user import User from models.database.vendor import Vendor router = APIRouter(prefix="/teams") logger = logging.getLogger(__name__) @router.get("/members") def get_team_members( vendor: Vendor = Depends(require_vendor_context()), current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): """Get all team members for vendor.""" return team_service.get_team_members(db, vendor.id, current_user) @router.post("/invite") def invite_team_member( invitation_data: dict, vendor: Vendor = Depends(require_vendor_context()), current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): """Invite a new team member.""" return team_service.invite_team_member(db, vendor.id, invitation_data, current_user) @router.put("/members/{user_id}") def update_team_member( user_id: int, update_data: dict, vendor: Vendor = Depends(require_vendor_context()), current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): """Update team member role or status.""" return team_service.update_team_member(db, vendor.id, user_id, update_data, current_user) @router.delete("/members/{user_id}") def remove_team_member( user_id: int, vendor: Vendor = Depends(require_vendor_context()), current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): """Remove team member from vendor.""" team_service.remove_team_member(db, vendor.id, user_id, current_user) return {"message": "Team member removed successfully"} @router.get("/roles") def get_team_roles( vendor: Vendor = Depends(require_vendor_context()), current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): """Get available roles for vendor team.""" return team_service.get_vendor_roles(db, vendor.id)