#!/usr/bin/env bash
set -euo pipefail
APP_DIR="/home/driveainab/public_html"
PACKAGE_NAME="German_Driving_Learning_App-v1"
BACKUP_DIR="$APP_DIR/_backup_${PACKAGE_NAME}_$(date +%Y%m%d_%H%M%S)"

print_menu(){
  echo ""
  echo "============================================"
  echo "  German Driving Learning App v1 Installer"
  echo "============================================"
  echo "1) Install App"
  echo "2) Uninstall App"
  echo "3) Repair App"
  echo "4) Clear Cache"
  echo "5) Run Database Migration + Seeder"
  echo "6) Emergency Cleanup"
  echo "0) Exit"
  echo ""
}

cd_app(){ cd "$APP_DIR" || { echo "[FAIL] Cannot cd to $APP_DIR"; exit 1; }; }
require_php_composer(){
  command -v php >/dev/null || { echo "[FAIL] php not found"; exit 1; }
  [ -f composer.phar ] || { echo "[FAIL] composer.phar not found in $APP_DIR. Upload composer.phar first."; exit 1; }
}
clear_cache(){ cd_app; php artisan config:clear || true; php artisan cache:clear || true; php artisan route:clear || true; php artisan view:clear || true; }
install_app(){
  cd_app; require_php_composer
  mkdir -p "$BACKUP_DIR"
  [ -f .env ] && cp .env "$BACKUP_DIR/.env.backup"
  echo "[INFO] Copy backend files into $APP_DIR before running install, or run this script from extracted package folder."
  php composer.phar install --no-dev --optimize-autoloader
  [ -f .env ] || cp .env.example .env
  php artisan key:generate --force
  php artisan migrate --force
  php artisan db:seed --force
  php artisan storage:link || true
  clear_cache
  php artisan config:cache || true
  php artisan route:cache || true
  echo "[OK] Installed. Admin demo: admin@example.com / Admin@12345"
}
uninstall_app(){ cd_app; echo "[WARN] This will not delete database automatically. Remove files manually after backup if needed."; clear_cache; echo "[OK] Uninstall helper completed."; }
repair_app(){ cd_app; require_php_composer; php composer.phar dump-autoload -o; php artisan migrate --force; clear_cache; echo "[OK] Repair completed."; }
run_migrate(){ cd_app; php artisan migrate --force; php artisan db:seed --force; echo "[OK] Database migrated and seeded."; }
emergency_cleanup(){ cd_app; rm -rf bootstrap/cache/*.php storage/framework/cache/data/* storage/framework/views/* storage/framework/sessions/* 2>/dev/null || true; clear_cache; echo "[OK] Emergency cleanup completed."; }

while true; do
  print_menu
  read -rp "Choose option: " opt
  case "$opt" in
    1) install_app ;;
    2) uninstall_app ;;
    3) repair_app ;;
    4) clear_cache ;;
    5) run_migrate ;;
    6) emergency_cleanup ;;
    0) exit 0 ;;
    *) echo "Invalid option" ;;
  esac
done
