public Task Handle(RegistrarEnderecoCommand notification, CancellationToken cancellationToken) { var endereco = new Endereco(notification.Email, notification.CEP, notification.Rua, notification.Numero, notification.Complemento, notification.Bairro, notification.Cidade, notification.Estado); if (!_usuarioQueryRepository.UsuarioExistente(notification.Email)) { NotificarErro(notification.MessageType, $"O usuario {notification.Email} não está cadastrado"); return(Task.CompletedTask); } if (EnderecoExistente(notification.Email, notification.MessageType) != null) { return(Task.CompletedTask); } _enderecoCommandRepository.Adicionar(endereco); if (!HasNotificationsError()) { _mediator.PublicarEvento(new EnderecoRegistradoEvent(endereco)); } return(Task.CompletedTask); }
public Task Handle(CadastrarExtratoCommand notification, CancellationToken cancellationToken) { if (!_usuarioQueryRepository.UsuarioExistente(notification.Email)) { NotificarErro(notification.MessageType, $"O usuario {notification.Email} não está cadastrado"); return(Task.CompletedTask); } var extrato = new Extrato(notification.Pontos, notification.Email, notification.Estabelecimento, DateTime.Now); _extratoCommandRepository.Adicionar(extrato); if (!HasNotificationsError()) { _mediator.PublicarEvento(new ExtratoCadastradoEvent(extrato)); } var saldo = AtualizarSaldo(notification.Email, notification.Pontos, notification.MessageType); if (!HasNotificationsError()) { _mediator.PublicarEvento(new SaldoAtualizadoEvent(saldo)); } return(Task.CompletedTask); }
public Task Handle(RealizarPedidoCommand notification, CancellationToken cancellationToken) { if (!_usuarioQueryRepository.UsuarioExistente(notification.Pedido.Email)) { NotificarErro(notification.MessageType, $"O usuario {notification.Pedido.Email} não está cadastrado"); return(Task.CompletedTask); } var endereco = PossuiEndereco(notification.Pedido.Email, notification.MessageType); if (endereco == null) { return(Task.CompletedTask); } var pedido = new Pedido(notification.Pedido.Email, Enums.StatusEntrega.AGUARDANDOENVIO, DateTime.Now, new List <PedidoItem>(), endereco); foreach (var item in notification.Pedido.Itens) { item.Produto = _produtoQueryRepository.ObterPorId(item.ProdutoId); if (item.Produto == null) { NotificarErro(notification.MessageType, $"O id {item.ProdutoId} informado é inválido"); return(Task.CompletedTask); } ; item.CalcularPontuacao(item.Produto.Pontuacao); pedido.Itens.Add(item); } var totalPontosPedido = pedido.CalcularPontuacaoTotal(); if (!PedidoValido(pedido)) { return(Task.CompletedTask); } if (SaldoInsuficiente(pedido.Email, totalPontosPedido, notification.MessageType)) { return(Task.CompletedTask); } _pedidoCommandRepository.Adicionar(pedido); if (!HasNotificationsError()) { _mediator.PublicarEvento(new PedidoRealizadoEvent(pedido)); } var saldo = AtualizarSaldo(pedido.Email, totalPontosPedido, notification.MessageType); if (!HasNotificationsError()) { _mediator.PublicarEvento(new SaldoAtualizadoEvent(saldo)); } return(Task.CompletedTask); }
public Task Handle(AtualizarSaldoCommand notification, CancellationToken cancellationToken) { if (!_usuarioQueryRepository.UsuarioExistente(notification.Email)) { NotificarErro(notification.MessageType, $"O usuario {notification.Email} não está cadastrado"); return(Task.CompletedTask); } var saldo = new Saldo(notification.Email, notification.Pontos); _saldoCommandRepository.Atualizar(saldo); if (!HasNotificationsError()) { _mediator.PublicarEvento(new SaldoAtualizadoEvent(saldo)); } return(Task.CompletedTask); }