51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
from fastapi import APIRouter, Depends
|
|
from prisma import Prisma
|
|
from typing import List, Dict
|
|
from datetime import datetime, timedelta
|
|
from app.api.dependencies import get_prisma
|
|
|
|
router = APIRouter(prefix="/alertas", tags=["alertas"])
|
|
|
|
|
|
@router.get("/")
|
|
async def obtener_alertas(
|
|
db: Prisma = Depends(get_prisma)
|
|
) -> List[Dict]:
|
|
"""Obtener alertas de pedidos urgentes (menos de 12 horas)"""
|
|
ahora = datetime.now()
|
|
limite = ahora + timedelta(hours=12)
|
|
|
|
pedidos_urgentes = await db.pedidocliente.find_many(
|
|
where={
|
|
"fechaCita": {
|
|
"gte": ahora,
|
|
"lte": limite
|
|
},
|
|
"estado": {
|
|
"in": ["pendiente_revision", "en_revision", "pendiente_materiales"]
|
|
}
|
|
},
|
|
include={
|
|
"cliente": True,
|
|
"referencias": True
|
|
}
|
|
)
|
|
|
|
alertas = []
|
|
for pedido in pedidos_urgentes:
|
|
referencias_faltantes = [
|
|
ref.dict() for ref in pedido.referencias
|
|
if ref.unidadesPendientes > 0
|
|
]
|
|
|
|
if referencias_faltantes:
|
|
tiempo_restante = (pedido.fechaCita - ahora).total_seconds() / 3600
|
|
alertas.append({
|
|
"pedido": pedido.dict(),
|
|
"referencias_faltantes": referencias_faltantes,
|
|
"horas_restantes": tiempo_restante
|
|
})
|
|
|
|
return alertas
|
|
|