/// <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));
        }