public HttpResponseMessage Add(int id, [FromBody] Vote vote) { var response = this.PerformOperation(() => { var context = new CodeJewelsContext(); using (context) { var jewel = context.CodeJewels.Find(id); if (jewel == null) { throw new ArgumentNullException("Cannot find jewel"); } jewel.Votes.Add(vote); context.Votes.Add(vote); context.SaveChanges(); if (jewel.Votes.Count > 0) { double averageVote = jewel.Votes.Average(v => v.Value); if (averageVote < MIN_RATING) { context.Votes.Remove(vote); context.CodeJewels.Remove(jewel); context.SaveChanges(); } } return vote; } }); return response; }
public HttpResponseMessage Vote(int id, int voteValue) { if(voteValue != 1 && voteValue != -1) { return Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid vote value"); } CodeJewelsContext context = new CodeJewelsContext(); using (context) { try { var jewel = context.Jewels.Find(id); jewel.Rating += voteValue; if(jewel.Rating < MIN_ACCEPTABLE_RATING) { context.Jewels.Remove(jewel); } context.SaveChanges(); return Request.CreateResponse(HttpStatusCode.Created); } catch (Exception ex) { return Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message); } } }
public HttpResponseMessage PostJewel([FromBody] Jewel value) { CodeJewelsContext context = new CodeJewelsContext(); using (context) { context.Jewels.Add(value); context.SaveChanges(); return Request.CreateResponse(HttpStatusCode.Created); } }
public HttpResponseMessage AddCodeJewel([FromBody] CodeJewel jewel) { var response = this.PerformOperation(() => { var context = new CodeJewelsContext(); using (context) { context.CodeJewels.Add(jewel); context.SaveChanges(); return jewel; } }); return response; }