コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 public void Atualizar(Domain.Pedidos.Pedido pedido)
 {
     _context.Pedidos.Update(pedido);
 }
コード例 #7
0
 public void Adicionar(Domain.Pedidos.Pedido pedido)
 {
     _context.Pedidos.Add(pedido);
 }