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)); }
public TodoListDetailViewmodel(int todoListId, string title, ICollection <TodoItemSummaryViewmodel> items, bool hideCompletedItems, TodoListSortFields orderByField) { Items = items; TodoListId = todoListId; Title = title; HideCompletedItems = hideCompletedItems; OrderByField = orderByField; }
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)); }