#!/usr/bin/env bash
set -euo pipefail

echo "=== Sistema Supermercado V23 · MaxDominios ==="

if ! command -v php >/dev/null 2>&1; then
    echo "ERROR: PHP no está disponible en la Terminal."
    exit 1
fi

if ! php -r 'exit(version_compare(PHP_VERSION, "8.3.0", ">=") ? 0 : 1);'; then
    echo "ERROR: Laravel 13 requiere PHP 8.3 o superior."
    php -v
    exit 1
fi

if ! command -v composer >/dev/null 2>&1; then
    echo "ERROR: Composer no está disponible. Solicite su activación a MaxDominios."
    exit 1
fi

if [[ ! -f .env ]]; then
    echo "ERROR: Falta .env."
    echo "Ejecute: cp .env.maxdominios.example .env"
    echo "Después complete dominio, APP_KEY y datos MySQL antes de continuar."
    exit 1
fi

if grep -Eq '^APP_DEBUG=(true|1)$' .env; then
    echo "ERROR: APP_DEBUG debe ser false en producción."
    exit 1
fi

GENERATE_APP_KEY=false
if grep -Eq '^APP_KEY=GENERAR_NUEVA$' .env; then
    GENERATE_APP_KEY=true
elif grep -Eq '^APP_KEY=(|PEGAR_AQUI.*)$' .env; then
    echo "ERROR: Configure APP_KEY antes de instalar."
    echo "Use la clave local si importará la base actual."
    echo "Para una instalación nueva puede ejecutar: php artisan key:generate"
    exit 1
fi

if grep -Eq 'TU_DOMINIO|NOMBRE_COMPLETO_|CONTRASENA_PRIVADA' .env; then
    echo "ERROR: Todavía existen valores de ejemplo dentro de .env."
    exit 1
fi

mkdir -p \
    storage/app/public \
    storage/framework/cache/data \
    storage/framework/sessions \
    storage/framework/testing \
    storage/framework/views \
    storage/logs \
    bootstrap/cache

chmod -R 775 storage bootstrap/cache

echo "Instalando dependencias PHP de producción..."
composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction

if [[ "$GENERATE_APP_KEY" == true ]]; then
    echo "Generando APP_KEY para la instalación nueva..."
    php artisan key:generate --force
fi

echo "Limpiando configuración previa..."
php artisan config:clear
php artisan route:clear
php artisan view:clear

echo "Ejecutando migraciones..."
php artisan migrate --force

echo "Creando enlace de archivos públicos..."
php artisan storage:link || true

echo "Optimizando Laravel..."
php artisan optimize

echo
echo "Instalación terminada."
APP_URL_VALUE="$(grep -m1 '^APP_URL=' .env | cut -d= -f2- | tr -d '\"')"
echo "Compruebe: ${APP_URL_VALUE}/up"
