Exemple #1
0
        // GET: /Action/
        public ViewResult Index(string sortOrder, string currentFilter, string searchString, int?page)
        {
            ViewBag.ProjectSortParm      = (sortOrder == "proj") ? "proj_desc" : "proj";
            ViewBag.TaskSortParm         = (sortOrder == "task") ? "task_desc" : "task";
            ViewBag.ActionSortParm       = (sortOrder == "acti") ? "acti_desc" : "acti";
            ViewBag.DateSortParm         = (sortOrder == "date") ? "date_desc" : "date";
            ViewBag.EstimateSortParm     = (sortOrder == "esti") ? "esti_desc" : "esti";
            ViewBag.IsPersistentSortParm = (sortOrder == "pers") ? "pers_desc" : "pers";
            ViewBag.StatusSortParm       = (sortOrder == "stat") ? "stat_desc" : "stat";
            ViewBag.PrioritySortParm     = (sortOrder == "prio") ? "prio_desc" : "prio";
            ViewBag.LastPomodoroSortParm = (sortOrder == "last") ? "last_desc" : "last";
            ViewBag.PomodorosSortParm    = (sortOrder == "pomo") ? "pomo_desc" : "pomo";
            ViewBag.EffortSortParm       = (sortOrder == "effo") ? "effo_desc" : "effo";

            var actions = db.GetMyActions(User);

            //stores the current filter info for the pagination control
            RouteValueDictionary dict = new RouteValueDictionary();

            //initilised with the current sort order
            dict["CurrentSort"] = sortOrder;

            //status filter
            const string STATUS_PREFIX = "status-";

            string[] statusFilter = GetArrayParamsFromRequest(Request.QueryString, STATUS_PREFIX);
            if (statusFilter.Length > 0)
            {
                actions = actions.ToList().AsQueryable()
                          .Where(a => statusFilter
                                 .Any(sf => sf.ToLower() == a.CalculatedStatus.ToString().ToLower())
                                 );
                dict.AddFilterArrayToRouteValueDictionary(statusFilter, STATUS_PREFIX);
            }

            //tag filter
            const string TAG_PREFIX = "tag-";

            string[] tagFilter = GetArrayParamsFromRequest(Request.QueryString, TAG_PREFIX);
            if (tagFilter.Length > 0)
            {
                actions = actions.ToList().AsQueryable()
                          .Where(a => tagFilter
                                 .All(tf => a.OwnAndInheritedTags //all tags in the filter
                                      .Select(tc => tc.Code)      //(only tag code list)
                                      .Contains(tf))              //contained in the item tags
                                 );
                //AND Tag Filter
                //actions = actions.ToList().AsQueryable()
                //    .Where(a => tagFilter
                //        .All(tf => a.OwnAndInheritedTags    //all tags in the filter
                //            .Select(tc => tc.Code)          //(only tag code list)
                //                .Contains(tf))              //contained in the item tags
                //);
                dict.AddFilterArrayToRouteValueDictionary(tagFilter, TAG_PREFIX);
            }

            //priority filter
            const string PRIORITY_PREFIX = "priority-";

            string[] priorityFilter = GetArrayParamsFromRequest(Request.QueryString, PRIORITY_PREFIX);
            if (priorityFilter.Length > 0)
            {
                actions = actions.ToList().AsQueryable()
                          .Where(a => priorityFilter
                                 .Any(pf => pf.ToLower() == a.Priority.ToString().ToLower())
                                 );
                dict.AddFilterArrayToRouteValueDictionary(priorityFilter, PRIORITY_PREFIX);
            }

            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }

            ViewBag.IsFiltered = string.IsNullOrEmpty(Request.QueryString["filtering"]) == false ||
                                 (statusFilter.Length > 0) || (priorityFilter.Length > 0) || (tagFilter.Length > 0);
            ViewBag.RouteFiltersForPagination = dict;

            ViewBag.StatusFilter   = statusFilter;
            ViewBag.PriorityFilter = priorityFilter;
            ViewBag.TagFilter      = tagFilter;
            //ViewBag.CurrentFilter = searchString;

            ViewBag.AllTags = db.GetMyTags(User).ToArray();

            switch (sortOrder)
            {
            case "proj":
                actions = actions.OrderBy(a => a.Task.Project.Code).ThenBy(a => a.Task.Code).ThenBy(a => a.Name);
                break;

            case "proj_desc":
                actions = actions.OrderByDescending(a => a.Task.Project.Code).ThenByDescending(a => a.Task.Code).ThenByDescending(a => a.Name);
                break;

            case "task":
                actions = actions.OrderBy(a => a.Task.Code).ThenBy(a => a.Name);
                break;

            case "task_desc":
                actions = actions.OrderByDescending(a => a.Task.Code).ThenByDescending(a => a.Name);
                break;

            case "acti":
                actions = actions.OrderBy(a => a.Name);
                break;

            case "acti_desc":
                actions = actions.OrderByDescending(a => a.Name);
                break;

            case "esti":
                actions = actions.OrderBy(a => a.Estimate);
                break;

            case "esti_desc":
                actions = actions.OrderByDescending(a => a.Estimate);
                break;

            case "pers":
                actions = actions.ToList().AsQueryable().OrderBy(a => a.IsPersistent);
                break;

            case "pers_desc":
                actions = actions.ToList().AsQueryable().OrderByDescending(a => a.IsPersistent);
                break;

            case "last":
                actions = actions.ToList().AsQueryable().OrderBy(t => t.LastPomodoro.ToDateTicksOrZero());
                break;

            case "last_desc":
                actions = actions.ToList().AsQueryable().OrderByDescending(t => t.LastPomodoro.ToDateTicksOrZero());
                break;

            case "pomo":
                actions = actions.ToList().AsQueryable().OrderBy(a => a.CompletedPomodorosCount);
                break;

            case "pomo_desc":
                actions = actions.ToList().AsQueryable().OrderByDescending(a => a.CompletedPomodorosCount);
                break;

            case "date":
                actions = actions.ToList().AsQueryable().OrderBy(a => a.DeadlineOrEndDate.ToTicksOrZero());
                break;

            case "date_desc":
                actions = actions.ToList().AsQueryable().OrderByDescending(a => a.DeadlineOrEndDate.ToTicksOrZero());
                break;

            case "stat":
                actions = actions.ToList().AsQueryable().OrderBy(a => a.CalculatedStatus);
                break;

            case "stat_desc":
                actions = actions.ToList().AsQueryable().OrderByDescending(a => a.CalculatedStatus);
                break;

            case "prio":
                actions = actions.OrderBy(a => a.Priority);
                break;

            case "prio_desc":
                actions = actions.OrderByDescending(a => a.Priority);
                break;

            case "effo":
                actions = actions.ToList().AsQueryable().OrderBy(t => t.Effort.ToDecimalOrZero()).ThenBy(t => t.CompletedPomodorosCount);
                break;

            case "effo_desc":
                actions = actions.ToList().AsQueryable().OrderByDescending(t => t.Effort.ToDecimalOrZero()).ThenByDescending(t => t.CompletedPomodorosCount);
                break;

            default:
                actions = actions.ToList().AsQueryable().OrderBy(a => a.Status).ThenByDescending(a => a.LastPomodoro.ToDateTicksOrZero());
                break;
            }
            int pageSize   = 20;
            int pageNumber = (page ?? 1);

            return(View(actions.ToPagedList(pageNumber, pageSize)));
        }
