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