#!/bin/bash

# Script para iniciar la aplicación en modo desarrollo
# Este script debe ejecutarse en el entorno de desarrollo local

set -e

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

echo -e "${BLUE}🚀 Iniciando aplicación en modo desarrollo...${NC}"

# Verificar configuración antes de continuar
echo -e "${YELLOW}🔍 Verificando configuración antes del inicio...${NC}"

# Verificar que estamos en el directorio correcto
if [ ! -f "docker-compose.yml" ]; then
    echo -e "${RED}❌ Error: No se encontró docker-compose.yml${NC}"
    echo -e "${YELLOW}Ejecuta este script desde la raíz del proyecto.${NC}"
    exit 1
fi

# Verificar que Docker está ejecutándose
if ! docker info >/dev/null 2>&1; then
    echo -e "${RED}❌ Error: Docker no está ejecutándose${NC}"
    echo -e "${YELLOW}Inicia Docker y vuelve a ejecutar este script.${NC}"
    exit 1
fi

# Parar cualquier contenedor que esté ejecutándose
echo -e "${YELLOW}⏹️  Parando contenedores existentes...${NC}"
docker-compose down 2>/dev/null || true

# Iniciar servicios en modo desarrollo
echo -e "${YELLOW}🚀 Iniciando servicios en modo desarrollo...${NC}"
docker-compose --profile dev up -d --build

# Esperar a que los servicios estén listos
echo -e "${YELLOW}⏳ Esperando a que los servicios estén listos...${NC}"
sleep 30

# Verificar estado de los servicios
echo -e "${BLUE}📊 Estado de los servicios:${NC}"
docker-compose --profile dev ps

# Verificar que el backend esté funcionando
echo -e "${YELLOW}🔍 Verificando backend...${NC}"
for i in {1..10}; do
    if curl -f http://localhost:3000/health >/dev/null 2>&1; then
        echo -e "${GREEN}✅ Backend funcionando correctamente${NC}"
        break
    else
        echo -e "${YELLOW}Intento $i/10: Backend aún no responde...${NC}"
        sleep 3
    fi
done

# Verificar que el frontend esté funcionando
echo -e "${YELLOW}🔍 Verificando frontend...${NC}"
for i in {1..5}; do
    if curl -f http://localhost:5173 >/dev/null 2>&1; then
        echo -e "${GREEN}✅ Frontend funcionando correctamente${NC}"
        break
    else
        echo -e "${YELLOW}Intento $i/5: Frontend aún no responde...${NC}"
        sleep 2
    fi
done

echo -e "${GREEN}🎉 Aplicación iniciada exitosamente en modo desarrollo!${NC}"
echo -e "${BLUE}🌐 La aplicación está disponible en: http://localhost:5173${NC}"
echo -e "${BLUE}🔧 API disponible en: http://localhost:3000/api${NC}"
echo -e "${BLUE}🔧 Temporal Web UI: http://localhost:8080${NC}"
echo ""
echo -e "${BLUE}🔧 Comandos útiles:${NC}"
echo -e "  Ver logs: docker-compose --profile dev logs -f"
echo -e "  Ver estado: docker-compose --profile dev ps"
echo -e "  Parar: docker-compose down"
echo -e "  Reiniciar: docker-compose --profile dev restart"
echo ""
echo -e "${YELLOW}💡 Nota: En desarrollo, el frontend usa Vite dev server con Hot Module Replacement${NC}"