Exemple #2
0
        // GET: /Task/
        public ViewResult Index(string sortOrder, string currentFilter, string searchString, int?page)
        {
            ViewBag.ProjectSortParm      = (sortOrder == "proj") ? "proj_desc" : "proj";
            ViewBag.CodeSortParm         = (sortOrder == "code") ? "code_desc" : "code";
            ViewBag.NameSortParm         = (sortOrder == "name") ? "name_desc" : "name";
            ViewBag.EndDateSortParm      = (sortOrder == "date") ? "date_desc" : "date";
            ViewBag.EstimateSortParm     = (sortOrder == "esti") ? "esti_desc" : "esti";
            ViewBag.StatusSortParm       = (sortOrder == "stat") ? "stat_desc" : "stat";
            ViewBag.PrioritySortParm     = (sortOrder == "prio") ? "prio_desc" : "prio";
            ViewBag.LastPomodoroSortParm = (sortOrder == "last") ? "last_desc" : "last";
            ViewBag.PomodorosSortParm    = (sortOrder == "pomo") ? "pomo_desc" : "pomo";
            ViewBag.ProgressSortParm     = (sortOrder == "prog") ? "prog_desc" : "prog";
            ViewBag.EffortSortParm       = (sortOrder == "effo") ? "effo_desc" : "effo";
            ViewBag.ActionsSortParm      = (sortOrder == "acti") ? "acti_desc" : "acti";

            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }

            //var tasks = db.Tasks.Include(t => t.Project);
            var tasks = db.GetMyTasks(User);

            //stores the current filter info for the pagination control
            RouteValueDictionary dict = new RouteValueDictionary();

            //initilised with the current sort order
            dict["CurrentSort"] = sortOrder;

            //status filter
            const string STATUS_PREFIX = "status-";

            string[] statusFilter = GetArrayParamsFromRequest(Request.QueryString, STATUS_PREFIX);
            if (statusFilter.Length > 0)
            {
                tasks = tasks.ToList().AsQueryable()
                        .Where(t => statusFilter
                               .Any(sf => sf.ToLower() == t.CalculatedStatus.ToString().ToLower())
                               );
                dict.AddFilterArrayToRouteValueDictionary(statusFilter, STATUS_PREFIX);
            }

            //tag filter
            const string TAG_PREFIX = "tag-";

            string[] tagFilter = GetArrayParamsFromRequest(Request.QueryString, TAG_PREFIX);
            if (tagFilter.Length > 0)
            {
                //OR Tag Filter
                tasks = tasks.ToList().AsQueryable()
                        .Where(t => tagFilter
                               .Any(tf => t.OwnAndInheritedTags //all tags in the filter
                                    .Select(tc => tc.Code)      //(only tag code list)
                                    .Contains(tf))              //contained in the item tags
                               );
                //AND Tag Filter
                //tasks = tasks.ToList().AsQueryable()
                //    .Where(t => tagFilter
                //        .All(tf => t.OwnAndInheritedTags    //all tags in the filter
                //            .Select(tc => tc.Code)          //(only tag code list)
                //                .Contains(tf))              //contained in the item tags
                //);
                dict.AddFilterArrayToRouteValueDictionary(tagFilter, TAG_PREFIX);
            }

            //priority filter
            const string PRIORITY_PREFIX = "priority-";

            string[] priorityFilter = GetArrayParamsFromRequest(Request.QueryString, PRIORITY_PREFIX);
            if (priorityFilter.Length > 0)
            {
                tasks = tasks.ToList().AsQueryable()
                        .Where(t => priorityFilter
                               .Any(pf => pf.ToLower() == t.Priority.ToString().ToLower())
                               );
                dict.AddFilterArrayToRouteValueDictionary(priorityFilter, PRIORITY_PREFIX);
            }

            ViewBag.IsFiltered = string.IsNullOrEmpty(Request.QueryString["filtering"]) == false ||
                                 (statusFilter.Length > 0) || (priorityFilter.Length > 0) || (tagFilter.Length > 0);
            ViewBag.RouteFiltersForPagination = dict;

            ViewBag.StatusFilter   = statusFilter;
            ViewBag.PriorityFilter = priorityFilter;
            ViewBag.TagFilter      = tagFilter;
            //ViewBag.CurrentFilter = searchString;

            ViewBag.AllTags = db.GetMyTags(User).ToArray();

            orderBySortParam(ref tasks, sortOrder);

            int pageSize   = 20;
            int pageNumber = (page ?? 1);

            return(View(tasks.ToPagedList(pageNumber, pageSize)));
        }
