public async Task <IHttpActionResult> PostAsync(Item item)
        {
            if (!item.IsValidForCreating())
            {
                return(BadRequest());
            }

            var newItem = _itemCreator.SetItem(item);

            await _repository.AddAsync(newItem);

            var location = _urlGenerator.GetItemUrl(newItem.Id);

            return(Created(location, newItem));
        }