import os

from pdf_processor import pdf_to_docx
from docx_processor import translate_docx
from export_pdf import convert_docx_to_pdf
from config import INPUT_DIR, OUTPUT_DIR, TEMP_DIR
from core.logger import log


# ---------------- PROCESAR UN PDF ----------------
def process_pdf(pdf_file):

    filename = os.path.splitext(os.path.basename(pdf_file))[0]

    temp_docx = os.path.join(TEMP_DIR, filename + ".docx")
    translated_docx = os.path.join(OUTPUT_DIR, filename + "_traducido.docx")

    log(f"📄 Procesando: {filename}")

    # ---------------- PDF → DOCX ----------------
    log("📥 PDF → DOCX")

    pdf_to_docx(
        pdf_file,
        temp_docx,
        progress_callback=lambda p, msg: log(f"[{p}%] {msg}")
    )

    # ---------------- TRADUCCIÓN ----------------
    log("🌍 Traduciendo DOCX")

    translate_docx(temp_docx, translated_docx)

    # ---------------- EXPORTAR PDF ----------------
    log("📦 DOCX → PDF")

    convert_docx_to_pdf(translated_docx, OUTPUT_DIR)

    log("✔ COMPLETADO")


# ---------------- PROCESAR CARPETA ----------------
def process_all(pdf_path=None):

    os.makedirs(OUTPUT_DIR, exist_ok=True)
    os.makedirs(TEMP_DIR, exist_ok=True)

    # ---------------- MODO GUI (UN PDF) ----------------
    if pdf_path:
        process_pdf(pdf_path)
        return

    # ---------------- MODO CARPETA ----------------
    pdfs = [f for f in os.listdir(INPUT_DIR) if f.lower().endswith(".pdf")]

    if not pdfs:
        log("⚠ No hay PDFs en la carpeta de entrada")
        return

    for pdf in pdfs:
        process_pdf(os.path.join(INPUT_DIR, pdf))


# ---------------- EJECUCIÓN DIRECTA ----------------
if __name__ == "__main__":
    process_all()