Exemple #3
0
        // GET: /Project/
        public ViewResult Index(string sortOrder, string currentFilter, string searchString, int?page)
        {
            ViewBag.CodeSortParm         = (sortOrder == "code") ? "code_desc" : "code";
            ViewBag.NameSortParm         = (sortOrder == "name") ? "name_desc" : "name";
            ViewBag.LastPomodoroSortParm = (sortOrder == "last") ? "last_desc" : "last";
            ViewBag.PomodorosSortParm    = (sortOrder == "pomo") ? "pomo_desc" : "pomo";
            ViewBag.ProgressSortParm     = (sortOrder == "prog") ? "prog_desc" : "prog";
            ViewBag.EffortSortParm       = (sortOrder == "effo") ? "effo_desc" : "effo";
            ViewBag.StatusSortParm       = (sortOrder == "stat") ? "stat_desc" : "stat";
            ViewBag.CreationDateSortParm = (sortOrder == "crea") ? "crea_desc" : "crea";
            ViewBag.TasksSortParm        = (sortOrder == "task") ? "task_desc" : "task";
            ViewBag.ActionsSortParm      = (sortOrder == "acti") ? "acti_desc" : "acti";

            var projects = db.GetMyProjects(User);

            //stores the current filter info for the pagination control
            RouteValueDictionary dict = new RouteValueDictionary();

            //initilised with the current sort order
            dict["CurrentSort"] = sortOrder;

            if (Request != null) //avoid null reference exceptions when testing
            {
                //status filter
                const string STATUS_PREFIX = "status-";
                string[]     statusFilter  = GetArrayParamsFromRequest(Request.QueryString, STATUS_PREFIX);
                if (statusFilter.Length > 0)
                {
                    projects = projects.ToList().AsQueryable()
                               .Where(p => statusFilter
                                      .Any(sf => sf.ToLower() == p.CalculatedStatus.ToString().ToLower())
                                      );
                    dict.AddFilterArrayToRouteValueDictionary(statusFilter, STATUS_PREFIX);
                }

                //tag filter
                const string TAG_PREFIX = "tag-";
                string[]     tagFilter  = GetArrayParamsFromRequest(Request.QueryString, TAG_PREFIX);
                if (tagFilter.Length > 0)
                {
                    projects = projects.ToList().AsQueryable()
                               .Where(p => tagFilter
                                      .Any(tf => p.OwnAndInheritedTags //all tags in the filter
                                           .Select(tc => tc.Code)      //(only tag code list)
                                           .Contains(tf))              //contained in the item tags
                                      );
                    //AND Tag Filter
                    //projects = projects.ToList().AsQueryable()
                    //    .Where(p => tagFilter
                    //        .All(tf => p.OwnAndInheritedTags    //all tags in the filter
                    //            .Select(tc => tc.Code)          //(only tag code list)
                    //                .Contains(tf))              //contained in the item tags
                    //);
                    dict.AddFilterArrayToRouteValueDictionary(tagFilter, TAG_PREFIX);
                }

                ViewBag.IsFiltered = string.IsNullOrEmpty(Request.QueryString["filtering"]) == false ||
                                     (statusFilter.Length > 0) || (tagFilter.Length > 0);
                ViewBag.RouteFiltersForPagination = dict;

                ViewBag.StatusFilter = statusFilter;
                ViewBag.TagFilter    = tagFilter;
            }
            //if (searchString != null)
            //{
            //    page = 1;
            //}
            //else
            //{
            //    searchString = currentFilter;
            //}
            //ViewBag.CurrentFilter = searchString;

            ViewBag.AllTags = db.GetMyTags(User).ToArray();

            switch (sortOrder)
            {
            case "code":
                projects = projects.OrderBy(p => p.Code);
                break;

            case "code_desc":
                projects = projects.OrderByDescending(p => p.Code);
                break;

            case "name":
                projects = projects.OrderBy(p => p.Name);
                break;

            case "name_desc":
                projects = projects.OrderByDescending(p => p.Name);
                break;

            case "last":
                projects = projects.ToList().AsQueryable().OrderBy(p => p.LastPomodoro.ToDateTicksOrZero());
                break;

            case "last_desc":
                projects = projects.ToList().AsQueryable().OrderByDescending(p => p.LastPomodoro.ToDateTicksOrZero());
                break;

            case "pomo":
                projects = projects.ToList().AsQueryable().OrderBy(p => p.CompletedPomodorosCount);
                break;

            case "pomo_desc":
                projects = projects.ToList().AsQueryable().OrderByDescending(p => p.CompletedPomodorosCount);
                break;

            case "prog":
                projects = projects.ToList().AsQueryable().OrderBy(p => p.Progress.ToDecimalOrZero());
                break;

            case "prog_desc":
                projects = projects.ToList().AsQueryable().OrderByDescending(p => p.Progress.ToDecimalOrZero());
                break;

            case "effo":
                projects = projects.ToList().AsQueryable().OrderBy(p => p.Effort.ToDecimalOrZero()).ThenBy(p => p.CompletedPomodorosCount);
                break;

            case "effo_desc":
                projects = projects.ToList().AsQueryable().OrderByDescending(p => p.Effort.ToDecimalOrZero()).ThenByDescending(p => p.CompletedPomodorosCount);
                break;

            case "stat":
                projects = projects.ToList().AsQueryable().OrderBy(p => p.CalculatedStatus);
                break;

            case "stat_desc":
                projects = projects.ToList().AsQueryable().OrderByDescending(p => p.CalculatedStatus);
                break;

            case "crea":
                projects = projects.ToList().AsQueryable().OrderBy(p => p.CreationDateLocal.ToTicksOrZero());
                break;

            case "crea_desc":
                projects = projects.ToList().AsQueryable().OrderByDescending(p => p.CreationDateLocal.ToTicksOrZero());
                break;

            case "task":
                projects = projects.ToList().AsQueryable().OrderBy(p => p.Tasks.Count());
                break;

            case "task_desc":
                projects = projects.ToList().AsQueryable().OrderByDescending(p => p.Tasks.Count());
                break;

            case "acti":
                projects = projects.ToList().AsQueryable().OrderBy(p => p.GetActions().Count());
                break;

            case "acti_desc":
                projects = projects.ToList().AsQueryable().OrderByDescending(p => p.GetActions().Count());
                break;

            default:
                projects = projects.ToList().AsQueryable().OrderBy(p => p.Status).ThenByDescending(p => p.LastPomodoro.ToDateTicksOrZero());
                break;
            }
            int pageSize   = 20;
            int pageNumber = (page ?? 1);

            return(View(projects.ToPagedList(pageNumber, pageSize)));
        }