64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
from pathlib import Path
|
|
|
|
from fastapi import APIRouter, Query, Request
|
|
from fastapi.responses import HTMLResponse, RedirectResponse
|
|
from fastapi.templating import Jinja2Templates
|
|
|
|
from app.service.recon_service import list_transactions
|
|
|
|
router = APIRouter()
|
|
|
|
project_root = Path(__file__).resolve().parents[2]
|
|
templates = Jinja2Templates(directory=str(project_root / "data" / "templates"))
|
|
|
|
|
|
@router.get("/", response_model=None, include_in_schema=False)
|
|
async def dashboard(
|
|
request: Request,
|
|
recon_job_name: str | None = Query(default=None),
|
|
as_at_date: str | None = Query(default=None),
|
|
) -> HTMLResponse | RedirectResponse:
|
|
user = request.session.get("user")
|
|
# if not user:
|
|
# return RedirectResponse(url="/login", status_code=302)
|
|
|
|
transactions = list_transactions()
|
|
|
|
if as_at_date:
|
|
transactions = [
|
|
item for item in transactions if item.date.isoformat() == as_at_date
|
|
]
|
|
|
|
results = [
|
|
{
|
|
"Txn ID": item.transaction_id,
|
|
"Date": item.date.isoformat(),
|
|
"Ref ID": item.reference_id,
|
|
"Account": item.account,
|
|
"Counterparty": item.counterparty,
|
|
"Amount": f"{item.amount:,.2f}",
|
|
"CCY": item.currency,
|
|
"Booking": item.booking_date.isoformat(),
|
|
"Settlement": item.settlement_date.isoformat(),
|
|
"Description": item.description,
|
|
"Status": item.status,
|
|
"Flag": item.flag,
|
|
}
|
|
for item in transactions
|
|
]
|
|
|
|
return templates.TemplateResponse(
|
|
request=request,
|
|
name="dashboard.html",
|
|
context={
|
|
"request": request,
|
|
"title": "Recon Ranger Dashboard",
|
|
"results": results,
|
|
"user": user,
|
|
"recon_job_name": recon_job_name,
|
|
"as_at_date": as_at_date,
|
|
"prev_cursor": None,
|
|
"next_cursor": None,
|
|
},
|
|
)
|