Пример #1
0
        public async Task <PageInfo <CourseForUserDTO> > GetAllCoursesForUser(QueryParamsDTO queryParams)
        {
            var courses = _repo.GetAllQueryable();

            if (!string.IsNullOrEmpty(queryParams.Search))
            {
                courses = courses.Where(s => s.CourseName.ToLower().Equals(queryParams.Search.ToLower()) ||
                                        s.CourseName.StartsWith(queryParams.Search));
            }
            if (queryParams.SortBy == "id")
            {
                if (queryParams.IsSortAscending)
                {
                    courses = courses.OrderBy(c => c.Id);
                }
                else
                {
                    courses = courses.OrderByDescending(c => c.Id);
                }
            }
            if (queryParams.SortBy == "courseName")
            {
                if (queryParams.IsSortAscending)
                {
                    courses = courses.OrderBy(c => c.CourseName);
                }
                else
                {
                    courses = courses.OrderByDescending(c => c.CourseName);
                }
            }
            try
            {
                var pagedCourses = await PagedList <Course> .CreateAsync(courses, queryParams.CurrentPage, queryParams.PageSize);

                var listModel   = _mapper.Map <IEnumerable <CourseForUserDTO> >(pagedCourses);
                var outputModel = new PageInfo <CourseForUserDTO>
                {
                    List = listModel,
                    Info = new PaginationOutputInfo
                    {
                        CurrentPage = pagedCourses.CurrentPage,
                        PageSize    = pagedCourses.PageSize,
                        TotalCount  = pagedCourses.TotalCount,
                        TotalPages  = pagedCourses.TotalPages
                    }
                };

                return(outputModel);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return(null);
        }
Пример #2
0
        public async Task <PageInfo <UserDTO> > GetStudents(QueryParamsDTO queryParams)
        {
            var students = _userRepo.GetAllQueryable();

            if (!string.IsNullOrEmpty(queryParams.Search))
            {
                students = students.Where(s => s.FirstName.ToLower().Equals(queryParams.Search.ToLower()) ||
                                          s.LastName.ToLower().Equals(queryParams.Search.ToLower()) ||
                                          (s.FirstName + ' ' + s.LastName).ToLower().Equals(queryParams.Search.ToLower()) ||
                                          (s.LastName + ' ' + s.FirstName).ToLower().Equals(queryParams.Search.ToLower()) ||
                                          s.FirstName.ToLower().StartsWith(queryParams.Search.ToLower()));
            }
            var columnsMap = new Dictionary <string, Expression <Func <User, object> > >
            {
                ["id"]               = s => s.Id,
                ["firstName"]        = s => s.FirstName,
                ["lastName"]         = s => s.LastName,
                ["age"]              = s => s.Age,
                ["email"]            = s => s.Email,
                ["registrationDate"] = s => s.RegistrationDate,
                ["gender"]           = s => s.Gender,
                ["blocked"]          = s => s.Blocked
            };

            students = students.ApplyOrdering(queryParams, columnsMap);
            var pagedStudents = await PagedList <User> .CreateAsync(students, queryParams.CurrentPage, queryParams.PageSize);

            var listModel   = _mapper.Map <IEnumerable <UserDTO> >(pagedStudents);
            var outputModel = new PageInfo <UserDTO>
            {
                List = listModel,
                Info = new PaginationOutputInfo
                {
                    CurrentPage = pagedStudents.CurrentPage,
                    PageSize    = pagedStudents.PageSize,
                    TotalCount  = pagedStudents.TotalCount,
                    TotalPages  = pagedStudents.TotalPages
                }
            };

            return(outputModel);
        }