// POST api/Messages public HttpResponseMessage PostMessage(Message message) { if (ModelState.IsValid) { message.SubmissionDate = DateTime.Now; db.Messages.Add(message); db.SaveChanges(); //Route message to a recipient of the desired type. var possibleRecipients = db.Users.Where(a => a.Type == message.Destination).ToList(); if (possibleRecipients.Count() != 0) { var rand = new Random(); var recipient = possibleRecipients.ElementAt(rand.Next(possibleRecipients.Count())); //Make new unread message assignment and save. MessageAssignment theNewAssignment = new MessageAssignment(); theNewAssignment.MessageID = message.ID; theNewAssignment.UserID = recipient.ID; theNewAssignment.Unread = true; db.MessageAssignments.Add(theNewAssignment); db.SaveChanges(); } HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = message.ID })); return response; } else { return Request.CreateResponse(HttpStatusCode.BadRequest); } }
// PUT api/Messages/5 public HttpResponseMessage PutMessage(int id, Message message) { if (ModelState.IsValid && id == message.ID) { db.Entry(message).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { return Request.CreateResponse(HttpStatusCode.NotFound); } return Request.CreateResponse(HttpStatusCode.OK, message); } else { return Request.CreateResponse(HttpStatusCode.BadRequest); } }