private async Task <ResponseMessage> RegistrarCliente(UsuarioRegistradoIntegrationEvent message)
        {
            var clienteCommand = new RegistrarClienteCommand(message.Id, message.Nome, message.Email, message.Cpf);
            ValidationResult sucesso;

            using (var scope = _serviceProvider.CreateScope())
            {
                var mediator = scope.ServiceProvider.GetRequiredService <IMediatorHandler>();
                sucesso = await mediator.EnviarComando(clienteCommand);
            }

            return(new ResponseMessage(sucesso));
        }
Exemplo n.º 2
0
        //abstração para chamar o Mediator que chama ClienteCommandHandler.cs
        private async Task <ResponseMessage> RegistrarCliente(UsuarioRegistradoIntegrationEvent message)
        {
            ValidationResult sucesso;
            var clienteCommand = new RegistrarClienteCommand(message.Id, message.Nome, message.Email, message.Cpf);

            // o escopo q estou trabalhando é singleton
            using (var scope = _serviceProvider.CreateScope())                                //pego o container de Inj Dep, crio um scopo e busco ele com base na interface
            {                                                                                 //por BackgroundService trabalhar com singleton, não posso chamar uma instancia
                // de IMediatorHandler (pois é scoped), e scoped não comunica com singleton
                var mediator = scope.ServiceProvider.GetRequiredService <IMediatorHandler>(); //service locate

                sucesso = await mediator.EnviarComando(clienteCommand);
            }

            return(new ResponseMessage(sucesso));
        }
Exemplo n.º 3
0
        private async Task <ResponseMessage> RegistrarCliete(UsuarioRegistro usuarioRegistro)
        {
            var usuario = await _userManager.FindByEmailAsync(usuarioRegistro.Email);

            var usuarioRegistrado = new UsuarioRegistradoIntegrationEvent(Guid.Parse(usuario.Id), usuarioRegistro.Nome, usuarioRegistro.Email, usuarioRegistro.Cpf);

            try
            {
                return(await _bus.RequestAsync <UsuarioRegistradoIntegrationEvent, ResponseMessage>(usuarioRegistrado));
            }
            catch
            {
                await _userManager.DeleteAsync(usuario);

                throw;
            }
        }
Exemplo n.º 4
0
        private async Task <ResponseMessage> RegistrarCidadao(UsuarioRegistro usuarioRegistro)
        {
            var usuario = await _authenticationService.UserManager.FindByEmailAsync(usuarioRegistro.Email);

            var usuarioRegistrado = new UsuarioRegistradoIntegrationEvent(
                Guid.Parse(usuario.Id), usuarioRegistro.Nome, usuarioRegistro.Email, usuarioRegistro.Cpf);

            try
            {
                return(await _bus.RequestAsync <UsuarioRegistradoIntegrationEvent, ResponseMessage>(usuarioRegistrado));
            }
            catch (Exception ex)
            {
                AdicionarErroProcessamento(ex.Message);
                return(new ResponseMessage(new ValidationResult()));
            }
        }
Exemplo n.º 5
0
        private async Task <ResponseMessage> RegistrarCliente(UsuarioRegistro usuarioRegistro)
        {
            var usuario = await _userManager.FindByEmailAsync(usuarioRegistro.Email);

            var usuarioRegistrado = new UsuarioRegistradoIntegrationEvent(
                Guid.Parse(usuario.Id),
                usuarioRegistro.Nome,
                usuarioRegistro.Email,
                usuarioRegistro.Cpf
                );


            _bus = RabbitHutch.CreateBus("host=localhost:5672");
            var response =
                await _bus.RequestAsync <UsuarioRegistradoIntegrationEvent, ResponseMessage>(usuarioRegistrado);

            return(response);
        }
        //envia a mensagem que registra o cliente  (envia para API de Cliente)
        private async Task <ResponseMessage> RegistrarCliente(UsuarioRegistro usuarioRegistro)
        {
            var usuario = await _userManager.FindByEmailAsync(usuarioRegistro.Email);

            var usuarioRegistrado = new UsuarioRegistradoIntegrationEvent(Guid.Parse(usuario.Id), usuarioRegistro.Nome,
                                                                          usuarioRegistro.Email, usuarioRegistro.Cpf);

            try
            {
                //só locahost tbm funciona, pois a porta 5672 é a padrão
                return(await _bus.RequestAsync <UsuarioRegistradoIntegrationEvent, ResponseMessage>(usuarioRegistrado));
            }
            catch (Exception e)
            {
                await _userManager.DeleteAsync(usuario);

                throw;
            }
        }
Exemplo n.º 7
0
        private async Task <ResponseMessage> RegisterClient(RegisterRequest registerRequest)
        {
            ApplicationUser user = await _userManager.FindByEmailAsync(registerRequest.Email);

            UsuarioRegistradoIntegrationEvent registeredUser = new UsuarioRegistradoIntegrationEvent(Guid.NewGuid(),
                                                                                                     registerRequest.Name, registerRequest.Email, registerRequest.Cpf);

            UsuarioRegistradoSendMailIntegrationEvent registeredUserSendMail =
                new UsuarioRegistradoSendMailIntegrationEvent(Guid.NewGuid(), registerRequest.Name,
                                                              registerRequest.Email, registerRequest.Cpf);

            try
            {
                RetryPolicy policy = Policy.Handle <Exception>()
                                     .WaitAndRetry(15, retryAttempt =>
                                                   TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)),
                                                   (outcome, timespan, retryCount, context) =>
                {
                    Console.WriteLine($"Tentando pela {retryCount} vez!");
                });

                var result = await policy.Execute(async() =>
                                                  await _bus.RequestAsync <UsuarioRegistradoIntegrationEvent, ResponseMessage>(registeredUser));

                if (result.ValidationResult.IsValid)
                {
                    await policy.Execute(async() =>
                                         await _bus.PublishAsync(registeredUserSendMail));
                }

                return(result);
            }
            catch (Exception e)
            {
                await _userManager.DeleteAsync(user);

                throw;
            }
        }