public IActionResult StudentsArchive([FromBody] StudentsSortModel sortModel) { try { var result = _studentService.StudentsArchive(); if (result == null) { return(BadRequest()); } if (User.IsInRole("Mentor")) { var mentor = _userService.GetUserAsync(User.Identity.Name); var mentorResult = _studentService.GetMentorStudents(result, mentor.Result.Id); if (mentorResult.Count() == 0) { return(BadRequest("У вас нет студентов находящихся в архиве которых вы курировали")); } var mentorSortedResult = _studentService.SortStudents(mentorResult, sortModel); _logger.LogInformation($"Успешное получение студентов из архива {mentorSortedResult}"); return(Ok(mentorSortedResult)); } var sortedResult = _studentService.SortStudents(result, sortModel); _logger.LogInformation($"Успешное получение студентов из архива {sortedResult}"); return(Ok(sortedResult)); } catch (Exception ex) { _logger.LogError(ex, $"Ошибка при получении студентов из архива по фильтру {sortModel}"); return(BadRequest(ex)); } }
public IEnumerable <StudentsModel> SortStudents(List <StudentsModel> students, StudentsSortModel sortModel) { IEnumerable <StudentsModel> query = null; if (sortModel.SortByDate == true) { query = students.OrderBy(st => st.PractiesBegining) .ThenBy(st => st.PractiesEnding); } if (sortModel.SortByName == true) { if (query == null) { query = students.OrderBy(st => st.SecondName) .ThenBy(st => st.FirstName) .ThenBy(st => st.Patronymic); } else { query.OrderBy(st => st.SecondName) .ThenBy(st => st.FirstName) .ThenBy(st => st.Patronymic); } } if (sortModel.SortByMentor == true) { if (query == null) { query = students.OrderBy(st => st.MentorId); } else { query.OrderBy(st => st.MentorId); } } return(query); }