public IHttpActionResult PutInsumo(int id, Insumo insumo) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != insumo.Id) { return BadRequest(); } db.Entry(insumo).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!InsumoExists(id)) { return NotFound(); } else { throw; } } return StatusCode(HttpStatusCode.NoContent); }
public IHttpActionResult PutInsumo(int id, Insumo insumo) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != insumo.Id) { return BadRequest(); } //FAQ: No se puede usar este tipo de busqueda porque define un model insumo y al modificar la entrada //a la base de datos, da error de uso de entidad duplicada //var insumoOld = db.Insumos.Find(id).Nombre; //Expresion LinQ //iafar: almaceno el nombre anterior del insumo para buscar el trabajo del mismo nombre y modificarlo var nomViejo = (from i in db.Insumos where i.Id == id select i.Nombre) .First(); //iafar: modifica el estado del insumo de la base de datos //no se debe usar esto antes de guardarlo porque modifica todos los model del tipo insumo db.Entry(insumo).State = EntityState.Modified; try { var trabajo = db.Trabajos .Where(t => t.Nombre == nomViejo) .FirstOrDefault(); trabajo.Nombre = insumo.Nombre; db.Entry(trabajo).State = EntityState.Modified; db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!InsumoExists(id)) { return NotFound(); } else { throw; } } return StatusCode(HttpStatusCode.NoContent); }
public IHttpActionResult PostInsumo(Insumo insumo) { if (!ModelState.IsValid) { return BadRequest(ModelState); } db.Insumos.Add(insumo); db.SaveChanges(); return CreatedAtRoute("DefaultApi", new { id = insumo.Id }, insumo); }