Esempio n. 1
0
        public static TodoListDetailViewmodel Create(
            TodoList todoList,
            bool hideCompletedItems,
            TodoListSortFields orderByField)
        {
            IEnumerable <TodoItem> Order(IEnumerable <TodoItem> unorderedItems)
            {
                switch (orderByField)
                {
                case TodoListSortFields.Importance:
                    return(unorderedItems.OrderBy(item => item.Importance));

                case TodoListSortFields.Rank:
                    return(unorderedItems.OrderBy(item => item.Rank));

                default:
                    return(unorderedItems);
                }
            }

            var items = Order(todoList.Items
                              .Where(i => !hideCompletedItems || !i.IsDone))
                        .Select(TodoItemSummaryViewmodelFactory.Create)
                        .ToList();

            return(new TodoListDetailViewmodel(todoList.TodoListId, todoList.Title, items, hideCompletedItems, orderByField));
        }
Esempio n. 2
0
 public TodoListDetailViewmodel(int todoListId,
                                string title,
                                ICollection <TodoItemSummaryViewmodel> items,
                                bool hideCompletedItems,
                                TodoListSortFields orderByField)
 {
     Items              = items;
     TodoListId         = todoListId;
     Title              = title;
     HideCompletedItems = hideCompletedItems;
     OrderByField       = orderByField;
 }
Esempio n. 3
0
        public async Task <IActionResult> Detail(int todoListId, bool hideCompletedItems, TodoListSortFields orderByField)
        {
            var todoList  = dbContext.SingleTodoList(todoListId);
            var viewmodel = TodoListDetailViewmodelFactory.Create(todoList, hideCompletedItems, orderByField);

            var userNames = viewmodel.Items
                            .Select(i => i.ResponsibleParty.Email)
                            .Distinct()
                            .ToDictionary(i => i, i => gravatarService.GetUserFullName(i));

            foreach (var todoItem in viewmodel.Items)
            {
                todoItem.ResponsibleParty.FullName = await userNames[todoItem.ResponsibleParty.Email];
            }

            return(View(viewmodel));
        }