#!/bin/bash
#
# Installa la feature "Pivot" (condivisa, vedi /opt/gts/CLAUDE.md) in una nuova
# app ("capsula") sotto /opt/gts. Crea SOLO i file che ogni app deve tenere in
# locale (stub sottili + pivot_cfg.json di partenza) - tutta la logica vera
# resta in /opt/gts/shared/pivot/, non viene copiata.
#
# Uso: /opt/gts/shared/pivot/install.sh /opt/gts/<nomeapp>

set -e

APPDIR="$1"

if [ -z "$APPDIR" ]; then
    echo "Uso: $0 /opt/gts/<nomeapp>"
    exit 1
fi

if [ ! -d "$APPDIR" ]; then
    echo "Errore: la cartella '$APPDIR' non esiste."
    exit 1
fi

crea_stub() {
    local nome="$1"
    local commento="$2"
    local target="$APPDIR/$nome"

    if [ -e "$target" ]; then
        echo "SALTATO (esiste gia'): $nome"
        return
    fi

    cat > "$target" <<EOF
<?
// $commento: implementazione condivisa in
// /opt/gts/shared/pivot/${nome%.php}_impl.php (vedi quel file per la
// spiegazione del perche' serve questo stub per app).
require_once(__DIR__ . "/../shared/pivot/${nome%.php}_impl.php");
EOF
    echo "Creato: $nome"
}

crea_stub "pivot.php" "Pagina Pivot"
crea_stub "pivot_data.php" "Estrazione dati pivot"
crea_stub "pivot_toggle_campo.php" "Aggiunge/toglie un campo dalla pivot (checkbox nella vista \"Dettaglio\")"
crea_stub "pivot_cfg_edit.php" "Pagina \"Modifica configurazione\" della Pivot"
crea_stub "pivot_cfg_edit_save.php" "Salvataggio configurazione Pivot"
crea_stub "pivot_cfg_test_select.php" "Test della query SQL di una Fonte dalla pagina \"Modifica configurazione\""

# html2xls.php ha un nome file diverso dal proprio "_impl.php" (segue la
# convenzione storica del vecchio export Excel, non "pivot_"), quindi non
# rientra nel pattern generico di crea_stub()
if [ -e "$APPDIR/html2xls.php" ]; then
    echo "SALTATO (esiste gia'): html2xls.php"
else
    cat > "$APPDIR/html2xls.php" <<'EOF'
<?
// Esportazione Excel della pivot: implementazione condivisa in
// /opt/gts/shared/pivot/html2xls_impl.php (vedi quel file per la
// spiegazione del perche' serve questo stub per app).
require_once(__DIR__ . "/../shared/pivot/html2xls_impl.php");
EOF
    echo "Creato: html2xls.php"
fi

# pivot_cfg.json e' l'unica cosa che varia davvero per app (vedi schema in
# /opt/gts/CLAUDE.md) - qui solo uno scheletro minimo valido, da completare
# dalla pagina "Modifica configurazione" (pivot_cfg_edit.php) una volta
# collegata la pagina al menu dell'app
if [ -e "$APPDIR/pivot_cfg.json" ]; then
    echo "SALTATO (esiste gia'): pivot_cfg.json"
else
    cat > "$APPDIR/pivot_cfg.json" <<'EOF'
{
    "fonti": {
        "A": {
            "label": "Fonte di esempio",
            "vista": "",
            "campoData": "",
            "select": "",
            "whereExtra": "",
            "filtriCampo": {},
            "righeDefault": [],
            "valoriDefault": []
        }
    },
    "colonneDefault": ["Anno/Mese"],
    "filtri": [],
    "campi": [],
    "valori": [],
    "campiMappa": {
        "data": { "colonna": "DATAP", "tipo": "raw" }
    }
}
EOF
    echo "Creato: pivot_cfg.json (scheletro minimo, da completare)"
fi

# pivot_cfg.json deve poter essere riscritto dal webserver (vedi
# pivot_toggle_campo_impl.php/pivot_cfg_edit_save_impl.php) - senza permesso di
# scrittura il salvataggio da UI fallisce silenziosamente
chmod a+w "$APPDIR/pivot_cfg.json" 2>/dev/null || true

cat <<'EOF'

Fatto. Passi successivi (manuali):

1. Aprire pivot_cfg.json e configurare almeno una Fonte reale: "vista" (nome
   vista SQL), "campoData" (colonna DATE per il filtro range), "select" (con
   almeno "TO_CHAR(<colonna_data>,'YYYYMMDD') AS DATAP" - obbligatorio, vedi
   /opt/gts/CLAUDE.md). Oppure lasciare lo scheletro e completarlo dalla
   pagina web "Modifica configurazione" (pivot_cfg_edit.php) una volta
   raggiungibile (punto 2).
2. Aggiungere una voce nel menu applicativo (menu.xml o main.php a seconda
   dell'app) che punti a "pivot.php" - i pulsanti "Dettaglio"/"Modifica
   configurazione" restano comunque visibili solo a ctx_uid()==1, non serve
   nascondere la voce di menu per gli altri utenti a meno che non si preferisca.
3. Verificare i permessi di scrittura su pivot_cfg.json lato server reale
   (Apache/php-fpm deve poter scrivere il file per checkbox "Dettaglio" e
   pagina "Modifica configurazione" - vedi gotcha "permessi" in
   /opt/gts/CLAUDE.md).

Documentazione completa (schema pivot_cfg.json, gotcha noti, architettura):
/opt/gts/CLAUDE.md
EOF
