/// <summary> /// Update an existing TODO item. /// </summary> /// <param name="item">The existing item.</param> /// <returns>The existing item with up-to-date data.</returns> public TodoItemDto Put(TodoItemDto item) { try { var itemEntity = item.Map(); itemEntity.Owner = User.Identity.Name; var updatedItem = repository.Update(itemEntity); Hub.Clients.All.itemUpdated(ConnectionId, item); return(updatedItem.Map()); } catch (DbUpdateException) { tracer.TraceEvent(TraceEventType.Error, 1000, "DB update failed."); throw new HttpResponseException(HttpStatusCode.BadRequest); } }
/// <summary> /// Add a new TODO item to the system. /// </summary> /// <param name="item">The new item.</param> /// <returns>The new item with up-to-date data.</returns> public HttpResponseMessage Post(TodoItemDto item) { if (ModelState.IsValid) { var itemEntity = item.Map(); itemEntity.Owner = User.Identity.Name; var newItem = repository.Insert(itemEntity); Hub.Clients.All.itemAdded(ConnectionId, item); var uri = Url.Link("DefaultApi", new { id = item.Id }); var response = Request.CreateResponse <TodoItemDto>(HttpStatusCode.Created, newItem.Map()); response.Headers.Location = new Uri(uri); return(response); } else { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } }