public async Task<IHttpActionResult> PutTodo(long id, Todo todo) { if (!ModelState.IsValid) { return BadRequest(ModelState); } Todo existing = await Todos.FirstOrDefaultAsync(x => x.Id == id); if (existing == null) { return NotFound(); } existing.Name = todo.Name; try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TodoExists(id)) { return NotFound(); } else { throw; } } return StatusCode(HttpStatusCode.NoContent); }
public async Task<IHttpActionResult> ClearCompleted() { var completedTodoIds = await Todos.Where(x => x.State == TodoState.Completed).Select(x => x.Id).ToArrayAsync(); foreach (var id in completedTodoIds) { var todo = new Todo { Id = id }; db.Entry(todo).State = EntityState.Deleted; } await db.SaveChangesAsync(); return Ok(completedTodoIds); }
public async Task<IHttpActionResult> ResetDemo() { var idsToDelete = await Todos.Select(x => x.Id).ToArrayAsync(); foreach (var id in idsToDelete) { var todo = new Todo { Id = id }; db.Entry(todo).State = EntityState.Deleted; } db.Todos.AddRange(new[] { new Todo { Name = "Dryclean cape" }, new Todo { Name = "Clean cave" }, new Todo { Name = "Save Gotham" }, }); await db.SaveChangesAsync(); return Ok(); }
public async Task<IHttpActionResult> PostTodo(Todo todo) { if (!ModelState.IsValid) { return BadRequest(ModelState); } db.Todos.Add(todo); await db.SaveChangesAsync(); return CreatedAtRoute("GetTodo", new { id = todo.Id }, todo); }