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)); }
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)); }
//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)); }
public IActionResult Post([FromBody] RegistrarClienteCommand cliente) => Ok(_mediator.Send(cliente).Result);