from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session

from app.api.deps import get_current_user, require_admin
from app.db.session import get_db
from app.schemas.phase4 import AgencyResponse, AgencyUpdate
from app.schemas.user_context import CurrentUser
from app.services.agency_service import AgencyService

router = APIRouter()


@router.get("/me", response_model=AgencyResponse)
def get_my_agency(
    current_user: CurrentUser = Depends(get_current_user),
    db: Session = Depends(get_db),
):
    return AgencyService(db).get_agency(current_user.agency_id)


@router.patch("/me", response_model=AgencyResponse)
def update_my_agency(
    payload: AgencyUpdate,
    current_user: CurrentUser = Depends(require_admin),
    db: Session = Depends(get_db),
):
    return AgencyService(db).update_agency(current_user.agency_id, payload.model_dump(exclude_unset=True))
