/// <summary> /// Homes the specified page number. /// </summary> /// <param name="pageNumber">The page number.</param> /// <returns>IActionResult.</returns> public IActionResult Home(int pageNumber = 1) { var pageSize = this.httpContextAccessor.HttpContext.Session.GetInt32("page_size") ?? 2; var trips = this.unitOfWork.Trips.Get().Include(t => t.Activities).Include(t => t.Destination) .Include(t => t.Accommodation).ToList(); if (this.httpContextAccessor.HttpContext.Session.GetInt32("sort_direction") == (int)SortDirection.Ascending) { trips = this.orderAscending(trips); } else if (this.httpContextAccessor.HttpContext.Session.GetInt32("sort_direction") == (int)SortDirection.Descending) { trips = this.orderDescending(trips); } var totalPages = trips.Count / pageSize; totalPages += trips.Count % pageSize == 0 ? 0 : 1; trips = trips.Skip((pageNumber - 1) * pageSize).Take(pageSize > trips.Count ? trips.Count : pageSize) .ToList(); var viewModel = new VacationListViewModel { PageNumber = pageNumber, PageSize = pageSize, TotalPages = totalPages, Trips = trips }; return(View(viewModel)); }
/// <summary> /// The List view action handling filtering/sorting for the list. /// </summary> /// <param name="values">The values.</param> /// <returns>The List view</returns> public IActionResult List(GridDTO values) { var builder = new VacationGridBuilder(this.httpCtxAccessor.HttpContext.Session, values, nameof(Vacation.Location.Name)); var options = new VacationQueryOptions() { Includes = "Location, Activities.Activity, Accommodation", OrderByDirection = builder.CurrentRoute.SortDirection, PageNumber = builder.CurrentRoute.PageNumber, PageSize = builder.CurrentRoute.PageSize }; options.Sort(builder); var vacationViewModel = new VacationListViewModel() { Vacations = data.Vacations.List(options), CurrentRoute = builder.CurrentRoute, TotalPages = builder.GetTotalPages(data.Vacations.Count) }; return(View(vacationViewModel)); }