#!/usr/bin/env bash
# ===========================================================
#   build-legal-pdfs.sh - Genere les PDFs des pages legales
#   via Gotenberg (deja deploye sur le VPS pour missioflow-app).
#
#   Usage :
#     # Sur le VPS (Gotenberg accessible via reseau Docker)
#     ./build-legal-pdfs.sh [--local]
#
#   Mode :
#     default : genere les PDFs depuis https://missioflow.fr/<page>
#               (Gotenberg appelle les URLs publiques)
#     --local : genere depuis http://localhost:4321/<page>
#               (pnpm dev doit tourner)
#
#   Output :
#     public/legal/dpa-missioflow-v1.pdf
#     public/legal/cgv-missioflow.pdf
#     public/legal/mentions-legales-missioflow.pdf
#     public/legal/confidentialite-missioflow.pdf
#     public/legal/sous-traitants-missioflow.pdf
#
#   Pre-requis :
#     - Gotenberg accessible (par defaut http://localhost:3000)
#       Sur le VPS : exec dans le container missioflow-prod_app
#       ou expose gotenberg via un bind sur l'host.
#     - curl installe.
#
#   Variables d'env :
#     GOTENBERG_URL (default: http://localhost:3000)
#     SITE_BASE_URL (default: https://missioflow.fr)
# ===========================================================

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
OUTPUT_DIR="${ROOT_DIR}/public/legal"
mkdir -p "$OUTPUT_DIR"

GOTENBERG_URL="${GOTENBERG_URL:-http://localhost:3000}"
SITE_BASE_URL="${SITE_BASE_URL:-https://missioflow.fr}"

if [[ "${1:-}" == "--local" ]]; then
    SITE_BASE_URL="http://localhost:4321"
    echo "Mode local : $SITE_BASE_URL"
fi

# Mapping page → nom de fichier PDF
declare -A PAGES=(
    ["dpa"]="dpa-missioflow-v1.pdf"
    ["cgv"]="cgv-missioflow.pdf"
    ["mentions-legales"]="mentions-legales-missioflow.pdf"
    ["confidentialite"]="confidentialite-missioflow.pdf"
    ["sous-traitants"]="sous-traitants-missioflow.pdf"
)

generate_pdf() {
    local page="$1"
    local output="$2"
    local url="${SITE_BASE_URL}/${page}"

    echo "→ Generation ${output} depuis ${url}..."

    # Gotenberg API : /forms/chromium/convert/url
    # Options : A4, marges 20mm, print CSS, wait for network idle
    if curl -fsS \
        --request POST \
        --url "${GOTENBERG_URL}/forms/chromium/convert/url" \
        --form "url=${url}" \
        --form "paperWidth=8.27" \
        --form "paperHeight=11.69" \
        --form "marginTop=0.78" \
        --form "marginBottom=0.78" \
        --form "marginLeft=0.78" \
        --form "marginRight=0.78" \
        --form "preferCssPageSize=true" \
        --form "printBackground=true" \
        --form "waitDelay=1s" \
        --output "${OUTPUT_DIR}/${output}"; then
        echo "  ✓ ${output} ($(du -h "${OUTPUT_DIR}/${output}" | cut -f1))"
    else
        echo "  ✗ ECHEC ${output}" >&2
        return 1
    fi
}

echo "Generation des PDFs legaux via Gotenberg"
echo "Gotenberg : ${GOTENBERG_URL}"
echo "Source    : ${SITE_BASE_URL}"
echo "Output    : ${OUTPUT_DIR}"
echo ""

for page in "${!PAGES[@]}"; do
    generate_pdf "${page}" "${PAGES[$page]}"
done

echo ""
echo "Termine. PDFs dans ${OUTPUT_DIR} :"
ls -lh "${OUTPUT_DIR}/"*.pdf
