Files
rips_manager/app/routes/dashboard.py
T

32 lines
1.2 KiB
Python

from fastapi import APIRouter, Request, Depends
from app.database import get_connection
from app.auth import get_current_user
router = APIRouter(tags=["dashboard"])
@router.get("/dashboard")
async def dashboard(request: Request, user: dict = Depends(get_current_user)):
conn = get_connection()
try:
stats = conn.execute("""
SELECT
(SELECT COUNT(*) FROM envios WHERE status = 'success') as total_exitosos,
(SELECT COUNT(*) FROM envios WHERE status = 'error') as total_errores,
(SELECT COUNT(*) FROM envios WHERE tipo = 'terceros') as total_terceros,
(SELECT COUNT(*) FROM envios WHERE tipo = 'transaccion') as total_transacciones,
(SELECT COUNT(DISTINCT factura) FROM envios WHERE factura IS NOT NULL) as total_facturas
""").fetchone()
ultimos = conn.execute("""
SELECT e.*, u.username FROM envios e
LEFT JOIN users u ON e.user_id = u.id
ORDER BY e.created_at DESC LIMIT 10
""").fetchall()
return request.app.state.templates.TemplateResponse("dashboard.html", {
"request": request, "user": user, "stats": stats, "ultimos": ultimos
})
finally:
conn.close()