示例#1
0
        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")
            });
        }
示例#2
0
        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."
            }));
        }