. $PSScriptRoot\obterStringConexao.ps1
. $PSScriptRoot\obterEnderecoHttpServico.ps1
. $PSScriptRoot\obterBuildTools.ps1
. $PSScriptRoot\configurarArquivosWebConfig.ps1

function global:_mu.configurarOrcamentoWeb.test() {
    . $PSScriptRoot\configuracoesMicrouniversoWeb.ps1

    $configuracoes = mu.configuracoesMicrouniversoWeb.obter -enderecoYaml "C:\temp\microuniversoWeb.yaml"
    $diretorioReleaseWeb = "C:\TrabalhoWeb\ReleaseWeb"

    $buildTools = mu.obterBuildTools $configuracoes $diretorioReleaseWeb

    _mu.configurarOrcamentoWeb $configuracoes $buildTools

}

function global:_mu.configurarAuthServer.test() {
    . $PSScriptRoot\configuracoesMicrouniversoWeb.ps1

    $configuracoes = mu.configuracoesMicrouniversoWeb.obter -enderecoYaml "C:\temp\microuniversoWeb.yaml"
    $diretorioReleaseWeb = "C:\TrabalhoWeb\ReleaseWeb"

    $buildTools = mu.obterBuildTools $configuracoes $diretorioReleaseWeb

    _mu.configurarAuthServer $configuracoes $buildTools

}

function global:_mu.configurarAuthServer.test2() {
    $configuracoes = mu.configuracoesMicrouniversoWeb.obter C:\TrabalhoWeb\ScriptsDeploy\scripts_implantacao\microuniversoWeb-modelo.yaml

    $diretorioReleaseWeb = "C:\TrabalhoWeb\ReleaseWeb"

    $buildTools = mu.obterBuildTools $configuracoes $diretorioReleaseWeb

    _mu.configurarAuthServer $configuracoes $buildTools
}

function global:_mu.configurarRest.test() {
    . $PSScriptRoot\configuracoesMicrouniversoWeb.ps1

    $configuracoes = mu.configuracoesMicrouniversoWeb.obter -enderecoYaml "C:\temp\microuniversoWeb-teste-fenixwrapper.yaml"
    $diretorioReleaseWeb = "C:\TrabalhoWeb\ReleaseWeb"

    $buildTools = mu.obterBuildTools $configuracoes $diretorioReleaseWeb

    _mu.configurarRest $configuracoes $buildTools

}

function global:_mu.configurarSegurancaWeb.test() {
    $configuracoes = mu.configuracoesMicrouniversoWeb.obter c:\temp\microuniversoWeb-fenixwrapper-seguranca-web.yaml

    $diretorioReleaseWeb = "C:\TrabalhoWeb\ReleaseWeb"

    $buildTools = mu.obterBuildTools $configuracoes $diretorioReleaseWeb

    _mu.configurarSegurancaWeb $configuracoes $buildTools
}

function global:_mu.configurarRest.test() {
    $configuracoes = mu.configuracoesMicrouniversoWeb.obter c:\temp\microuniversoWeb-teste-rest.yaml

    $diretorioReleaseWeb = "C:\TrabalhoWeb\ReleaseWeb"

    $buildTools = mu.obterBuildTools $configuracoes $diretorioReleaseWeb

    _mu.configurarRest $configuracoes $buildTools
}

function global:_mu.configurarRest.testMongoDbSitesIISConnectionString() {
    param(
        [string]$enderecoArquivoConfiguracao = "C:\microuniversoWeb\microuniversoWeb.yaml",
        [string]$diretorioReleaseWeb,
        [string]$senha
    )

    . $PSScriptRoot\configuracoesMicrouniversoWeb.ps1

    if (-not $PSBoundParameters.ContainsKey("diretorioReleaseWeb") -or [string]::IsNullOrEmpty($diretorioReleaseWeb)) {
        $candidatosDiretorioReleaseWeb = @(
            "C:\microuniversoWeb\ScriptsImplantacao",
            "C:\TrabalhoWeb\scriptsdeploy\scripts_implantacao",
            "C:\TrabalhoWeb\ProjetoWeb\Tools",
            "C:\TrabalhoWeb\ReleaseWeb"
        )

        $diretorioReleaseWeb = $candidatosDiretorioReleaseWeb |
            Where-Object { Test-Path "$_\buildtools\MicroUniverso.BuildTools.exe" } |
            Select-Object -First 1

        if ([string]::IsNullOrEmpty($diretorioReleaseWeb)) {
            throw "MicroUniverso.BuildTools.exe nao encontrado em nenhum dos caminhos padrao. Passe -diretorioReleaseWeb apontando para a pasta que contem buildtools\MicroUniverso.BuildTools.exe"
        }

        _echo "diretorioReleaseWeb detectado automaticamente: $diretorioReleaseWeb"
    }

    $configuracoes = if ($PSBoundParameters.ContainsKey("senha") -and $senha) {
        mu.configuracoesMicrouniversoWeb.obter -enderecoYaml $enderecoArquivoConfiguracao -senha $senha
    } else {
        mu.configuracoesMicrouniversoWeb.obter -enderecoYaml $enderecoArquivoConfiguracao
    }

    _echo "=== Valores lidos da secao mongodbSitesIIS no YAML ==="
    _echo "  configurar: $($configuracoes.mongodbSitesIIS.configurar)"
    _echo "  endereco:   $($configuracoes.mongodbSitesIIS.endereco)"
    _echo "  porta:      $($configuracoes.mongodbSitesIIS.porta)"
    _echo "  usuario:    $($configuracoes.mongodbSitesIIS.usuario)"
    _echo "  senha:      $($configuracoes.mongodbSitesIIS.senha)"
    _echo "  assincronoHabilitado: $($configuracoes.ecommerce.processamentoPedidoVenda.assincrono.habilitado)"

    $buildTools = mu.obterBuildTools $configuracoes $diretorioReleaseWeb

    _mu.configurarRest $configuracoes $buildTools

    $webConfigPath = "$($configuracoes.enderecos.diretorioBaseInstalacao)\$($configuracoes.servicos.rest.diretorioRelativoInstalacao)\web.config"

    _echo ""
    _echo "=== Chaves apos atualizacao em $webConfigPath ==="

    $xml = [xml](Get-Content $webConfigPath)

    $mongoKey = $xml.SelectSingleNode('/configuration/appSettings/add[@key="MongoDB.ConnectionString"]')
    if ($null -ne $mongoKey) {
        _echo "MongoDB.ConnectionString = $($mongoKey.value)"
    } else {
        _echo "[ERRO] Chave MongoDB.ConnectionString nao encontrada"
    }

    $procKey = $xml.SelectSingleNode('/configuration/appSettings/add[@key="ProcessamentoPedidoVenda.Assincrono.Habilitado"]')
    if ($null -ne $procKey) {
        _echo "ProcessamentoPedidoVenda.Assincrono.Habilitado = $($procKey.value)"
    } else {
        _echo "[ERRO] Chave ProcessamentoPedidoVenda.Assincrono.Habilitado nao encontrada"
    }
}