#!/bin/bash

# Script para iniciar la aplicación en modo producción
# Este script debe ejecutarse en el servidor después del despliegue

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 producción...${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

# Verificar archivos .env críticos
echo -e "${YELLOW}🔍 Verificando archivos de configuración...${NC}"

if [ ! -f ".env" ]; then
    echo -e "${RED}❌ Error: Archivo .env no encontrado${NC}"
    echo -e "${YELLOW}Copia env.production a .env y configúralo apropiadamente.${NC}"
    exit 1
fi

if [ ! -f "backend/.env" ]; then
    echo -e "${RED}❌ Error: Archivo backend/.env no encontrado${NC}"
    exit 1
fi

# Verificar variables críticas
source .env 2>/dev/null || true

if [ -z "$VITE_API_URL" ]; then
    echo -e "${RED}❌ Error: VITE_API_URL no está configurado en .env${NC}"
    echo -e "${YELLOW}Agrega: VITE_API_URL=https://tu-dominio.com${NC}"
    exit 1
fi

if [ -z "$CORS_ORIGIN" ]; then
    echo -e "${YELLOW}⚠️  Advertencia: CORS_ORIGIN no está configurado en .env${NC}"
    echo -e "${YELLOW}Esto puede causar problemas de CORS.${NC}"
fi

echo -e "${GREEN}✅ Variables de entorno verificadas${NC}"
echo -e "${BLUE}   VITE_API_URL: $VITE_API_URL${NC}"

# Asegurar que frontend/.env existe con la configuración correcta
echo -e "${YELLOW}🔧 Configurando frontend/.env...${NC}"
cat > frontend/.env << EOF
# Configuración de producción generada automáticamente por start-production.sh
# Fecha: $(date)
VITE_API_URL=$VITE_API_URL
EOF

echo -e "${GREEN}✅ frontend/.env configurado${NC}"

# 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 producción
echo -e "${YELLOW}🚀 Iniciando servicios en modo producción...${NC}"
docker-compose --profile prod 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 prod 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:8080 >/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!${NC}"
echo -e "${BLUE}🌐 La aplicación está disponible en: http://localhost:8080${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 prod logs -f"
echo -e "  Ver estado: docker-compose --profile prod ps"
echo -e "  Parar: docker-compose down"
echo -e "  Reiniciar: docker-compose --profile prod restart"
