示例#1
0
        public async Task <IActionResult> Index()
        {
            var comando = new RegistrarClienteCommand(Guid.NewGuid(), "Lucas", "*****@*****.**", "016.025.560-08");

            var resultado = await _mediator.EnviarComando(comando);

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

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

            return(new ResponseMessage(sucesso));
        }
示例#3
0
        private async Task <ResponseMessage> RegistrarCliente(UsuarioRegistradoIntegrationEvent message)
        {
            var clienteCommand = new RegistrarClienteCommand(message.Id, message.Nome, message.Email, message.Cpf);
            ValidationResult sucesso;

            //criar um scope, somente de metodo é um singleton
            using (var scope = _serviceProvider.CreateScope())
            {
                var mediator = scope.ServiceProvider.GetRequiredService <IMediatorHandler>();
                sucesso = await mediator.EnviarComando(clienteCommand);
            }

            return(new ResponseMessage(sucesso));
        }
示例#4
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));
        }
        public async Task <IActionResult> Register([FromBody] RegisterViewModel model, int version)
        {
            if (version == 2)
            {
                return(Response(new { Message = "API V2 não disponível" }));
            }

            if (!ModelState.IsValid)
            {
                return(Response(model));
            }

            var user = new ApplicationUser {
                UserName = model.Email, Email = model.Email
            };
            var result = await _userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                var registroCommand = new RegistrarClienteCommand(Guid.Parse(user.Id), model.Nome, model.CPF, user.Email);
                _bus.SendCommand(registroCommand);

                if (!OperacaoValida())
                {
                    await _userManager.DeleteAsync(user);

                    return(Response(model));
                }

                _logger.LogInformation(1, "Usuário criado com sucesso!");
                var response = GerarTokenUsuario(new LoginViewModel {
                    Email = model.Email, Password = model.Password
                });

                return(Response(response));
            }
            AdicionarErrosIdentity(result);
            return(Response(model));
        }
示例#6
0
 public IActionResult Post([FromBody] RegistrarClienteCommand cliente) => Ok(_mediator.Send(cliente).Result);