private async Task <bool> ProcessarPagamento(Domain.Pedidos.Pedido pedido, AdicionarPedidoCommand message) { var pedidoIniciado = new PedidoIniciadoIntegrationEvent { PedidoId = pedido.Id, ClienteId = pedido.ClienteId, Valor = pedido.ValorTotal, TipoPagamento = 1, //fixo - cartão de crédito 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 async Task <bool> AplicarVoucher(AdicionarPedidoCommand message, 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(p => AdicionarErro(p.ErrorMessage)); return(false); } pedido.AtribuirVoucher(voucher); voucher.DebitarQuantidade(); _voucherRepository.Atualizar(voucher); return(true); }
private 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 Domain.Pedidos.Pedido(message.ClienteId, message.ValorTotal, message.PedidoItems.Select(PedidoItemDTO.ParaPedidoItem).ToList(), message.VoucherUtilizado, message.Desconto); pedido.AtribuirEndereco(endereco); return(pedido); }
public static PedidoDTO ParaPedidoDTO(Domain.Pedidos.Pedido pedido) { var pedidoDTO = new PedidoDTO { Id = pedido.Id, ClienteId = pedido.ClienteId, Codigo = pedido.Codigo, Status = (int)pedido.PedidoStatus, Data = pedido.DataCadastro, ValorTotal = pedido.ValorTotal, Desconto = pedido.Desconto, VoucherUtilizado = pedido.VoucherUtilizado, PedidoItems = new List <PedidoItemDTO>(), Endereco = new EnderecoDTO() }; foreach (var item in pedido.PedidoItems) { pedidoDTO.PedidoItems.Add(new PedidoItemDTO { Nome = item.ProdutoNome, Imagem = item.ProdutoImagem, Quantidade = item.Quantidade, ProdutoId = item.ProdutoId, Valor = item.ValorUnitario, PedidoId = item.PedidoId }); } pedidoDTO.Endereco = new EnderecoDTO { Logradouro = pedido.Endereco.Logradouro, Numero = pedido.Endereco.Numero, Complemento = pedido.Endereco.Complemento, Bairro = pedido.Endereco.Bairro, Cep = pedido.Endereco.Cep, Cidade = pedido.Endereco.Cidade, Estado = pedido.Endereco.Estado }; return(pedidoDTO); }
private bool ValidarPedido(Domain.Pedidos.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 do pedido não confere com o cálculo do pedido"); return(false); } return(true); }
public void Atualizar(Domain.Pedidos.Pedido pedido) { _context.Pedidos.Update(pedido); }
public void Adicionar(Domain.Pedidos.Pedido pedido) { _context.Pedidos.Add(pedido); }