#!/bin/bash

# ============================================================
# SIGED MILITAR - Script de Instalação Automática (Linux/Mac)
# ============================================================

clear

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

# Define o diretório do projeto
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$PROJECT_DIR"

echo "[1/10] Verificando se estamos no diretório correto..."
if [ -f "composer.json" ]; then
    echo "✓ composer.json encontrado"
else
    echo "✗ Erro: composer.json não encontrado"
    exit 1
fi

echo ""
echo "[2/10] Limpando arquivos de cache anteriores..."
if [ -d "vendor" ]; then
    echo "Removendo vendor/ anterior..."
    rm -rf vendor
fi
if [ -d "node_modules" ]; then
    echo "Removendo node_modules/ anterior..."
    rm -rf node_modules
fi

echo ""
echo "[3/10] Instalando dependências do Composer (PHP)..."
echo "Isso pode levar alguns minutos..."
composer install --no-interaction --prefer-dist
if [ $? -ne 0 ]; then
    echo "✗ Erro ao instalar dependências do Composer"
    exit 1
fi
echo "✓ Dependências do Composer instaladas"

echo ""
echo "[4/10] Instalando dependências do NPM (JavaScript/Frontend)..."
npm install
if [ $? -ne 0 ]; then
    echo "✗ Erro ao instalar dependências do NPM"
    exit 1
fi
echo "✓ Dependências do NPM instaladas"

echo ""
echo "[5/10] Criando arquivo .env..."
if [ -f ".env" ]; then
    echo ".env já existe, pulando..."
else
    cp .env.example .env
    echo "✓ Arquivo .env criado"
fi

echo ""
echo "[6/10] Gerando chave da aplicação (APP_KEY)..."
php artisan key:generate
echo "✓ Chave da aplicação gerada"

echo ""
echo "[7/10] Limpando caches anteriores..."
php artisan cache:clear 2>/dev/null
php artisan config:clear 2>/dev/null
php artisan view:clear 2>/dev/null
echo "✓ Caches limpos"

echo ""
echo "[8/10] Verificando status das migrations..."
php artisan migrate:status
echo ""

echo "[9/10] Rodando migrations do banco de dados..."
php artisan migrate --force
if [ $? -ne 0 ]; then
    echo "⚠ Aviso: Erro ao rodar migrations (banco pode não estar criado)"
    echo "Certifique-se de criar o banco de dados manualmente:"
    echo "  mysql -u root -p"
    echo "  CREATE DATABASE siged_local;"
    echo "  exit"
    echo ""
    echo "Depois execute novamente:"
    echo "  php artisan migrate"
else
    echo "✓ Migrations executadas com sucesso"
fi

echo ""
echo "[10/10] Populando banco com dados iniciais..."
php artisan db:seed --class=PapelPermissaoSeeder 2>/dev/null
if [ $? -ne 0 ]; then
    echo "⚠ Aviso: Erro ao popular banco (banco pode não estar acessível)"
else
    echo "✓ Banco populado com dados iniciais"
fi

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

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

echo "Próximos passos:"
echo ""
echo "1. DESENVOLVIMENTO LOCAL (Recomendado com Docker):"
echo "   docker-compose up -d"
echo "   docker-compose exec app npm run build"
echo "   docker-compose exec app php artisan serve"
echo "   Acesse: http://localhost:8000"
echo ""

echo "2. OU SEM DOCKER:"
echo "   npm run build"
echo "   php artisan serve"
echo "   Acesse: http://localhost:8000"
echo ""

echo "3. Credenciais padrão:"
echo "   Email: admin@siged.local"
echo "   Senha: password123"
echo ""

echo "════════════════════════════════════════════════════════"
echo "Documentação: Leia o arquivo README_MASTER.md"
echo "════════════════════════════════════════════════════════"
echo ""
