예제 #1
0
        /// <param name="sortBy"></param>
        /// <param name="sortOrder"></param>
        /// <param name="variable">
        /// Mandatory when <paramref name="sortBy" /> is either
        /// <see cref="TaskSorting.ProcessVariable"/>, <see cref="TaskSorting.ExecutionVariable"/>, <see cref="TaskSorting.TaskVariable"/>, <see cref="TaskSorting.CaseExecutionVariable"/> or <see cref="TaskSorting.CaseInstanceVariable"/>
        /// </param>
        public TaskQuery Sort(TaskSorting sortBy, SortOrder sortOrder = SortOrder.Ascending, VariableOrder variable = null)
        {
            Dictionary <string, object> parameters = null;

            TaskSorting[] variableSorting = new[] {
                TaskSorting.ProcessVariable,
                TaskSorting.ExecutionVariable,
                TaskSorting.TaskVariable,
                TaskSorting.CaseExecutionVariable,
                TaskSorting.CaseInstanceVariable
            };

            bool isVariableSorting = variableSorting.Contains(sortBy);

            if (isVariableSorting ^ variable != null)
            {
                throw new ArgumentException("Variable is mandatory when sortBy is either processVariable, executionVariable, taskVariable, caseExecutionVariable or caseInstanceVariable.", nameof(variable));
            }

            if (variable != null)
            {
                parameters = new Dictionary <string, object>()
                {
                    ["variable"] = variable.VariableName,
                    ["type"]     = variable.Type.ToString(),
                };
            }

            Sorting.Add(new SortingInfo <TaskSorting>()
            {
                SortBy = sortBy, SortOrder = sortOrder, Parameters = parameters
            });

            return(this);
        }
        public virtual ActionResult ListConfig(bool showProject = false, TaskSorting sorting = TaskSorting.Title)
        {
            var config = new DataTableConfig();
            config.Searching = true;
            config.PageLength = 25;
            config.SetupServerDataSource(Url.Action(MVC.Tasks.ListData()), FormMethod.Post);
            config.Columns = new List<DataTableConfig.Column>(columns);
            config.Columns[(int)TaskListColumns.ProjectName].Visible = showProject;
            config.Columns[(int)TaskListColumns.Delete].Visible = this.Can(MVC.Tasks.Delete());

            switch (sorting)
            {
                case TaskSorting.Title:
                    {
                        config.AddOrder((int)TaskListColumns.Title, DataTables.Mvc.Column.OrderDirection.Ascendant);
                        break;
                    }
                case TaskSorting.Priority:
                    {
                        config.AddOrder((int)TaskListColumns.Priority, DataTables.Mvc.Column.OrderDirection.Descendant);
                        break;
                    }
            }

            var json = JsonConvert.SerializeObject(config);
            return Content(json, "application/json");
        }