public ActionResult Search(TripLstViewModel model, int page = 1)
        {
            if (!this.ModelState.IsValid)
            {
                return this.View(model);
            }

            if (model.ItemsPerPage < 0 && model.ItemsPerPage > WebApplicationConstants.MaxItemsPerPage)
            {
                model.ItemsPerPage = DefaultItemsPerPage;
            }

            var dayOfLeaving = model.DateOfLeaving;

            int filteredTripsCount = this.TripServices
                .GetDynamicFIltered(model.FromId, model.ToId, model.Passengers, model.DateOfLeaving, model.DriverName, model.MinPrice, model.MaxPrice, model.OrderBy, model.Sort)
                .Count();
            int totalPages = (int)Math.Ceiling(filteredTripsCount / (double)model.ItemsPerPage);
            int tripsToSkip = (page - 1) * model.ItemsPerPage;
            var trips = this.TripServices
                .GetDynamicFIltered(model.FromId, model.ToId, model.Passengers, model.DateOfLeaving, model.DriverName, model.MinPrice, model.MaxPrice, model.OrderBy, model.Sort)
                .Skip(tripsToSkip)
                .Take(model.ItemsPerPage)
                .To<TripListViewModel>()
                .ToList();

            var weekDays = this.DateProvider
                .GetWeekAhedDays(dayOfLeaving)
                .To<WeekDayViewModel>()
                .ToList();

            model.Date = dayOfLeaving;
            model.WeekDays = weekDays;
            model.Trips = trips;
            model.TotalPages = totalPages;
            model.CurrentPage = page;
            model.TotalFoundTrips = filteredTripsCount;
            model.SelectedDateAsString = model.DateOfLeaving.ToString("yyyy-MM-dd");
            this.FillRequiredListInformation(model);

            return this.View("~/Views/Trip/List.cshtml", model);
        }
 private void FillRequiredListInformation(TripLstViewModel viewModel)
 {
     // viewModel.LuggageSpcaceSelectList = this.TripProvider.GetLuggageSpcaceSelectList();
     viewModel.ItemPerPageSelectList = this.TripProvider.GetTripsPerPageSelectList();
     viewModel.TownsSelectList = this.TownProvider.GetCachedTowns();
     viewModel.OrderBySelectListWithSomeNameThatWillNotDoAnyConflictsBecauseMvcIsPlayingAJokeWithAllOfUs = this.TripProvider.GetOrderBySelectList(viewModel.OrderBy);
     viewModel.AvailableSeatsSelectList = this.TripProvider.GetAvailableSeatsSelectList();
 }
        public ActionResult List(string calendarDate, int page = 1)
        {
            TripLstViewModel viewModel = new TripLstViewModel();
            this.FillRequiredListInformation(viewModel);

            var day = this.DateProvider.CovertDateFromStringToDateTime(calendarDate);

            int allTripsCount = this.TripServices.GetForDay(day).Count();
            int totalPages = (int)Math.Ceiling(allTripsCount / (double)DefaultItemsPerPage);
            int tripsToSkip = (page - 1) * DefaultItemsPerPage;
            var trips = this.TripServices
                .GetForDay(day)
                .Skip(tripsToSkip)
                .Take(DefaultItemsPerPage)
                .To<TripListViewModel>()
                .ToList();

            var weekDays = this.DateProvider
                .GetWeekAhedDays(day)
                .To<WeekDayViewModel>()
                .ToList();

            viewModel.Date = day;
            viewModel.WeekDays = weekDays;
            viewModel.Trips = trips;
            viewModel.TotalPages = totalPages;
            viewModel.CurrentPage = page;
            viewModel.TotalFoundTrips = allTripsCount;

            return this.View(viewModel);
        }