public void AtualizarUsuariosAD()
        {
            var usuarios = repositorioCoreSSO.ObterParaComparacao();

            foreach (var usuario in usuarios)
            {
                if (usuario.Eh_Gestor.Equals('S') || (usuario.Eh_Professor.Equals('S') && usuario.DataCriacao.Date > usuario.HojeMenos40Meses.Date))
                {
                    var sincronizacao = repositorioADSync.ObterSincronizacao(usuario.Id);
                    if (sincronizacao == null || usuario.DataAlteracao > sincronizacao.DataUltimaSincronizacao)
                    {
                        var resultado = new ResultadoSincronismoDTO()
                        {
                            Usuario = usuario
                        };
                        try
                        {
                            if (usuario.Situacao.Equals(3))
                            {
                                repositorioAD.DesativarUsuario(usuario.Login);
                            }
                            else if ((TipoCriptografia)usuario.Criptografia != TipoCriptografia.TripleDES)
                            {
                                repositorioAD.ResetarSenhaParaPadrao(usuario);
                                repositorioCoreSSO.ResetarSenhaParaPadrao(usuario);
                            }
                            else
                            {
                                repositorioAD.AtualizarSenha(usuario.Login, new MSTech.Security.Cryptography.SymmetricAlgorithm(MSTech.Security.Cryptography.SymmetricAlgorithm.Tipo.TripleDES).Decrypt(usuario.Senha));
                            }

                            if (sincronizacao == null)
                            {
                                repositorioADSync.IncluirSincronizacao(new SincronizacaoDTO()
                                {
                                    UsuarioIdCoreSSO        = usuario.Id,
                                    DataUltimaSincronizacao = DateTime.Now,
                                    Ativo = !usuario.Situacao.Equals(3)
                                });
                            }
                            else
                            {
                                sincronizacao.DataUltimaSincronizacao = DateTime.Now;
                                repositorioADSync.AtualizarSincronizacao(sincronizacao);
                            }

                            resultado.Sucesso = true;
                        }
                        catch (Exception ex)
                        {
                            resultado.Sucesso      = false;
                            resultado.MensagemErro = ex.Message;
                        }
                        repositorioADSync.IncluirResultadoSincronizacao(resultado);
                    }
                }
            }
        }
        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);
            }
        }