#!/bin/bash

# Galappxy - Quick Start Script
# Este script ayuda a verificar que todo esté configurado correctamente

echo "========================================="
echo "  Galappxy - Verificación de Instalación"
echo "========================================="
echo ""

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

# Función para verificar
check() {
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✓${NC} $1"
        return 0
    else
        echo -e "${RED}✗${NC} $1"
        return 1
    fi
}

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

# 1. Verificar archivos .env
echo "1. Verificando archivos .env..."
if [ -f ".env_auth" ]; then
    check "Existe .env_auth"
else
    warn "No existe .env_auth - Ejecuta: cp .env.example .env_auth"
fi

if [ -f ".env_audit" ]; then
    check "Existe .env_audit"
else
    warn "No existe .env_audit - Ejecuta: cp .env.example .env_audit"
fi

if [ -f ".env_core" ]; then
    check "Existe .env_core"
else
    warn "No existe .env_core - Ejecuta: cp .env.example .env_core"
fi

# 2. Verificar permisos
echo ""
echo "2. Verificando permisos de archivos .env..."
for file in .env_*; do
    if [ -f "$file" ]; then
        perms=$(stat -c "%a" "$file" 2>/dev/null || stat -f "%Lp" "$file" 2>/dev/null)
        if [ "$perms" = "600" ]; then
            check "Permisos correctos en $file (600)"
        else
            warn "Permisos incorrectos en $file ($perms) - Ejecuta: chmod 600 $file"
        fi
    fi
done

# 3. Verificar estructura de directorios
echo ""
echo "3. Verificando estructura de directorios..."
[ -d "common" ] && check "Directorio common/" || warn "Falta directorio common/"
[ -d "services/auth-api" ] && check "Directorio services/auth-api/" || warn "Falta directorio services/auth-api/"
[ -d "services/audit-api" ] && check "Directorio services/audit-api/" || warn "Falta directorio services/audit-api/"
[ -d "storage/keys" ] && check "Directorio storage/keys/" || warn "Falta directorio storage/keys/"
[ -d "database/schemas" ] && check "Directorio database/schemas/" || warn "Falta directorio database/schemas/"

# 4. Verificar archivos críticos
echo ""
echo "4. Verificando archivos críticos..."
[ -f "common/Conn3.php" ] && check "common/Conn3.php" || warn "Falta common/Conn3.php"
[ -f "common/helpers.php" ] && check "common/helpers.php" || warn "Falta common/helpers.php"
[ -f "services/auth-api/commons.php" ] && check "services/auth-api/commons.php" || warn "Falta services/auth-api/commons.php"

# 5. Verificar llaves JWT
echo ""
echo "5. Verificando llaves JWT..."
if [ -f "storage/keys/private_key.pem" ] && [ -f "storage/keys/public_key.pem" ]; then
    check "Llaves JWT generadas"
else
    warn "Faltan llaves JWT - Ejecuta:"
    echo "    cd storage/keys"
    echo "    openssl genrsa -out private_key.pem 2048"
    echo "    openssl rsa -in private_key.pem -pubout -out public_key.pem"
fi

# 6. Verificar PHP
echo ""
echo "6. Verificando PHP..."
if command -v php &> /dev/null; then
    PHP_VERSION=$(php -r 'echo PHP_VERSION;')
    check "PHP instalado ($PHP_VERSION)"
    
    if php -r 'exit(version_compare(PHP_VERSION, "8.1.0", ">=") ? 0 : 1);'; then
        check "PHP >= 8.1"
    else
        warn "PHP version < 8.1 - Se requiere PHP 8.1 o superior"
    fi
else
    warn "PHP no instalado"
fi

# 7. Resumen
echo ""
echo "========================================="
echo "  Resumen"
echo "========================================="
echo ""
echo "Próximos pasos:"
echo "1. Editar archivos .env_* con tus credenciales"
echo "2. Generar llaves JWT si no existen"
echo "3. Crear bases de datos e importar schemas"
echo "4. Configurar Apache/Nginx"
echo "5. Ver INSTALLATION.md para más detalles"
echo ""
echo "Para testing rápido con PHP built-in server:"
echo "  cd services/auth-api"
echo "  php -S localhost:8001"
echo ""
