// GET: Users
        public async Task <IActionResult> Index(string currentFilter, string searchString, int?pageNumber, int?pageSize, int?resultsOnPage)
        {
            if (searchString != null || resultsOnPage != null)
            {
                pageNumber = 1;
            }
            if (searchString == null)
            {
                searchString = currentFilter;
            }
            if (resultsOnPage == null)
            {
                resultsOnPage = pageSize;
            }
            resultsOnPage             = resultsOnPage ?? 10;
            ViewData["CurrentFilter"] = searchString;
            ViewData["PageSize"]      = resultsOnPage;

            ApplicationUsersViewModel model = new ApplicationUsersViewModel();
            var selectedListItem            = model.ResultsOnPageList.FirstOrDefault(x => x.Value == resultsOnPage.ToString()) ?? model.ResultsOnPageList.First(x => x.Value == "10");

            selectedListItem.Selected = true;

            var query = _userManager.Users.Cast <ApplicationUser>().Where(x => x.UserName != "*****@*****.**");

            if (!String.IsNullOrEmpty(searchString))
            {
                query = query.Where(x => x.Email.Contains(searchString) ||
                                    x.UserName.Contains(searchString) ||
                                    x.FirstName.Contains(searchString) ||
                                    x.LastName.Contains(searchString)
                                    );
            }
            model.ApplicationUser = await PaginatedListHelper <ApplicationUser> .CreateAsync(query.AsNoTracking(), pageNumber ?? 1, resultsOnPage ?? 1);

            if (model.ApplicationUser.TotalPages > 0 && (pageNumber ?? 1) > model.ApplicationUser.TotalPages)
            {
                model.ApplicationUser = await PaginatedListHelper <ApplicationUser> .CreateAsync(query.AsNoTracking(), model.ApplicationUser.TotalPages, resultsOnPage ?? 1);
            }

            return(View(model));
        }
        public async Task <IActionResult> Index(string currentFilter, string searchString, int?pageNumber, int?pageSize, int?resultsOnPage)
        {
            if (searchString != null || resultsOnPage != null)
            {
                pageNumber = 1;
            }
            if (searchString == null)
            {
                searchString = currentFilter;
            }
            if (resultsOnPage == null)
            {
                resultsOnPage = pageSize;
            }
            resultsOnPage             = resultsOnPage ?? 10;
            ViewData["CurrentFilter"] = searchString;
            ViewData["PageSize"]      = resultsOnPage;

            FlightsViewModel model = new FlightsViewModel();
            var selectedListItem   = model.ResultsOnPageList.FirstOrDefault(x => x.Value == resultsOnPage.ToString()) ?? model.ResultsOnPageList.First(x => x.Value == "10");

            selectedListItem.Selected = true;

            var query = _context.Flight.Where(f => f.StartTime > DateTime.Now);

            if (!String.IsNullOrEmpty(searchString))
            {
                query = query.Where(x => x.StartLocation.Contains(searchString) ||
                                    x.Destination.Contains(searchString));
            }
            model.Flights = await PaginatedListHelper <Flights> .CreateAsync(query.AsNoTracking(), pageNumber ?? 1, resultsOnPage ?? 1);

            if (model.Flights.TotalPages > 0 && (pageNumber ?? 1) > model.Flights.TotalPages)
            {
                model.Flights = await PaginatedListHelper <Flights> .CreateAsync(query.AsNoTracking(), model.Flights.TotalPages, resultsOnPage ?? 1);
            }

            return(View(model));
        }
Beispiel #3
0
        public async Task <PaginatedListDto <StudentListItem> > ListAllStudentssAsync(
            ListingFilterSortPageDto filterSortPageDto)
        {
            // call this first to:
            // - reset the PageNo by comparing the previous an current listing criteria
            filterSortPageDto.InitDto();

            var students = _context.Students
                           .Select(s => new StudentListItem
            {
                FirstMidName   = s.FirstMidName,
                LastName       = s.LastName,
                EnrollmentDate = s.EnrollmentDate,
                StudentId      = s.StudentId
            });

            StudentsFilterOptions filterBy = (StudentsFilterOptions)filterSortPageDto.FilterBy;
            var filterValue = filterSortPageDto.FilterValue;

            if (filterBy > 0 && !String.IsNullOrWhiteSpace(filterValue))
            {
                switch (filterBy)
                {
                case StudentsFilterOptions.FirstMidName:
                    students = students.Where(s => (s.FirstMidName.Contains(filterValue)));
                    break;

                case StudentsFilterOptions.LastName:
                    students = students.Where(s => (s.LastName.Contains(filterValue)));
                    break;

                case StudentsFilterOptions.EnrollmentDateAfter:
                    try
                    {
                        DateTime filterValueDate = DateTime.ParseExact(
                            filterValue, "yyyy-MM-dd", CultureInfo.CurrentCulture);
                        students = students.Where(s => (s.EnrollmentDate >= filterValueDate));
                    }
                    catch (Exception)
                    {
                        throw new GeneralException("Please enter a valid date value and retry.");
                    }
                    break;

                case StudentsFilterOptions.EnrollmentDateBefore:
                    try
                    {
                        DateTime filterValueDate = DateTime.ParseExact(
                            filterValue, "yyyy-MM-dd", CultureInfo.CurrentCulture);
                        students = students.Where(s => (s.EnrollmentDate <= filterValueDate));
                    }
                    catch (Exception)
                    {
                        throw new GeneralException("Please enter a valid date value and retry.");
                    }
                    break;
                }
            }

            // Order By
            StudentsSortByOptions sortBy = (StudentsSortByOptions)filterSortPageDto.SortBy;
            bool sortAscending           = filterSortPageDto.SortAscending;

            if (sortAscending)
            {
                students = students.OrderBy(e => EF.Property <object>(e, sortBy.ToString()));
            }
            else
            {
                students = students.OrderByDescending(e => EF.Property <object>(e, sortBy.ToString()));
            }

            PageSizeOptions pageSize  = (PageSizeOptions)filterSortPageDto.PageSize;
            var             pageIndex = filterSortPageDto.PageIndex;

            var paginatedList = await PaginatedListHelper <StudentListItem> .CreateAsync(
                students.AsNoTracking(), pageIndex, (int)pageSize);

            return(paginatedList);
        }