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