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}