#!/bin/bash

# ============================================================
# SIGED MILITAR - Script de Instalação para cPanel
# ============================================================
# Este script automatiza a instalação em hospedagem compartilhada
# INSTRUÇÕES:
# 1. Fazer upload deste arquivo para public_html
# 2. Via SSH, executar: bash instalar_cpanel.sh
# ============================================================

clear

echo ""
echo "╔════════════════════════════════════════════════════════╗"
echo "║   SIGED MILITAR - Instalação em cPanel                ║"
echo "║   Laravel 11 + Multi-Tenancy                          ║"
echo "╚════════════════════════════════════════════════════════╝"
echo ""

# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Função para imprimir mensagens
print_status() {
    echo -e "${GREEN}✓${NC} $1"
}

print_error() {
    echo -e "${RED}✗${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}⚠${NC} $1"
}

# ============================================================
# PASSO 1: Verificar dependências
# ============================================================

echo "[1/10] Verificando dependências..."
echo ""

# Verificar PHP
if command -v php &> /dev/null; then
    PHP_VERSION=$(php --version | head -n 1)
    print_status "PHP encontrado: $PHP_VERSION"
else
    print_error "PHP não encontrado"
    exit 1
fi

# Verificar Composer
if command -v composer &> /dev/null; then
    print_status "Composer encontrado"
else
    print_warning "Composer não encontrado, tentando instalar..."
    curl -sS https://getcomposer.org/installer | php
    mv composer.phar /usr/local/bin/composer
    chmod +x /usr/local/bin/composer
    print_status "Composer instalado"
fi

# Verificar MySQL
if command -v mysql &> /dev/null; then
    print_status "MySQL encontrado"
else
    print_warning "MySQL CLI não encontrado (pode ser acessível via PDO)"
fi

echo ""

# ============================================================
# PASSO 2: Limpar caches anteriores
# ============================================================

echo "[2/10] Limpando caches anteriores..."

if [ -d "vendor" ]; then
    print_status "Removendo vendor/ anterior..."
    rm -rf vendor
fi

if [ -d "node_modules" ]; then
    print_status "Removendo node_modules/ anterior..."
    rm -rf node_modules
fi

# Limpar caches do Laravel
if [ -f "bootstrap/cache/config.php" ]; then
    rm -f bootstrap/cache/config.php
fi
if [ -f "bootstrap/cache/routes.php" ]; then
    rm -f bootstrap/cache/routes.php
fi

print_status "Caches limpos"
echo ""

# ============================================================
# PASSO 3: Instalar dependências Composer
# ============================================================

echo "[3/10] Instalando dependências do Composer..."
echo "Isso pode levar alguns minutos..."
echo ""

composer install --no-dev --optimize-autoloader

if [ $? -eq 0 ]; then
    print_status "Dependências Composer instaladas"
else
    print_error "Erro ao instalar Composer"
    exit 1
fi

echo ""

# ============================================================
# PASSO 4: Criar arquivo .env
# ============================================================

echo "[4/10] Configurando arquivo .env..."

if [ -f ".env" ]; then
    print_warning ".env já existe, pulando..."
else
    cp .env.example .env
    print_status "Arquivo .env criado"
    
    echo ""
    echo "⚠ IMPORTANTE: Edite o arquivo .env com suas credenciais!"
    echo "  nano .env"
    echo ""
    echo "Configure estas variáveis:"
    echo "  DB_HOST=localhost"
    echo "  DB_DATABASE=siged_local"
    echo "  DB_USERNAME=seu_usuario"
    echo "  DB_PASSWORD=sua_senha"
    echo ""
fi

echo ""

# ============================================================
# PASSO 5: Gerar chave APP_KEY
# ============================================================

echo "[5/10] Gerando chave da aplicação..."

php artisan key:generate

if [ $? -eq 0 ]; then
    print_status "Chave APP_KEY gerada"
else
    print_error "Erro ao gerar chave"
    exit 1
fi

echo ""

# ============================================================
# PASSO 6: Ajustar permissões
# ============================================================

echo "[6/10] Ajustando permissões de pastas..."

chmod -R 755 storage
chmod -R 755 bootstrap/cache
chmod -R 755 public

