master
1using System;
2using System.Collections.Generic;
3using MVPtoMVVM.domain;
4using MVPtoMVVM.mvp.views;
5using MVPtoMVVM.repositories;
6using System.Linq;
7
8namespace MVPtoMVVM.mvp.presenters
9{
10 public class MvpPresenter : IMvpPresenter
11 {
12 private IMvpView view;
13 private ITodoItemRepository itemRepository;
14
15 public MvpPresenter(ITodoItemRepository itemRepository)
16 {
17 this.itemRepository = itemRepository;
18 }
19
20 public void SetView(IMvpView view)
21 {
22 this.view = view;
23 InitializeView();
24 }
25
26 private void InitializeView()
27 {
28 RefreshItems();
29 }
30
31 private void RefreshItems()
32 {
33 var todoItemPresenters = itemRepository.GetAll().Select(MapFrom);
34 view.ShowTodoItems(todoItemPresenters);
35 }
36
37 private ITodoItemPresenter MapFrom(TodoItem todoItem)
38 {
39 return new TodoItemPresenter(itemRepository) { Description = todoItem.Description, DueDate = todoItem.DueDate, Id = todoItem.Id };
40 }
41
42 public void AddNewItem()
43 {
44 var items = new List<ITodoItemPresenter>(view.GetTodoItems());
45 var newItem = new TodoItemPresenter(itemRepository) {Description = string.Empty, DueDate = DateTime.Today} ;
46 items.Add(newItem);
47 view.ShowTodoItems(items);
48 }
49
50 public void CancelAllChanges()
51 {
52 RefreshItems();
53 }
54
55 public void Remove(int itemId)
56 {
57 view.ShowTodoItems(view.GetTodoItems().Where(x => x.Id != itemId));
58 }
59
60 }
61}