pipeline {
    agent any

    stages {
        stage('Configurar Entorno') {
            steps {
                script {
                    // Selección de configuración según la rama
                    if (env.BRANCH_NAME == 'master') {
                        env.PROJECT_NAME = "django_master"
                        env.APP_CONTAINER_NAME = "django_app_master"
                        env.PORT = "8001"
                        env.DEBUG_MODE = "0"
                        env.ENV_CREDENTIAL_ID = "2" 
                    } else if (env.BRANCH_NAME == 'dev') {
                        env.PROJECT_NAME = "django_dev"
                        env.APP_CONTAINER_NAME = "django_app_dev"
                        env.PORT = "8000"
                        env.DEBUG_MODE = "1"
                        env.ENV_CREDENTIAL_ID = "1" 
                    }
                }
            }
        }

        stage('Fase Final: Containerización') {
            when { anyOf { branch 'dev'; branch 'master' } }
            steps {
                withCredentials([file(credentialsId: env.ENV_CREDENTIAL_ID, variable: 'SECRET_ENV')]) {
                    sh """
                    echo "--> Preparando configuración segura..."
                    cp \$SECRET_ENV deployments/.env
                    
                    echo "--> 🚀 DESPLEGANDO PROYECTO: ${env.PROJECT_NAME}"
                    
                    # 1. Limpieza de contenedores previos para evitar conflictos de nombres
                    docker compose -p ${env.PROJECT_NAME} -f deployments/docker-compose.yml down --remove-orphans

                    # 2. Despliegue forzando la lectura del archivo .env específico
                    # CRÍTICO: --env-file asegura que DATABASE_EXPOSE_PORT se lea correctamente
                    docker compose \
                        -p ${env.PROJECT_NAME} \
                        -f deployments/docker-compose.yml \
                        --env-file deployments/.env \
                        up -d --build web
                    """
                }
            }
        }
    }

    post {
        success {
            echo "✅ Despliegue de ${env.BRANCH_NAME} completado con éxito."
            sh "rm -f deployments/.env"
        }
        failure {
            echo "❌ Error en el despliegue de ${env.BRANCH_NAME}."
            sh "rm -f deployments/.env"
        }
    }
}