private async Task AlterarEmail(Usuario usuario, string novoEmail) { var outrosUsuariosComMesmoEmail = await servicoEOL.ExisteUsuarioComMesmoEmail(usuario.Login, novoEmail); if (outrosUsuariosComMesmoEmail) { throw new NegocioException("Já existe outro usuário com o e-mail informado."); } var retornoEol = await servicoEOL.ObterPerfisPorLogin(usuario.Login); if (retornoEol == null || retornoEol.Status != AutenticacaoStatusEol.Ok) { throw new NegocioException("Ocorreu um erro ao obter os dados do usuário no EOL."); } if (retornoEol.Perfis == null || !retornoEol.Perfis.Any()) { //pode ser que esse usuário não tenha se logado ainda no sistema, realizar chamada para o serviço de relacionar grupos retornoEol = await servicoEOL.RelecionarUsuarioPerfis(usuario.Login); if (retornoEol == null || !retornoEol.Perfis.Any()) { throw new NegocioException("Não é possível alterar o e-mail deste usuário pois o mesmo está sem perfis de acesso."); } } var perfisUsuario = repositorioPrioridadePerfil.ObterPerfisPorIds(retornoEol.Perfis); usuario.DefinirPerfis(perfisUsuario); usuario.DefinirEmail(novoEmail); repositorioUsuario.Salvar(usuario); await servicoEOL.AlterarEmail(usuario.Login, novoEmail); }
public async Task <string> SolicitarRecuperacaoSenha(string login) { var usuario = repositorioUsuario.ObterPorCodigoRfLogin(null, login); var usuarioCore = await servicoEOL.ObterMeusDados(login); if (usuarioCore == null) { throw new NegocioException("Usuário não encontrado."); } if (usuario == null) { usuario = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(usuarioCore.CodigoRf, null, usuarioCore.Nome, usuarioCore.Email); } if (usuario.Perfis == null || !usuario.Perfis.Any()) { await servicoEOL.RelecionarUsuarioPerfis(login); } usuario.DefinirPerfis(await servicoUsuario.ObterPerfisUsuario(login)); usuario.DefinirEmail(usuarioCore.Email); usuario.IniciarRecuperacaoDeSenha(); repositorioUsuario.Salvar(usuario); EnviarEmailRecuperacao(usuario, usuarioCore.Email); return(usuarioCore.Email); }