private async Task <bool> AplicarVoucher(RealizarPedidoCommand message, PedidoA.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(PedidoA.Pedido pedido, RealizarPedidoCommand message) { var pedidoIniciado = new PedidoIniciadoIntegrationEvent { PedidoId = pedido.Id, ClienteId = pedido.ClienteId, Valor = pedido.ValorTotal, TipoPagamento = 1, 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 PedidoA.Pedido MapearPedido(RealizarPedidoCommand 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 PedidoA.Pedido(message.ClienteId, message.ValorTotal, message.PedidoItems.Select(PedidoItemDTO.ParaPedidoItem).ToList(), message.VoucherUtilizado, message.Desconto); pedido.AtribuirEndereco(endereco); return(pedido); }
private bool ValidarPedido(PedidoA.Pedido pedido) { var pedidoValorOriginal = pedido.ValorTotal; var pedidoDesconto = pedido.Desconto; pedido.CalcularValorPedido(); if (pedido.ValorTotal != pedidoValorOriginal) { AdicionarErro("O valor total do pedido não 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); }