private async Task <bool> AplicarVoucher(AdicionarPedidoCommand message, NSE.Pedidos.Domain.Pedidos.Pedido pedido) { if (!message.VoucherUtilizado) { return(true); } var voucher = await _voucherRepository.ObterVoucherPorCodigo(message.VoucherCodigo); if (voucher == null) { AdicionarErro("O voucher informado não existe!"); return(false); } var voucherValidation = new VoucherValidation().Validate(voucher); if (!voucherValidation.IsValid) { voucherValidation.Errors.ToList().ForEach(m => AdicionarErro(m.ErrorMessage)); return(false); } pedido.AtribuirVoucher(voucher); voucher.DebitarQuantidade(); _voucherRepository.Atualizar(voucher); return(true); }
public async Task <bool> ProcessarPagamento(NSE.Pedidos.Domain.Pedidos.Pedido pedido, AdicionarPedidoCommand message) { var pedidoIniciado = new PedidoIniciadoIntegrationEvent { PedidoId = pedido.Id, ClienteId = pedido.ClienteId, Valor = pedido.ValorTotal, TipoPagamento = 1,//Fixo alte NomeCartao = message.NomeCartao, NumeroCartao = message.NumeroCartao, MesAnoVencimento = message.ExpiracaoCartao, CVV = message.CvvCartao }; var result = await _bus .RequestAsync <PedidoIniciadoIntegrationEvent, ResponseMessage>(pedidoIniciado); if (result.ValidationResult.IsValid) { return(true); } foreach (var erro in result.ValidationResult.Errors) { AdicionarErro(erro.ErrorMessage); } return(false); }
private NSE.Pedidos.Domain.Pedidos.Pedido MapearPedido(AdicionarPedidoCommand message) { var endereco = new Endereco { Logradouro = message.Endereco.Logradouro, Numero = message.Endereco.Numero, Complemento = message.Endereco.Complemento, Bairro = message.Endereco.Bairro, Cep = message.Endereco.Cep, Cidade = message.Endereco.Cidade, Estado = message.Endereco.Estado }; var pedido = new NSE.Pedidos.Domain.Pedidos.Pedido(message.ClienteId, message.ValorTotal, message.PedidoItems.Select(PedidoItemDTO.ParaPedidoItem).ToList(), message.VoucherUtilizado, message.Desconto); pedido.AtribuirEndereco(endereco); return(pedido); }
private bool ValidarPedido(NSE.Pedidos.Domain.Pedidos.Pedido pedido) { var pedidoValorOriginal = pedido.ValorTotal; var pedidoDesconto = pedido.Desconto; pedido.CalcularValorPedido(); if (pedido.ValorTotal != pedidoValorOriginal) { AdicionarErro("O valor total do pedido nao confere com o cálculo do pedido"); return(false); } if (pedido.Desconto != pedidoDesconto) { AdicionarErro("O valor total não confere com o cálculo do pedido"); return(false); } return(true); }