Esempio n. 1
0
        /// <summary>
        /// Private helper method to perform a new search or maintain a previous search through
        /// pagination and filter changes
        /// </summary>
        /// <param name="workouts">The base workout query result</param>
        /// <param name="search">The WorkoutSearch object containing the parameters to search</param>
        /// <param name="sortBy">The passed sort string if it exists, else null</param>
        /// <param name="page">The passed page param if it exists, else null</param>
        /// <param name="session">The Session object to get or set variables from/to</param>
        /// <param name="viewBag">The viewBag object to pass the set variables back to the view with</param>
        /// <returns>The searched workouts</returns>
        public static IQueryable <workout> doSearch(IQueryable <workout> workouts, WorkoutSearch search, string sortBy, int?page, HttpSessionStateBase session, dynamic viewBag)
        {
            if (page != null || !String.IsNullOrEmpty(sortBy))
            {
                search = SessionVariableManager.setSearchFromSession(session, search);
            }
            else
            {
                SessionVariableManager.setSessionFromSearch(session, search);
            }

            if (!String.IsNullOrEmpty(search.name))
            {
                workouts = workouts.Where(w => w.name.Contains(search.name));
            }
            if (!String.IsNullOrEmpty(search.category))
            {
                workouts = workouts.Where(w => w.category.name.Contains(search.category));
            }
            if (!String.IsNullOrEmpty(search.username))
            {
                workouts = workouts.Where(w => w.user.username.Contains(search.username));
            }
            if (!String.IsNullOrEmpty(search.dateAdded))
            {
                string[] dateArrayString = search.dateAdded.Split('-');
                int      year            = Convert.ToInt16(dateArrayString[0]);
                int      month           = Convert.ToInt16(dateArrayString[1]);
                int      day             = Convert.ToInt16(dateArrayString[2]);

                workouts = workouts.Where(w =>
                                          w.created_at.Year == year &&
                                          w.created_at.Month == month &&
                                          w.created_at.Day == day);
            }
            return(workouts);
        }
Esempio n. 2
0
        /// <summary>
        /// Private helper method set and return the sorted workouts
        /// </summary>
        /// <param name="workouts">The base workout query result</param>
        /// <param name="sortBy">Indicates the sort order</param>
        /// <param name="session">The Session object to get or set variables from/to</param>
        /// <param name="viewBag">The viewBag object to pass the set variables back to the view with</param>
        /// <returns>The sorted workouts</returns>
        public static IQueryable <workout> doSort(IQueryable <workout> workouts, string sortBy, HttpSessionStateBase session, dynamic viewBag)
        {
            if (!String.IsNullOrEmpty(sortBy))
            {
                SessionVariableManager.setSessionFromSort(session, sortBy);
            }
            else
            {
                sortBy = SessionVariableManager.setSortFromSession(session, sortBy);
            }

            viewBag.NameSortParam        = (sortBy == "name") ? "name_desc" : "name";
            viewBag.DateSortParam        = (sortBy == "date") ? "date_desc" : "date";
            viewBag.CategorySortParam    = (sortBy == "category") ? "category_desc" : "category";
            viewBag.UserSortParam        = (sortBy == "user") ? "user_desc" : "user";
            viewBag.DescriptionSortParam = (sortBy == "description") ? "description_desc" : "description";

            switch (sortBy)
            {
            case "name":
                workouts = workouts.OrderBy(w => w.name);
                break;

            case "name_desc":
                workouts = workouts.OrderByDescending(w => w.name);
                break;

            case "date":
                workouts = workouts.OrderBy(w => w.created_at);
                break;

            case "date_desc":
                workouts = workouts.OrderByDescending(w => w.created_at);
                break;

            case "category":
                workouts = workouts.OrderBy(w => w.category.name);
                break;

            case "category_desc":
                workouts = workouts.OrderByDescending(w => w.category.name);
                break;

            case "user":
                workouts = workouts.OrderBy(w => w.user.username);
                break;

            case "user_desc":
                workouts = workouts.OrderByDescending(w => w.user.username);
                break;

            case "description":
                workouts = workouts.OrderBy(w => w.description);
                break;

            case "description_desc":
                workouts = workouts.OrderByDescending(w => w.description);
                break;

            default:
                workouts = workouts.OrderByDescending(w => w.name);
                break;
            }

            return(workouts);
        }