#!/bin/bash
# Script completo de setup do servidor para GestorStream
# Instala: PHP 8.2, extensões, Composer, Nginx
# Data: 2025-11-28

set -e

echo "🚀 =========================================="
echo "   Setup Completo do Servidor - GestorStream"
echo "=========================================="
echo ""

# Verificar se está rodando como root
if [ "$EUID" -ne 0 ]; then 
    echo "❌ Este script precisa ser executado como root (use sudo)"
    exit 1
fi

echo "📊 Sistema detectado:"
lsb_release -a 2>/dev/null || cat /etc/os-release
echo ""

# 1. ATUALIZAR SISTEMA
echo "🔄 [1/6] Atualizando sistema..."
echo "---"
apt-get update -qq
echo "✅ Sistema atualizado"
echo ""

# 2. INSTALAR PHP 8.2 E EXTENSÕES
echo "📦 [2/6] Instalando PHP 8.2 e extensões..."
echo "---"

# Verificar se PHP já está instalado
if command -v php >/dev/null 2>&1; then
    echo "⚠️ PHP já instalado:"
    php -v
    echo ""
    read -p "❓ Deseja reinstalar/atualizar? (s/n): " -n 1 -r
    echo ""
    if [[ ! $REPLY =~ ^[Ss]$ ]]; then
        echo "⏩ Pulando instalação do PHP"
    else
        INSTALL_PHP=true
    fi
else
    INSTALL_PHP=true
fi

if [ "$INSTALL_PHP" = true ]; then
    echo "⏳ Adicionando repositório do PHP..."
    apt-get install -y software-properties-common apt-transport-https ca-certificates -qq
    add-apt-repository ppa:ondrej/php -y
    apt-get update -qq
    
    echo "⏳ Instalando PHP 8.2 e extensões necessárias..."
    apt-get install -y \
        php8.2-fpm \
        php8.2-cli \
        php8.2-common \
        php8.2-mysql \
        php8.2-zip \
        php8.2-gd \
        php8.2-mbstring \
        php8.2-curl \
        php8.2-xml \
        php8.2-bcmath \
        php8.2-redis \
        php8.2-intl \
        php8.2-soap \
        php8.2-imagick \
        -qq
    
    echo "✅ PHP instalado com sucesso!"
    php -v
else
    echo "✅ PHP já instalado"
fi
echo ""

# 3. CONFIGURAR PHP-FPM
echo "⚙️ [3/6] Configurando PHP-FPM..."
echo "---"

# Ajustar configurações do php.ini
PHP_INI="/etc/php/8.2/fpm/php.ini"

if [ -f "$PHP_INI" ]; then
    echo "⏳ Ajustando configurações do PHP..."
    
    # Backup
    cp "$PHP_INI" "$PHP_INI.backup.$(date +%Y%m%d_%H%M%S)"
    
    # Ajustes
    sed -i 's/upload_max_filesize = .*/upload_max_filesize = 100M/' "$PHP_INI"
    sed -i 's/post_max_size = .*/post_max_size = 100M/' "$PHP_INI"
    sed -i 's/memory_limit = .*/memory_limit = 512M/' "$PHP_INI"
    sed -i 's/max_execution_time = .*/max_execution_time = 300/' "$PHP_INI"
    
    echo "✅ PHP configurado"
else
    echo "⚠️ php.ini não encontrado em $PHP_INI"
fi

# Iniciar PHP-FPM
systemctl enable php8.2-fpm
systemctl restart php8.2-fpm

echo "✅ PHP-FPM iniciado"
systemctl status php8.2-fpm --no-pager -l | head -n 5
echo ""

# 4. INSTALAR NGINX (se não estiver instalado)
echo "🌐 [4/6] Verificando Nginx..."
echo "---"

if command -v nginx >/dev/null 2>&1; then
    echo "✅ Nginx já instalado:"
    nginx -v
else
    echo "⏳ Instalando Nginx..."
    apt-get install -y nginx -qq
    systemctl enable nginx
    systemctl start nginx
    echo "✅ Nginx instalado e iniciado"
fi
echo ""

# 5. INSTALAR COMPOSER
echo "📥 [5/6] Instalando Composer..."
echo "---"

if command -v composer >/dev/null 2>&1; then
    echo "✅ Composer já instalado:"
    composer --version
else
    echo "⏳ Baixando Composer..."
    cd /tmp
    curl -sS https://getcomposer.org/installer -o composer-setup.php
    
    echo "⏳ Instalando Composer globalmente..."
    php composer-setup.php --install-dir=/usr/local/bin --filename=composer --quiet
    
    rm composer-setup.php
    
    echo "✅ Composer instalado com sucesso!"
    composer --version
fi
echo ""

# 6. INSTALAR DEPENDÊNCIAS ADICIONAIS
echo "📦 [6/6] Instalando dependências adicionais..."
echo "---"

apt-get install -y \
    git \
    curl \
    wget \
    unzip \
    redis-server \
    -qq

# Iniciar Redis
systemctl enable redis-server
systemctl restart redis-server

echo "✅ Dependências instaladas"
echo ""

# RESUMO FINAL
echo "🎉 =========================================="
echo "   Setup Concluído com Sucesso!"
echo "=========================================="
echo ""
echo "📊 Versões instaladas:"
echo "---"
php -v | head -n 1
composer --version
nginx -v
redis-server --version | head -n 1
echo ""

echo "✅ Serviços ativos:"
echo "---"
systemctl is-active php8.2-fpm && echo "  ✅ PHP-FPM rodando"
systemctl is-active nginx && echo "  ✅ Nginx rodando"
systemctl is-active redis-server && echo "  ✅ Redis rodando"
echo ""

echo "💡 Próximos passos:"
echo "---"
echo "  1. Execute: sudo bash fix-domain-issue.sh"
echo "  2. Isso vai instalar as dependências do Laravel (vendor)"
echo "  3. Configurar Nginx para gestor.jf.eng.br"
echo "  4. Acessar: http://gestor.jf.eng.br/setup"
echo ""
echo "✨ Servidor pronto para o GestorStream!"
