""" Router endpoints for the admin module Endpoints: - List: Description - Endpoints: Description """ from fastapi import APIRouter, HTTPException from fastapi.params import Path from sqlalchemy.sql import exists from src.organisation.constants import ContactType from src.organisation.schemas import OrgContactGetResponse from src.organisation.models import Organisation as Org from src.contact.models import Contact from src.user.models import User from src.user.schemas import UserResponse, OIDCUser, OrgResponse from src.organisation.models import OrgUsers, Organisation from src.auth.service import claims_dependency, org_user_dependency, org_admin_dependency from src.database import db_dependency router = APIRouter( tags=["admin"], prefix="/admin", ) @router.get("/{org_id}/contact/{contact_type}", response_model=OrgContactGetResponse) async def get_contact(db: db_dependency, user: claims_dependency, is_org_admin: org_user_dependency, contact_type: ContactType, org_id: int = Path(gt=0)): org_model = db.query(Org).filter(Org.id == org_id).first() if org_model is None: raise HTTPException(status_code=404, detail="Organisation not found") match contact_type: case "billing": contact_id = org_model.billing_contact_id case "security": contact_id = org_model.security_contact_id case "owner": contact_id = org_model.owner_contact_id case _: raise HTTPException(status_code=422, detail="Invalid contact type") contact_model = (db.query(Contact).filter(Contact.id == contact_id).first()) if contact_model is None: raise HTTPException(status_code=404, detail="Contact not found") return contact_model