public async Task Delete(int todoItemId)
 {
     await Task.Run(() =>
     {
         var item = GetTodoItem(todoItemId);
         TodoItemsData.Remove(item);
     }
                    );
 }
 public async Task Create(TodoItemDTO newItem)
 {
     await Task.Run(() =>
     {
         if (0 != newItem.Id)
         {
             throw new ApplicationException($"Error saving '{newItem.Name}'. Invalid item id '{newItem.Id}'.");
         }
         newItem.Id = NextFreeId();
         TodoItemsData.Add(newItem);
     }
                    );
 }
 public async Task Update(TodoItemDTO editItem)
 {
     await Task.Run(() =>
     {
         var item = TodoItemsData.SingleOrDefault(i => i.Id == editItem.Id);
         if (item != null)
         {
             item.Name       = editItem.Name;
             item.IsComplete = editItem.IsComplete;
             item.Notes      = editItem.Notes;
         }
         else
         {
             throw new ApplicationException($"Error saving '{editItem.Name}'. Item Id #{editItem.Id} not found.");
         }
     }
                    );
 }
 public async Task <TodoItemDTO> Get(int todoItemId)
 {
     return(await Task.Run(() => TodoItemsData.FirstOrDefault(i => i.Id == todoItemId)));
 }
 private TodoItemDTO GetTodoItem(int todoItemId)
 {
     return(TodoItemsData.FirstOrDefault(i => i.Id == todoItemId));
 }
 private long NextFreeId()
 {
     return(TodoItemsData.Max(i => i.Id) + 1);
 }