Initial commit
This commit is contained in:
50
app/api/routes/alertas.py
Normal file
50
app/api/routes/alertas.py
Normal file
@@ -0,0 +1,50 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user