Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        /// <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));
            }
        }