/// <summary> /// Executa o JOB de Integra��o de usu�rios com Active Directory. /// </summary> public static void ExecJobIntegracaoActiveDirectory() { SYS_Servico servico = GetEntity(new SYS_Servico() { ser_id = (short)eChaveServico.IntegracaoActiveDirectory }); if (servico.ser_ativo) { List <LOG_UsuarioADBO.sLOG_UsuarioAD> ltLogUsuarioAD = LOG_UsuarioADBO.SelecionaNaoProcessados(); if (ltLogUsuarioAD.Count > 0) { ltLogUsuarioAD.ForEach(p => { LOG_UsuarioAD entityUsuarioAD = p.usuarioAD; entityUsuarioAD.usa_status = (short)LOG_UsuarioAD.eStatus.EmProcessamento; LOG_UsuarioADBO.Save(entityUsuarioAD); }); LOG_UsuarioADBO.ProcessaLogUsuarioAD(ltLogUsuarioAD); } } }
/// <summary> /// Processa os hist�ricos de altera��o de senha e realiza a sincroniza��o entre o Autenticador e AD. /// </summary> /// <param name="ltLogUsuarioAD">Lista de hist�rico de altera��o de senha.</param> /// <returns></returns> public static bool ProcessaLogUsuarioAD(List <sLOG_UsuarioAD> ltLogUsuarioAD) { try { string dominio = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppDominioAD"); string organizationalUnitPath = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppOrganizationalUnitPath"); string descricao = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppUserDescriptionAD"); LdapUsers userAD = new LdapUsers(LdapUtil.CheckPath(dominio)); foreach (sLOG_UsuarioAD log in ltLogUsuarioAD) { try { bool processou = false; if (log.usuarioAD.usa_origemAcao == (short)LOG_UsuarioAD.eOrigem.Autenticador) { processou = SincronizaSenhaAlteradaAutenticador(userAD, dominio, organizationalUnitPath, log, descricao); } else { processou = SincronizaSenhaAlteradaAD(log); } if (processou) { LOG_UsuarioAD usuarioAD = log.usuarioAD; usuarioAD.usa_status = (short)LOG_UsuarioAD.eStatus.Processado; usuarioAD.usa_dataProcessado = DateTime.Now; LOG_UsuarioADBO.Save(usuarioAD); } else { LOG_UsuarioAD usuarioAD = log.usuarioAD; usuarioAD.usa_status = (short)LOG_UsuarioAD.eStatus.Falha; usuarioAD.usa_dataProcessado = DateTime.Now; LOG_UsuarioADBO.Save(usuarioAD); LOG_UsuarioADErro erro = new LOG_UsuarioADErro { usa_id = log.usuarioAD.usa_id , use_descricaoErro = "O log de altera��o de senha n�o foi processado." }; LOG_UsuarioADErroBO.Save(erro); } } catch (Exception ex) { LOG_UsuarioAD usuarioAD = log.usuarioAD; usuarioAD.usa_status = (byte)LOG_UsuarioAD.eStatus.Falha; usuarioAD.usa_dataProcessado = DateTime.Now; LOG_UsuarioADBO.Save(usuarioAD); LOG_UsuarioADErro erro = new LOG_UsuarioADErro { usa_id = log.usuarioAD.usa_id , use_descricaoErro = ex.Message }; LOG_UsuarioADErroBO.Save(erro); UtilBO.GravarErro(ex); } } return(true); } catch (Exception ex) { ltLogUsuarioAD.ForEach(p => { LOG_UsuarioAD entityUsuarioAD = p.usuarioAD; entityUsuarioAD.usa_status = (short)LOG_UsuarioAD.eStatus.Pendente; LOG_UsuarioADBO.Save(entityUsuarioAD); }); throw ex; } }