Пример #1
0
        public async Task <IActionResult> GetStudents([FromQuery] StudentParametersFilter studentParametersFilter)
        {
            try
            {
                var students = await studentRepository.GetStudents(studentParametersFilter);

                logger.LogInformation($"Returned {students.Length} students from database", "GetStudents");
                return(Ok(students));
            }
            catch
            {
                var message = "Error has happened during receiving students data from the database";
                logger.LogError(message, "GetStudents");
                return(BadRequest(message));
            }
        }
 public Task <StudentDTO[]> GetStudents(StudentParametersFilter studentParametersFilter)
 {
     return(FindAll().Where(x => studentParametersFilter == null ||
                            (
                                (string.IsNullOrEmpty(studentParametersFilter.LastName) || x.LastName == studentParametersFilter.LastName) &&
                                (string.IsNullOrEmpty(studentParametersFilter.FirstName) || x.FirstName == studentParametersFilter.FirstName) &&
                                (string.IsNullOrEmpty(studentParametersFilter.MiddleName) || x.MiddleName == studentParametersFilter.MiddleName) &&
                                (!studentParametersFilter.Sex.HasValue || x.Sex == studentParametersFilter.Sex.Value) &&
                                (studentParametersFilter.UniqueId == string.Empty || x.UniqueId == studentParametersFilter.UniqueId) &&
                                (string.IsNullOrEmpty(studentParametersFilter.GroupName) || x.StudentsGroups.Where(y => y.Group.Name == studentParametersFilter.GroupName).Any())
                            )).OrderBy(x => x.LastName).ThenBy(x => x.FirstName)
            .Skip((studentParametersFilter.PageNumber - 1) * studentParametersFilter.PageSize)
            .Take(studentParametersFilter.PageSize).Select(x => new StudentDTO
     {
         Id = x.Id,
         LastName = x.LastName,
         FirstName = x.FirstName,
         MiddleName = x.MiddleName,
         Sex = x.Sex,
         UniqueId = x.UniqueId,
         Groups = x.StudentsGroups.Select(y => y.Group.Name)
     }).ToArrayAsync());
 }