public IHttpActionResult PostProduct(Product product) { if (!ModelState.IsValid) { return BadRequest(ModelState); } //Não deverá permitir a inclusão de um produto com o //código e/ou o modelo com um valor que já exista na tabela var productsCode = db.Products.Where(p => (p.codigo == product.codigo || p.modelo == product.modelo)); List<Product> productsRes = productsCode.ToList(); if (productsRes.Count > 0) { foreach (Product prod in productsRes) { if (prod.codigo == product.codigo) return BadRequest("Erro: O codigo informado já existe: " + product.codigo); else if (prod.modelo == product.modelo) return BadRequest("Erro: O modelo informado já existe: " + product.modelo); } } db.Products.Add(product); db.SaveChanges(); return CreatedAtRoute("DefaultApi", new { id = product.Id }, product); }
public IHttpActionResult PutProduct(int id, Product product) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != product.Id) { return BadRequest("O id informado não corresponde ao id do modelo."); } //Não deverá permitir a alteração do código e/ou do modelo //para um valor que já exista na tabela var productsCode = db.Products.Where(p => (p.codigo == product.codigo || p.modelo == product.modelo) && p.Id != id); List<Product> productsRes = productsCode.ToList(); if (productsRes.Count > 0) { foreach (Product prod in productsRes) { if (prod.codigo == product.codigo) return BadRequest("Erro: O codigo informado já existe: " + product.codigo); else if (prod.modelo == product.modelo) return BadRequest("Erro: O modelo informado já existe: " + product.modelo); } } db.Entry(product).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!ProductExists(id)) { return NotFound(); } else { throw; } } Product productUpdated = db.Products.Find(id); return Ok(productUpdated); }