74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
# 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)
|