#!/bin/bash

# Definir colores ANSI
YELLOW='\033[1;33m'  # Amarillo brillante
BLUE='\033[44m'       # Fondo azul con texto blanco
WHITE='\033[1;37m'    # Texto blanco brillante
GREEN='\033[1;32m'    # Verde brillante
RED='\033[1;31m'      # Rojo brillante
RESET='\033[0m'       # Reset de color

# Verificar si .env existe y crearlo si no está presente
if [ ! -f ".env" ]; then
    cp .env.example .env
    echo -e "\n✅ Archivo .env creado a partir de .env.example\n"
else
    echo -e "\n⚠️ El archivo .env ya existe, no se sobrescribirá.\n"
fi

# Generar APP_KEY solo si no está definida
echo -e "🔑 Verificando clave de aplicación..."
if ! grep -q "^APP_KEY=" .env || grep -q "^APP_KEY=$" .env; then
    echo -e "  ➡️ Generando nueva APP_KEY..."
    php artisan key:generate --ansi
else
    echo -e "  ✅ APP_KEY ya está definida, no se regenerará.\n"
fi

# Crear enlace simbólico para almacenamiento
echo -e "🔗 Creando enlace de almacenamiento..."
php artisan storage:link

# Verificar si la base de datos está configurada en .env
DB_READY=false
if grep -q "^DB_HOST=" .env && grep -q "^DB_DATABASE=" .env && grep -q "^DB_USERNAME=" .env && grep -q "^DB_PASSWORD=" .env; then
    echo -e "\n🔍 Verificando conexión a la base de datos..."

    # Intentar obtener el estado de las migraciones
    if php artisan migrate:status --no-interaction > /dev/null 2>&1; then
        echo -e "  ${GREEN}✅ Conexión a la base de datos exitosa.${RESET}\n"
        DB_READY=true
    else
        echo -e "  ${RED}❌ No se pudo conectar a la base de datos.${RESET}\n"
    fi
else
    echo -e "  ${RED}⚠️ La configuración de la base de datos en .env está incompleta.${RESET}\n"
fi

# Mensaje final con colores
if [ "$DB_READY" = false ]; then
    echo -e "${YELLOW}⚠️ IMPORTANTE:${RESET} Debes configurar la base de datos en .env antes de continuar."
    echo -e "  Para inicializar la base de datos, ejecuta:\n"
    echo -e "      ${WHITE} php artisan migrate:fresh --seed ${RESET}\n"
else
    echo -e "${GREEN}🎉 La base de datos ya está configurada correctamente.${RESET}\n"
fi
