from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session

from custos_precificacao import prontidao
from custos_precificacao.api.deps import get_session
from custos_precificacao.api.schemas import EtapaProntidaoOut, ProntidaoOut

router = APIRouter(tags=["prontidao"])


@router.get("/planejamentos/{codigo}/prontidao", response_model=ProntidaoOut)
def obter_prontidao(codigo: str, session: Session = Depends(get_session)) -> ProntidaoOut:
    """O que já está pronto e o que falta no Planejamento, etapa por etapa (na ordem de uso do sistema)."""
    try:
        resultado = prontidao.verificar(session, codigo)
    except ValueError as exc:
        raise HTTPException(status_code=404, detail=str(exc)) from exc
    return ProntidaoOut(
        planejamento_codigo=resultado.planejamento_codigo,
        prontas=resultado.prontas,
        total=resultado.total,
        etapas=[EtapaProntidaoOut(**vars(e)) for e in resultado.etapas],
    )
