/// <summary> /// Creates a new todo item for the current user. /// </summary> public async Task <IHttpActionResult> Post(TodoItemCreate value) { if (value == null || string.IsNullOrWhiteSpace(value.Title)) { return(BadRequest("Title is required")); } if (value == null || string.IsNullOrWhiteSpace(value.CategoryId)) { return(BadRequest("CategoryId is required")); } // Create a new category via the Taxonomy Web API if requested. if (!string.IsNullOrWhiteSpace(value.NewCategoryName)) { var client = await CategoryController.GetTaxonomyClient(this.User); var newCategory = new Category { Name = value.NewCategoryName, IsPrivate = value.NewCategoryIsPrivate }; var newCategoryRequest = new HttpRequestMessage(HttpMethod.Post, SiteConfiguration.TaxonomyWebApiRootUrl + "api/category"); newCategoryRequest.Content = new JsonContent(newCategory); var newCategoryResponse = await client.SendAsync(newCategoryRequest); newCategoryResponse.EnsureSuccessStatusCode(); var newCategoryResponseString = await newCategoryResponse.Content.ReadAsStringAsync(); var category = JsonConvert.DeserializeObject <Category>(newCategoryResponseString); value.CategoryId = category.Id; } var userId = this.User.GetUniqueIdentifier(); var data = new TodoItemData(value.Title, value.CategoryId, userId); database.Add(data); return(Ok()); }