Ejemplo n.º 1
0
        public IHttpActionResult PutPacote(int id, Pacote pacote)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != pacote.IdPacote)
            {
                return BadRequest();
            }

            var pacoteDb = db.Pacote.Find(id);
            db.Entry(pacoteDb).State = EntityState.Modified;

            if (pacoteDb.Produto.Any())
            {
                pacoteDb.Nome = pacote.Nome;
                pacoteDb.Descricao = pacote.Descricao;
                pacoteDb.Duracao = pacote.Duracao;
                pacoteDb.Valor = pacote.Valor;

                //produtos novos
                var produtosNovos = pacote.Produto.Where(produto => !pacoteDb.Produto.Select(p => p.IdProduto).Contains(produto.IdProduto)).ToList();
                produtosNovos.ForEach(produto =>
                {
                    var produtoDb = db.Produto.Find(produto.IdProduto);
                    pacoteDb.Produto.Add(produtoDb);
                });

                //produtos excluidos
                var produtosExcluidos = pacoteDb.Produto.Where(produtoOriginal => !pacote.Produto.Select(p => p.IdProduto).Contains(produtoOriginal.IdProduto)).ToList();
                produtosExcluidos.ForEach(produto => pacoteDb.Produto.Remove(produto));

            }
            else
            {
                if (pacote.Produto.Any())
                    pacote.Produto.ToList().ForEach(produto =>
                    {
                        var produtoDb = db.Produto.Find(produto.IdProduto);
                        pacoteDb.Produto.Add(produtoDb);
                    });
            }

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PacoteExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }
Ejemplo n.º 2
0
        public IHttpActionResult PostPacote(Pacote pacote)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            

            pacote.Produto.ForEach(produto => db.Entry(produto).State = EntityState.Unchanged);


            db.Pacote.Add(pacote);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = pacote.IdPacote }, pacote);
        }