diff --git a/backend/src/main/java/com/magistr/app/controller/GroupController.java b/backend/src/main/java/com/magistr/app/controller/GroupController.java index 183ed51..fbb7590 100755 --- a/backend/src/main/java/com/magistr/app/controller/GroupController.java +++ b/backend/src/main/java/com/magistr/app/controller/GroupController.java @@ -57,6 +57,28 @@ public class GroupController { } } + @GetMapping("/{departmentId}") + public ResponseEntity getGroupsByDepartmentId(@PathVariable Long departmentId) { + logger.info("Получен запрос на получение списка групп для кафедры с ID - {}", departmentId); + try { + List groups = groupRepository.findByDepartmentId(departmentId); + + if(groups.isEmpty()) { + logger.info("Группы для кафедры с ID - {} не найдены", departmentId); + return ResponseEntity.status(HttpStatus.NOT_FOUND) + .body("Группы для указанной кафедры не найдены"); + } + + logger.info("Найдено {} групп для кафедры с ID - {}", groups.size(), departmentId); + + return ResponseEntity.ok(groups); + } catch (Exception e) { + logger.error("Получена ошибка при получении списка групп для кафедры с ID - {}: {}", departmentId, e.getMessage()); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("Произошла ошибка при получении списка групп"); + } + } + @PostMapping public ResponseEntity createGroup(@RequestBody CreateGroupRequest request) { logger.info("Получен запрос на создание новой группы: name = {}, groupSize = {}, educationFormId = {}, departmentId = {}, course = {}", diff --git a/backend/src/main/java/com/magistr/app/controller/SubjectController.java b/backend/src/main/java/com/magistr/app/controller/SubjectController.java index ff801af..078c891 100755 --- a/backend/src/main/java/com/magistr/app/controller/SubjectController.java +++ b/backend/src/main/java/com/magistr/app/controller/SubjectController.java @@ -47,6 +47,27 @@ public class SubjectController { } } + @GetMapping("/{departmentId}") + public ResponseEntity getSubjectsByDepartmentId(@PathVariable Long departmentId) { + logger.info("Получен запрос на получение дисциплин для кафедры с ID - {}", departmentId); + try{ + List subjects = subjectRepository.findByDepartmentId(departmentId); + + if(subjects.isEmpty()){ + logger.info("Дисциплины для кафедры с ID - {} не найдены", departmentId); + return ResponseEntity.status(HttpStatus.NOT_FOUND) + .body("Дисциплины для указанной кафедры не найдены"); + } + + logger.info("Найдено {} дисциплин для кафедры с ID - {}", subjects.size(), departmentId); + return ResponseEntity.ok(subjects); + } catch (Exception e) { + logger.error("Произошла ошибка при получении списка дисциплин для кафедры с ID - {}", departmentId); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("Произошла ошибка при получении списка дисциплин"); + } + } + @PostMapping public ResponseEntity createSubject(@RequestBody CreateSubjectRequest request) { logger.info("Получен запрос на создание дисциплины: name = {}, code = {}, departmentId = {}", diff --git a/backend/src/main/java/com/magistr/app/controller/UserController.java b/backend/src/main/java/com/magistr/app/controller/UserController.java index 2212c3a..20d8f3c 100755 --- a/backend/src/main/java/com/magistr/app/controller/UserController.java +++ b/backend/src/main/java/com/magistr/app/controller/UserController.java @@ -79,6 +79,40 @@ public class UserController { } } + @GetMapping("/teachers/{departmentId}") + public ResponseEntity getTeachersByDepartmentId(@PathVariable Long departmentId){ + logger.info("Получен запрос на получение преподавателей для кафедры с ID - {}", departmentId); + try { + List users = userRepository.findByRoleAndDepartmentId(Role.TEACHER, departmentId); + + if (users.isEmpty()) { + logger.info("Преподаватели для кафедры с ID - {} не найдены", departmentId); + return ResponseEntity.status(HttpStatus.NOT_FOUND) + .body("Преподаватели для указанной кафедры не найдены"); + } + + logger.info("Найдено {} преподавателей для кафедры с ID - {}", users.size(), departmentId); + + List userResponses = users.stream() + .map( user -> { + + return new UserResponse( + user.getId(), + user.getRole().name(), + user.getFullName(), + user.getJobTitle(), + user.getDepartmentId() + ); + }).toList(); + + return ResponseEntity.ok(userResponses); + } catch (Exception e) { + logger.error("Произошла ошибка при получении списка преподавателей для кафедры с ID - {}: {}",departmentId, e.getMessage()); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("Произошла ошибка при получении списка преподавателей"); + } + } + @PostMapping public ResponseEntity createUser(@RequestBody CreateUserRequest request) { logger.info("Получен запрос на создание нового пользователя: username = {}, fullName = {}, jobTitle = {}, departmentId = {}", request.getUsername(), request.getFullName(), request.getJobTitle(), request.getDepartmentId()); diff --git a/backend/src/main/java/com/magistr/app/dto/UserResponse.java b/backend/src/main/java/com/magistr/app/dto/UserResponse.java index d4d30de..731cf8a 100755 --- a/backend/src/main/java/com/magistr/app/dto/UserResponse.java +++ b/backend/src/main/java/com/magistr/app/dto/UserResponse.java @@ -1,5 +1,8 @@ package com.magistr.app.dto; +import com.fasterxml.jackson.annotation.JsonInclude; + +@JsonInclude(JsonInclude.Include.NON_NULL) public class UserResponse { private Long id; @@ -21,6 +24,14 @@ public class UserResponse { this.departmentId = departmentId; } + public UserResponse(Long id, String role, String fullName, String jobTitle, Long departmentId) { + this.id = id; + this.role = role; + this.fullName = fullName; + this.jobTitle = jobTitle; + this.departmentId = departmentId; + } + public Long getId() { return id; } diff --git a/backend/src/main/java/com/magistr/app/repository/GroupRepository.java b/backend/src/main/java/com/magistr/app/repository/GroupRepository.java index e2fea0f..7ab7312 100755 --- a/backend/src/main/java/com/magistr/app/repository/GroupRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/GroupRepository.java @@ -11,4 +11,6 @@ public interface GroupRepository extends JpaRepository { Optional findByName(String name); List findByEducationFormId(Long educationFormId); + + List findByDepartmentId(Long departmentId); } diff --git a/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java b/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java index 8c5a8fa..69a759f 100755 --- a/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/SubjectRepository.java @@ -3,8 +3,11 @@ package com.magistr.app.repository; import com.magistr.app.model.Subject; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; import java.util.Optional; public interface SubjectRepository extends JpaRepository { Optional findByName(String name); + + List findByDepartmentId(Long departmentId); } diff --git a/backend/src/main/java/com/magistr/app/repository/UserRepository.java b/backend/src/main/java/com/magistr/app/repository/UserRepository.java index 3711bd3..35932e4 100755 --- a/backend/src/main/java/com/magistr/app/repository/UserRepository.java +++ b/backend/src/main/java/com/magistr/app/repository/UserRepository.java @@ -12,4 +12,6 @@ public interface UserRepository extends JpaRepository { Optional findByUsername(String username); List findByRole(Role role); + + List findByRoleAndDepartmentId(Role role, Long departmentId); }