public IHttpActionResult EditBug(int id, BugPatchBindingModel bug) { if (bug == null) { // empty requets return this.BadRequest(); } var bugToModify = this.data.Bugs.Find(id); if (bugToModify == null) { // missing bug in db return this.BadRequest(); } bool isChanged = false; if (!string.IsNullOrEmpty(bug.Title)) { bugToModify.Title = bug.Title; isChanged = true; } if (bug.Description != null) { bugToModify.Description = bug.Description; isChanged = true; } if (bug.Status != null) { BugStatus status; bool isValidEnum = Enum.TryParse(bug.Status, out status); if (isValidEnum) { bugToModify.Status = status; isChanged = true; } else { return this.BadRequest(); } } if (isChanged) { this.data.SaveChanges(); } return this.Ok(new BugMessageDataModel { // {"Message":"Bug #8 patched."} Message = string.Format("Bug #{0} {1}.", bugToModify.Id, "patched") }); }
public IHttpActionResult EditBug( [FromBody] BugPatchBindingModel bugModel, [FromUri] int id) { if (bugModel == null) { return(this.BadRequest("Bug data required")); } if (!this.ModelState.IsValid) { return(this.BadRequest(ModelState)); } if (bugModel.Status.ToLower() != null && bugModel.Status.ToLower() != "open" && bugModel.Status.ToLower() != "inprogress" && bugModel.Status.ToLower() != "fixed" && bugModel.Status.ToLower() != "closed") { return(this.BadRequest("Invalid model state")); } var bug = this.Data.Bugs.Find(id); if (bug == null) { return(this.NotFound()); } if (bugModel.Title != null) { bug.Title = bugModel.Title; } if (bugModel.Description != null) { bug.Description = bugModel.Description; } if (bugModel.Status != null) { bug.Status = (BugStatus)Enum.Parse(typeof(BugStatus), bugModel.Status, true); } this.Data.Bugs.Update(bug); this.Data.SaveChanges(); return(this.Ok(new { Message = "Bug #" + bug.Id + " patched." })); }