print_status "Permissões ajustadas"
echo ""

# ============================================================
# PASSO 7: Executar migrations
# ============================================================

echo "[7/10] Executando migrations do banco de dados..."
echo ""

php artisan migrate --force

if [ $? -eq 0 ]; then
    print_status "Migrations executadas com sucesso"
else
    print_error "Erro ao executar migrations"
    print_warning "Certifique-se de que:"
    print_warning "1. O banco de dados foi criado"
    print_warning "2. As credenciais no .env estão corretas"
    print_warning "3. O usuário tem permissão no banco"
    echo ""
    exit 1
fi

echo ""

# ============================================================
# PASSO 8: Popular banco com dados iniciais
# ============================================================

echo "[8/10] Populando banco com dados iniciais..."

php artisan db:seed --class=PapelPermissaoSeeder

if [ $? -eq 0 ]; then
    print_status "Banco populado com sucesso"
else
    print_error "Erro ao popular banco"
    print_warning "Tente novamente: php artisan db:seed --class=PapelPermissaoSeeder"
fi

echo ""

# ============================================================
# PASSO 9: Otimizar aplicação
# ============================================================

echo "[9/10] Otimizando aplicação para produção..."

php artisan config:cache
php artisan route:cache
composer dump-autoload -o

print_status "Aplicação otimizada"
echo ""

# ============================================================
# PASSO 10: Verificação final
# ============================================================

echo "[10/10] Verificação final..."
echo ""

# Verificar arquivos importantes
if [ -f "artisan" ]; then
    print_status "Arquivo artisan encontrado"
else
    print_error "Arquivo artisan não encontrado"
fi

if [ -d "vendor" ]; then
    print_status "Pasta vendor criada"
else
    print_error "Pasta vendor não criada"
fi

if [ -f ".env" ]; then
    print_status "Arquivo .env existe"
else
    print_warning "Arquivo .env não encontrado (pode ter sido deletado)"
fi

if [ -f "public/index.php" ]; then
    print_status "Arquivo public/index.php encontrado"
else
    print_error "Arquivo public/index.php não encontrado"
fi

echo ""

# ============================================================
# SUCESSO!
# ============================================================

echo "╔════════════════════════════════════════════════════════╗"
echo "║              INSTALAÇÃO CONCLUÍDA!                    ║"
echo "╚════════════════════════════════════════════════════════╝"
echo ""

echo "Resumo do que foi feito:"
echo "✓ Dependências Composer instaladas (vendor/)"
echo "✓ Arquivo .env criado"
echo "✓ APP_KEY gerada"
echo "✓ Migrations executadas"
echo "✓ Banco de dados populado"
echo "✓ Aplicação otimizada"
echo ""

echo "════════════════════════════════════════════════════════"
echo "Próximos passos:"
echo "════════════════════════════════════════════════════════"
echo ""

echo "1. EDITAR arquivo .env com suas credenciais reais:"
echo "   nano .env"
echo ""
echo "   Configure:"
echo "   - DB_DATABASE=nome_seu_banco"
echo "   - DB_USERNAME=seu_usuario_mysql"
echo "   - DB_PASSWORD=sua_senha_mysql"
echo ""

echo "2. RODAR migrations novamente (após editar .env):"
echo "   php artisan migrate --force"
echo ""

echo "3. POPULAR banco:"
echo "   php artisan db:seed --class=PapelPermissaoSeeder"
echo ""

echo "4. ACESSAR aplicação:"
echo "   Abra: https://seu-dominio.com.br"
echo ""

echo "5. LOGIN:"
echo "   Email: admin@siged.local"
echo "   Senha: password123"
echo ""

echo "════════════════════════════════════════════════════════"
echo "Comandos úteis:"
echo "════════════════════════════════════════════════════════"
echo ""
echo "Ver logs:"
echo "  tail -f storage/logs/laravel.log"
echo ""
echo "Limpar caches:"
echo "  php artisan cache:clear"
echo "  php artisan config:clear"
echo ""
echo "Rodar testes:"
echo "  php artisan test"
echo ""
echo "Documentação: README_MASTER.md"
echo ""
echo "════════════════════════════════════════════════════════"
echo ""

