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}