示例#1
0
        public async Task <ProdutoDetalheViewModel> Get(int id)
        {
            var produto = await _repositorio.ObterProdutoPorId(id);

            var adicionais = await _adicionalRepositório.ObterTodosOsAdicionais();

            var relacao = adicionais.Select(adicional => new VinculoAdicionalViewModel()
            {
                Adicional = new AdicionalViewModel()
                {
                    Id    = adicional.Id,
                    Nome  = adicional.Nome,
                    Valor = adicional.Valor,
                    Tipo  = adicional.Tipo.ToString()
                },
                Vinculado = produto.Adicionais.Contains(adicional)
            });

            return(new ProdutoDetalheViewModel()
            {
                Id = produto.Id,
                Categoria = produto.Categoria,
                Nome = produto.Nome,
                Valor = produto.Valor,

                AdicionaisVinculados = relacao
            });
        }
示例#2
0
        public async Task Post(PedidoDTO pedidoDto)
        {
            var pedido = new Pedido()
            {
                Desconto        = pedidoDto.Desconto,
                Origem          = pedidoDto.Origem,
                Tipo            = pedidoDto.Tipo,
                TaxaDeEntrega   = pedidoDto.TaxaEntrega,
                MeioDePagamento = pedidoDto.MeioDePagamento,
                Cliente         = new Cliente()
                {
                    Cpf       = pedidoDto.Cliente.Cpf,
                    Nome      = pedidoDto.Cliente.Nome,
                    Telefone  = pedidoDto.Cliente.Telefone,
                    Endereços = new List <Endereço>()
                    {
                        new Endereço
                        {
                            Logradouro  = pedidoDto.Endereco.Logradouro,
                            Bairro      = pedidoDto.Endereco.Bairro,
                            Cidade      = pedidoDto.Endereco.Cidade,
                            Estado      = pedidoDto.Endereco.Estado,
                            Complemento = pedidoDto.Endereco.Complemento,
                            Observação  = pedidoDto.Endereco.Observacao
                        }
                    }
                }
            };

            foreach (var item in pedidoDto.Itens)
            {
                var produto = await _produtoRepositório.ObterProdutoPorId(item.ProdutoId);

                var produtoPedido = new ProdutoPedido
                {
                    Produto = produto,
                    Valor   = produto.Valor
                };

                if (item.Adicionais?.Length > 0)
                {
                    var vinculoAdicionais = item.Adicionais.Select(x =>
                    {
                        var adicional = produto.Adicionais.Single(y => y.Id == x.Id);
                        return(new AdicionalProdutoPedido
                        {
                            Produto = produtoPedido,
                            Adicional = adicional,
                            Valor = adicional.Valor
                        });
                    }).ToList();

                    produtoPedido.AdicionaisProdutoPedido = vinculoAdicionais;
                }

                pedido.AdicionarProdutoPedido(produtoPedido);
            }

            await _repositorio.AdicionarPedido(pedido);
        }