from fastapi import FastAPI, File, UploadFile, BackgroundTasks
from fastapi.responses import FileResponse, JSONResponse
from fastapi.middleware.cors import CORSMiddleware
import os
import uuid
from convert_pdf_to_csv import process_pdf

app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=[
        "http://localhost:3000",
        "http://127.0.0.1:3000",
        "https://linksun.inf.br",
        "https://api.customax.inf.br",
        "https://homologacao-linksun.com.br",
        "https://sistemalinksun.com.br"


    ],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

UPLOAD_DIR = os.path.join(os.path.dirname(__file__), "uploads")
os.makedirs(UPLOAD_DIR, exist_ok=True)

def cleanup_files(*paths):
    for path in paths:
        try:
            if os.path.exists(path):
                os.remove(path)
        except Exception as e:
            print(f"⚠️ Erro ao apagar {path}: {e}")

@app.post("/processar-pdf")
async def processar_pdf(background_tasks: BackgroundTasks, file: UploadFile = File(...)):
    try:
        unique_name = f"{uuid.uuid4()}.pdf"
        temp_pdf_path = os.path.join(UPLOAD_DIR, unique_name)
        output_csv = os.path.join(UPLOAD_DIR, f"{uuid.uuid4()}.csv")

        with open(temp_pdf_path, "wb") as f:
            f.write(await file.read())

        process_pdf(temp_pdf_path, output_csv)
        background_tasks.add_task(cleanup_files, temp_pdf_path, output_csv)

        return FileResponse(
            output_csv,
            media_type="text/csv",
            filename="resultado.csv",
            background=background_tasks,
        )
    except Exception as e:
        return JSONResponse(status_code=500, content={"error": str(e)})
