#!/bin/bash
# Orchestratore migrazione vte.ego.it — eseguire come root:
#   sudo bash /var/www/html/server-ops/ego/run-full-migration.sh [fase]
#
# Fasi: backup-deploy | ubuntu | php-fpm | ssl-cron | vte26 | all

set -euo pipefail

if [[ "${EUID:-0}" -ne 0 ]]; then
	echo "Esegui come root: sudo bash $0 [fase]" >&2
	exit 1
fi

OPS="/var/www/html/server-ops/ego"
VTE="/var/www/html/vte23083_2711"
PHASE="${1:-all}"
TS="$(date +%Y%m%d-%H%M%S)"

phase_backup_deploy() {
	mkdir -p /backup "$OPS"
	if [[ -d /home/sysadmin/server-ops-ego ]]; then
		cp -a /home/sysadmin/server-ops-ego/. "$OPS/"
		chmod +x "$OPS"/*.sh
	fi
	if [[ -f /home/sysadmin/backup-pre-migration/vte-ego-*-db.sql ]]; then
		cp /home/sysadmin/backup-pre-migration/vte-ego-*-db.sql /backup/ 2>/dev/null || true
	fi
	echo "[OK] backup-deploy"
}

phase_ubuntu() {
	bash "$OPS/ubuntu-upgrade-to-24.sh"
	. /etc/os-release
	if [[ "${VERSION_ID}" == "20.04" ]]; then
		echo "[INFO] Riavviare e rieseguire: sudo bash $0 ubuntu"
		exit 0
	fi
	if [[ "${VERSION_ID}" == "22.04" ]]; then
		bash "$OPS/ubuntu-upgrade-to-24.sh"
		echo "[INFO] Riavviare e rieseguire: sudo bash $0 php-fpm"
		exit 0
	fi
	echo "[OK] ubuntu"
}

phase_php_fpm() {
	bash "$OPS/install-dual-php-fpm-apache.sh"
	php7.4 -m | sort > /tmp/php74-modules.txt
	php8.3 -m | sort > /tmp/php83-modules.txt
	diff /tmp/php74-modules.txt /tmp/php83-modules.txt > /backup/php74-vs-83-modules.diff || true
	echo "[OK] php-fpm — diff moduli in /backup/php74-vs-83-modules.diff"
}

phase_ssl_cron() {
	if [[ ! -f /etc/letsencrypt/live/vte.ego.it/fullchain.pem ]]; then
		apt-get install -y certbot python3-certbot-apache 2>/dev/null || true
		certbot --apache -d vte.ego.it -d www.vte.ego.it --non-interactive --agree-tos -m vte@ego.it || \
			echo "[WARN] certbot fallito — configurare SSL manualmente"
	fi
	apache2ctl configtest
	systemctl reload apache2
	bash "$OPS/ego-install-cron-php83-and-updater-perms.sh"
	echo "[OK] ssl-cron"
}

phase_vte26() {
	cd "$VTE"
	./vteUpdater.sh --disable-vte || true
	sudo -u www-data env USE_PHP=/usr/bin/php8.3 ./vteUpdater.sh --only-envcheck
	sudo -u www-data env USE_PHP=/usr/bin/php8.3 ./vteUpdater.sh --only-backup
	sudo -u www-data env USE_PHP=/usr/bin/php8.3 ./vteUpdater.sh -b -d 3367
	./vteUpdater.sh --enable-vte || true
	if command -v composer >/dev/null 2>&1; then
		sudo -u www-data php8.3 "$(command -v composer)" install --no-dev -d "$VTE" || true
	fi
	bash "$OPS/install-sass-and-compile-next22.sh" || true
	echo "[OK] vte26"
}

case "$PHASE" in
	backup-deploy) phase_backup_deploy ;;
	ubuntu) phase_ubuntu ;;
	php-fpm) phase_php_fpm ;;
	ssl-cron) phase_ssl_cron ;;
	vte26) phase_vte26 ;;
	all)
		phase_backup_deploy
		phase_ubuntu
		phase_php_fpm
		phase_ssl_cron
		phase_vte26
		;;
	*) echo "Fase sconosciuta: $PHASE" >&2; exit 1 ;;
esac
