#!/bin/bash

# ==============================================================================
# Script de Despliegue Automatizado para Backend (Laravel 11 arSistema ERP)
# ==============================================================================

set -e

echo "🚀 Iniciando despliegue de Producción para arSistema ERP Backend..."

# 1. Obtener última versión desde repositorio Git (si aplica)
if [ -d ".git" ]; then
    echo "📥 Actualizando código desde repositorio Git..."
    git pull origin master || git pull origin main
fi

# 2. Copiar archivo de entorno si no existe
if [ ! -f ".env" ]; then
    echo "⚠️ Archivo .env no encontrado. Copiando desde .env.example..."
    cp .env.example .env
    php artisan key:generate
fi

# 3. Instalación de dependencias de Composer en producción
echo "📦 Instalando dependencias de Composer para producción..."
composer install --no-dev --optimize-autoloader --no-interaction --prefer-dist

# 4. Ajustar permisos de directorios
echo "🔒 Configurando permisos de carpetas storage y bootstrap/cache..."
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache 2>/dev/null || true

# 5. Ejecución de Migraciones de Base de Datos
echo "🗄️ Ejecutando migraciones de la base de datos (con --force)..."
php artisan migrate --force

# 6. Sembrar datos iniciales si la base de datos está vacía (opcional)
if [ "$SEED_DATABASE" = "true" ]; then
    echo "🌱 Sembrando datos iniciales en la base de datos..."
    php artisan db:seed --force
fi

# 7. Limpieza y Optimización de Caché en Laravel
echo "⚡ Optimizando caché de Laravel (Configuración, Rutas, Eventos y Vistas)..."
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache

# 8. Reinicio de colas y servicios PHP-FPM
echo "🔄 Reiniciando workers de colas y caché de OPcache..."
php artisan queue:restart || true

if systemctl is-active --quiet php8.4-fpm; then
    sudo systemctl reload php8.4-fpm
    echo "✅ Servicio php8.4-fpm recargado."
fi

if systemctl is-active --quiet nginx; then
    sudo systemctl reload nginx
    echo "✅ Servicio nginx recargado."
fi

echo "=============================================================================="
echo "🎉 ¡Despliegue del Backend de arSistema ERP completado con éxito!"
echo "=============================================================================="
