#!/usr/bin/env bash
#
# CRM Doces Zezinho — script de deploy/atualização para Rapidcloud cPanel
#
# Uso (no servidor, via SSH, dentro de ~/crm.z4.digital):
#   bash deploy.sh
#
# Pré-requisitos:
#   - PHP 8.2+ disponível como `php` ou `/usr/bin/ea-php83`
#   - Banco MySQL "zdigital_crmzezinho" criado e usuário "zdigital_crmzezinhoprod" com permissão total
#   - Arquivo .env presente (copie de .env.production e preencha DB_PASSWORD)
#
set -euo pipefail

cd "$(dirname "$0")"

# Tenta detectar binário do PHP
PHP="${PHP:-php}"
if ! command -v "$PHP" >/dev/null 2>&1; then
    if command -v ea-php83 >/dev/null 2>&1; then
        PHP=ea-php83
    elif command -v php83 >/dev/null 2>&1; then
        PHP=php83
    fi
fi
echo "PHP detectado: $($PHP -v | head -1)"

# 1. Validar .env
if [ ! -f .env ]; then
    echo "ERRO: .env não encontrado. Copie de .env.production e preencha DB_PASSWORD." >&2
    exit 1
fi
if ! grep -qE "^DB_PASSWORD=." .env; then
    echo "ERRO: DB_PASSWORD vazio em .env. Preencha antes de prosseguir." >&2
    exit 1
fi

# 2. APP_KEY (gera só se ainda não existir)
if ! grep -qE "^APP_KEY=base64:" .env; then
    echo "Gerando APP_KEY..."
    "$PHP" artisan key:generate --force
fi

# 3. Permissões obrigatórias
chmod -R 775 storage bootstrap/cache 2>/dev/null || true

# 4. Limpa caches antigos (em caso de re-deploy)
"$PHP" artisan optimize:clear

# 5. Migrations
echo "Rodando migrations..."
"$PHP" artisan migrate --force

# 6. Seeders idempotentes (admin + stages + assignment + funnel mappings)
echo "Rodando seeders básicos..."
"$PHP" artisan db:seed --class='Database\Seeders\UserSeeder' --force
"$PHP" artisan db:seed --class='Database\Seeders\StageSeeder' --force
"$PHP" artisan db:seed --class='Database\Seeders\AssignmentStateSeeder' --force
"$PHP" artisan db:seed --class='Database\Seeders\FunnelMappingSeeder' --force

# 7. Symlink storage
"$PHP" artisan storage:link 2>/dev/null || true

# 8. Caches de produção
echo "Cacheando config/rotas/views/eventos..."
"$PHP" artisan optimize
"$PHP" artisan filament:cache-components

echo
echo "=========================================="
echo "Deploy concluído com sucesso."
echo "Acesse: https://crm.z4.digital/admin"
echo "Login admin: admin@doceszezinho.com.br / senha123"
echo "=========================================="
echo
echo "Próximos passos manuais (uma vez só):"
echo "  - Apontar o document root do subdomínio para .../crm.z4.digital/public"
echo "  - Configurar cron a cada 1 minuto: \"$PHP artisan schedule:run >> /dev/null 2>&1\""
echo "  - Trocar senha do admin no painel"
