private PagedData<Task> GetSortedOnServerTasks(IQuery<Task, TaskInclude, TaskFilter, TaskSorter> query, int pageSize, int pageNumber, TaskListColumns column, SortDirection direction)
        {
            query.WithPaging(pageSize, pageNumber);

            switch (column)
            {
                case TaskListColumns.Title:
                    {
                        query.Sort(x => x.ByTitle(direction));
                        break;
                    }
                case TaskListColumns.Date:
                    {
                        query.Sort(x => x.ByDateModified(direction));
                        break;
                    }
                case TaskListColumns.Type:
                    {
                        query.Sort(x => x.ByType(direction));
                        break;
                    }
                case TaskListColumns.Size:
                    {
                        query.Sort(x => x.BySize(direction));
                        break;
                    }
                case TaskListColumns.Urgency:
                    {
                        query.Sort(x => x.ByUrgency(direction));
                        break;
                    }
                case TaskListColumns.EstimatedPrice:
                    {
                        query.Sort(x => x.ByEstimatedPrice(direction));
                        break;
                    }
                case TaskListColumns.Deadline:
                    {
                        query.Sort(x => x.ByDeadline(direction));
                        break;
                    }
            }

            return TaskService.GetAll(query);
        }
        private PagedData<Task> GetSortedOnClientTasks(IQuery<Task, TaskInclude, TaskFilter, TaskSorter> query, int pageSize, int pageNumber, TaskListColumns column, SortDirection direction)
        {
            var allData = TaskService.GetAll(query);
            var sortedData = allData.Data.AsEnumerable();
            switch (column)
            {
                case TaskListColumns.Priority:
                    {
                        sortedData = sortedData.SortBy(direction, x => x.Priority);
                        break;
                    }
                case TaskListColumns.Hours:
                    {
                        sortedData = sortedData.SortBy(direction, x => x.Hours());
                        break;
                    }
            }

            return new PagedData<Task>(
                sortedData.Skip(pageNumber * pageSize).Take(pageSize).ToList(),
                pageSize,
                pageNumber,
                allData.TotalItems);
        }