"""pdf_add_header_footer — configura header/footer recurrente con numeracion de pagina."""

import sys
import os

_types_dir = os.path.join(os.path.dirname(__file__), "..", "..", "..", "python", "types", "infra")
sys.path.insert(0, _types_dir)
from pdf_doc import PDFDoc


def pdf_add_header_footer(
    doc: PDFDoc,
    header_text: str = "",
    footer_text: str = "",
    page_numbers: bool = True,
) -> PDFDoc:
    """Configura header y/o footer recurrente para todas las paginas del documento.

    El header/footer se aplicara automaticamente en cada pagina nueva.
    Debe llamarse ANTES de añadir paginas con pdf_add_page para que surta efecto.
    El footer acepta {n} (numero de pagina actual) y {total} (total de paginas).

    Args:
        doc: PDFDoc inicializado con pdf_create.
        header_text: texto a mostrar en el header de cada pagina. Vacio = sin header.
        footer_text: texto del footer. Acepta {n} y {total} como placeholders.
                     Si page_numbers=True y footer_text esta vacio, usa 'Pagina {n} de {total}'.
        page_numbers: si True incluye numeracion automatica en el footer.

    Returns:
        PDFDoc con la configuracion de header/footer establecida.
    """
    doc.header_text = header_text
    doc.footer_text = footer_text
    doc.page_numbers = page_numbers

    # Activar alias de paginas totales en fpdf2 para {nb}
    if page_numbers:
        doc.fpdf.alias_nb_pages("{nb}")

    return doc
