public async Task <ActionResult <IEnumerable <FullStudentResource> > > GetStudents(
            [FromQuery] StudentFilterParameters filterParameters)
        {
            var studentDtoes = await _studentService.GetStudentsWithGroupNamesAsync(filterParameters);

            var studentResources = studentDtoes
                                   .Select(dto => _mapper.Map <FullStudentResource>(dto))
                                   .ToList();

            return(Ok(studentResources));
        }
Example #2
0
        public async Task <IEnumerable <Student> > GetStudentsAsync(StudentFilterParameters filterParameters)
        {
            StudentFilter studentFilter = new(SchoolDbContext.Students, filterParameters);

            return(await studentFilter
                   .ApplyFilter()
                   .Include(s => s.Groups)
                   .FilterByGroupName(filterParameters.GroupName)
                   .WithPagination(filterParameters)
                   .ToListAsync());
        }
Example #3
0
 public static IQueryable <Student> WithPagination(
     this IQueryable <Student> students,
     StudentFilterParameters filterParameters
     )
 {
     return(students
            .OrderBy(s => s.Id)
            .Skip(filterParameters.SkipCount)
            .Take(filterParameters.PageSize == 0
             ? int.MaxValue
             : filterParameters.PageSize));
 }
Example #4
0
 public StudentFilter(IQueryable <Student> students, StudentFilterParameters filterParameters)
 {
     Query             = students;
     _filterParameters = filterParameters;
 }
Example #5
0
        public async Task <IEnumerable <FullStudentDto> > GetStudentsWithGroupNamesAsync(StudentFilterParameters filterParameters)
        {
            var students = await _students.GetStudentsAsync(filterParameters);

            var studentDtoes = students
                               .Select(student => _mapper.Map <FullStudentDto>(student));

            if (filterParameters.PageSize != 0)
            {
                studentDtoes = studentDtoes.Take(filterParameters.PageSize);
            }

            return(studentDtoes.ToList());
        }