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 }); }
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); }