master
 1using System;
 2using System.Collections.Generic;
 3using MVPtoMVVM.domain;
 4using System.Linq;
 5
 6namespace MVPtoMVVM.repositories
 7{
 8    public class TodoItemRepository : ITodoItemRepository
 9    {
10        private static readonly List<TodoItem> items = new List<TodoItem>();
11        private static int totalItems;
12
13        public TodoItemRepository()
14        {
15            if (!items.Any())
16                Save(new TodoItem {Description = "First One", DueDate = DateTime.Today});
17        }
18
19        public void Save(TodoItem item)
20        {
21            if (item.Id == 0)
22                AddItem(item);
23            else
24            {
25                UpdateItem(item);
26            }
27        }
28
29        public TodoItem Get(int id)
30        {
31            return items.FirstOrDefault(x => x.Id == id);
32        }
33
34        public IEnumerable<TodoItem> GetAll()
35        {
36            return items.AsEnumerable();
37        }
38
39        public void Delete(TodoItem item)
40        {
41            Delete(item.Id);
42        }
43
44        public void Delete(int todoItemId)
45        {
46            var repoItem = Get(todoItemId);
47            items.Remove(repoItem);
48        }
49
50        private void UpdateItem(TodoItem item)
51        {
52            var oldItem = items.Single(x => x.Id == item.Id);
53            items.Remove(oldItem);
54            items.Add(item);
55        }
56
57        private void AddItem(TodoItem item)
58        {
59            totalItems++;
60            item.Id = totalItems;
61            items.Add(item);
62        }
63
64    }
65}