from fastapi import APIRouter, Depends, HTTPException, Path
from utils import (
    verify_api_key,
)
from controllers.customer import CustomerController
from models.customer import Request

router = APIRouter(
    prefix="/customers",
    tags=["API Customers"]
)

@router.post("", status_code=201, summary="Registra ou atualiza um cliente")
def create_or_update_company(payload: Request):
    result = CustomerController().store(payload.cookie)

    if result is None:
        raise HTTPException(status_code=404, detail="Cliente não encontrado")

    return result

@router.get("/{cnpj}", status_code=200, summary="Busca um cliente por CNPJ")
def get_session_by_cnpj_api(
    cnpj: str = Path(
        ...,
        title="CNPJ",
        description="CNPJ do cliente (somente números)",
        example="46221257000174",
        regex="^[0-9]{14}$"
    ),
    _=Depends(verify_api_key)):
    result = CustomerController().show(cnpj)

    if result is None:
        raise HTTPException(status_code=404, detail="Cliente não encontrado")

    return result

@router.delete("/{cnpj}", status_code=200, summary="Remove um cliente por CNPJ")
def delete_session_by_cnpj_api(
    cnpj: str = Path(
        ...,
        title="CNPJ",
        description="CNPJ do cliente (somente números)",
        example="46221257000174",
        regex="^[0-9]{14}$"
    ),  
    _=Depends(verify_api_key)):
    result = CustomerController().delete(cnpj)

    if result is None:
        raise HTTPException(status_code=404, detail="Cliente não encontrado")
    return result