private IEnumerable <ResultadoImportacaoDTO> IncluirNoAD(IEnumerable <UsuarioDTO> paraIncluir, string dominio, string diretorio, string usuario, string senha, IConsultaOU ouDestino)
        {
            List <ResultadoImportacaoDTO> resultados = new List <ResultadoImportacaoDTO>();

            Console.WriteLine($"Confirma a inserção de {paraIncluir.Count()} confirma [Sim, Nao]?");
            var confirmacao = Console.ReadLine();

            if (confirmacao == "Sim")
            {
                Stopwatch crono = Stopwatch.StartNew();
                int       i     = 0;
                foreach (var item in paraIncluir)
                {
                    ResultadoImportacaoDTO resultado = new ResultadoImportacaoDTO()
                    {
                        Usuario = item
                    };

                    try
                    {
                        var ouUsuario = ouDestino.MontarOUUsuario(item.Login, item.OU);

                        if (!string.IsNullOrWhiteSpace(ouUsuario))
                        {
                            var repositorio = new SME.SyncADxCoreSSO.ADSync.SMEADSync(dominio, $"{ouUsuario},{diretorio}", usuario, senha);
                            resultado.Resultado = repositorio.CriarUsuario(item) ? ResultadoImportacao.Sucesso : ResultadoImportacao.FalhaNaoIdentificada;
                        }
                        else
                        {
                            resultado.Resultado = ResultadoImportacao.NaoFoiPossivelIdentificarOU;
                        }
                    }
                    catch (Exception ex)
                    {
                        resultado.Resultado    = ResultadoImportacao.Erro;
                        resultado.MensagemErro = ex.ToString();
                    }

                    resultados.Add(resultado);
                    i++;

                    if (i % 100 == 0)
                    {
                        Console.WriteLine($"Foram processados {i} itens - {crono.ElapsedMilliseconds / 1000} segundos");
                        crono.Restart();
                    }
                }
            }

            return(resultados);
        }
        private IEnumerable <ResultadoImportacaoDTO> ResetarSenha(IEnumerable <UsuarioDTO> paraIncluir, string dominio, string diretorio, string usuario, string senha, IConsultaOU ouDestino)
        {
            List <ResultadoImportacaoDTO> resultados = new List <ResultadoImportacaoDTO>();

            Console.WriteLine($"Confirma a alteração de senha de {paraIncluir.Count()} confirma [Sim, Nao]?");
            var confirmacao = Console.ReadLine();

            if (confirmacao == "Sim")
            {
                Stopwatch crono       = Stopwatch.StartNew();
                int       i           = 0;
                string    contextoLog = Guid.NewGuid().ToString();
                foreach (var item in paraIncluir)
                {
                    ResultadoImportacaoDTO resultado = new ResultadoImportacaoDTO()
                    {
                        Usuario = item
                    };

                    try
                    {
                        var repositorio = new SME.SyncADxCoreSSO.ADSync.SMEADSync(dominio, diretorio, usuario, senha);

                        resultado.Resultado = repositorio.ResetarSenhaParaPadrao(item, contextoLog) ? ResultadoImportacao.Sucesso : ResultadoImportacao.FalhaNaoIdentificada;
                    }
                    catch (Exception ex)
                    {
                        resultado.Resultado    = ResultadoImportacao.Erro;
                        resultado.MensagemErro = ex.ToString();
                    }

                    resultados.Add(resultado);
                    i++;

                    if (i % 100 == 0)
                    {
                        Console.WriteLine($"Foram processados {i} itens - {crono.ElapsedMilliseconds / 1000} segundos");
                        crono.Restart();
                    }
                }
            }

            return(resultados);
        }
        public void IncluirUsuariosADOrigemCoreSSO()
        {
            var registrosInclusao = from i in comparador.ObterDiferenca(ModoComparacao.OrientadoPeloLadoA)
                                    where i.LadoA != null && i.Resultado == ResultadoComparacao.SomenteLadoA
                                    select i.LadoA;

            foreach (var item in registrosInclusao)
            {
                ResultadoImportacaoDTO resultado = new ResultadoImportacaoDTO()
                {
                    Usuario = item
                };
                try
                {
                    var ouUsuario = consultaOU.MontarOUUsuario(item.Login, item.OU);

                    if ((TipoCriptografia)item.Criptografia != TipoCriptografia.TripleDES)
                    {
                        repositorioCoreSSO.ResetarSenhaParaPadrao(item);
                    }

                    if (!string.IsNullOrWhiteSpace(ouUsuario))
                    {
                        resultado.Resultado = repositorioAD.CriarUsuario(item) ? ResultadoImportacao.Sucesso : ResultadoImportacao.FalhaNaoIdentificada;
                    }
                    else
                    {
                        resultado.Resultado = ResultadoImportacao.NaoFoiPossivelIdentificarOU;
                    }

                    AtualizarSincronizacao(item);
                }
                catch (Exception ex)
                {
                    resultado.Resultado    = ResultadoImportacao.Erro;
                    resultado.MensagemErro = ex.ToString();
                }

                repositorioADSync.IncluirResultadoSincronizacao(resultado);
            }
        }