from fastapi import APIRouter, HTTPException, Response
from pydantic import BaseModel
from typing import Dict, Any, List
from app.core.engine.reports import create_pdf_report

router = APIRouter(prefix="/reports", tags=["reporting"])

class ExportRequest(BaseModel):
    project_name: str
    results: Dict[str, Any]
    audit_trail: Dict[str, Any]

@router.post("/export")
async def export_report(request: ExportRequest):
    """
    Generates and returns a PDF report.
    """
    try:
        pdf_bytes = create_pdf_report(
            request.project_name, 
            request.results, 
            request.audit_trail
        )
        
        return Response(
            content=pdf_bytes,
            media_type="application/pdf",
            headers={
                "Content-Disposition": f"attachment; filename=Report_{request.project_name}.pdf"
            }
        )
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))