Добавил возможность создавать, просматривать и удалять данные дисциплин и кафедр.
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
package com.magistr.app.controller;
|
||||
|
||||
import com.magistr.app.dto.CreateDepartmentRequest;
|
||||
import com.magistr.app.dto.DepartmentResponse;
|
||||
import com.magistr.app.model.Department;
|
||||
import com.magistr.app.repository.DepartmentRepository;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/departments")
|
||||
public class DepartmentController {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(DepartmentController.class);
|
||||
|
||||
private final DepartmentRepository departmentRepository;
|
||||
|
||||
public DepartmentController(DepartmentRepository departmentRepository) {
|
||||
this.departmentRepository = departmentRepository;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public List<Department> getAllDepartments() {
|
||||
logger.info("Получен запрос на получение списка кафедр");
|
||||
try {
|
||||
List<Department> departments = departmentRepository.findAll();
|
||||
List<Department> response = departments.stream()
|
||||
.map( d -> new Department(
|
||||
d.getId(),
|
||||
d.getDepartmentName(),
|
||||
d.getDepartmentCode()
|
||||
))
|
||||
.toList();
|
||||
logger.info("Получено {} кафедр", response.size());
|
||||
return response;
|
||||
} catch (Exception e) {
|
||||
logger.error("Ошибка при получении списка кафедр: {}", e.getMessage(), e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ResponseEntity<?> createDepartment(@RequestBody CreateDepartmentRequest request) {
|
||||
logger.info("Получен запрос на создание кафедры: name = {}, code = {}", request.getDepartmentName(), request.getDepartmentCode());
|
||||
|
||||
try {
|
||||
if (request.getDepartmentName() == null || request.getDepartmentName().isBlank()){
|
||||
String errorMessage = "Название кафедры обязательно";
|
||||
logger.error("Ошибка валидации: {}", errorMessage);
|
||||
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||
}
|
||||
if (departmentRepository.findByDepartmentName(request.getDepartmentName().trim()).isPresent()) {
|
||||
String errorMessage = "Кафедра с таким названием уже существует";
|
||||
logger.error("Ошибка валидации: {}", errorMessage);
|
||||
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||
}
|
||||
if (request.getDepartmentCode() == null || request.getDepartmentCode() == 0) {
|
||||
String errorMessage = "Код кафедры обязателен";
|
||||
logger.error("Ошибка валидации: {}", errorMessage);
|
||||
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||
}
|
||||
if (departmentRepository.findByDepartmentCode(request.getDepartmentCode()).isPresent()) {
|
||||
String errorMessage = "Кафедра с таким кодом уже существует";
|
||||
logger.error("Ошибка валидации: {}", errorMessage);
|
||||
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||
}
|
||||
|
||||
Department department = new Department();
|
||||
department.setDepartmentName(request.getDepartmentName());
|
||||
department.setDepartmentCode(request.getDepartmentCode());
|
||||
departmentRepository.save(department);
|
||||
|
||||
logger.info("Кафедра успешно создана с ID: {}", department.getId());
|
||||
|
||||
return ResponseEntity.ok(
|
||||
new DepartmentResponse(
|
||||
department.getId(),
|
||||
department.getDepartmentName(),
|
||||
department.getDepartmentCode()
|
||||
)
|
||||
);
|
||||
} catch (Exception e) {
|
||||
logger.error("Ошибка при создании кафедры: {}", e.getMessage(), e);
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
.body(Map.of("message", "Произошла ошибка при создании кафедры " + e.getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
@DeleteMapping("/id")
|
||||
public ResponseEntity<?> deleteDepartment(@PathVariable Long id) {
|
||||
logger.info("Получен запрос на удаление кафедры с ID: {}", id);
|
||||
if (!departmentRepository.existsById(id)) {
|
||||
logger.info("Кафедра с ID - {} не найдена", id);
|
||||
return ResponseEntity.notFound().build();
|
||||
}
|
||||
departmentRepository.deleteById(id);
|
||||
logger.info("Кафедра с ID - {} успешно удалена", id);
|
||||
return ResponseEntity.ok(Map.of("message", "Кафедра удалена"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
package com.magistr.app.controller;
|
||||
|
||||
import com.magistr.app.dto.CreateSpecialityRequest;
|
||||
import com.magistr.app.dto.SpecialityResponse;
|
||||
import com.magistr.app.model.Speciality;
|
||||
import com.magistr.app.repository.SpecialtiesRepository;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/specialties")
|
||||
public class SpecialityController {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(SpecialityController.class);
|
||||
|
||||
private final SpecialtiesRepository specialtiesRepository;
|
||||
|
||||
public SpecialityController(SpecialtiesRepository specialtiesRepository) {
|
||||
this.specialtiesRepository = specialtiesRepository;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public List<Speciality> getAllSpecialties() {
|
||||
logger.info("Получен запрос на получение списка специальностей");
|
||||
try {
|
||||
List<Speciality> specialities = specialtiesRepository.findAll();
|
||||
List<Speciality> response = specialities.stream()
|
||||
.map( s -> new Speciality(
|
||||
s.getId(),
|
||||
s.getSpecialityName(),
|
||||
s.getSpecialityCode()
|
||||
))
|
||||
.toList();
|
||||
logger.info("Получено {} специальностей", response.size());
|
||||
return response;
|
||||
} catch (Exception e) {
|
||||
logger.error("Ошибка при получении списка специальностей: {}", e.getMessage(), e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ResponseEntity<?> createSpeciality(@RequestBody CreateSpecialityRequest request) {
|
||||
logger.info("Получен запрос на создание специальности: name = {}, code = {}", request.getSpecialityName(), request.getSpecialityCode());
|
||||
|
||||
try {
|
||||
if (request.getSpecialityName() == null || request.getSpecialityName().isBlank()) {
|
||||
String errorMessage = "Название специальности обязательно";
|
||||
logger.error("Ошибка валидации: {}", errorMessage);
|
||||
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||
}
|
||||
if (specialtiesRepository.findBySpecialityName(request.getSpecialityName().trim()).isPresent()) {
|
||||
String errorMessage = "Специальность с таким названием уже существует";
|
||||
logger.error("Ошибка валидации: {}", errorMessage);
|
||||
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||
}
|
||||
if (request.getSpecialityCode() == null || request.getSpecialityCode().isBlank()) {
|
||||
String errorMessage = "Код специальности обязателен";
|
||||
logger.error("Ошибка валидации: {}", errorMessage);
|
||||
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||
}
|
||||
if (specialtiesRepository.findBySpecialityCode(request.getSpecialityCode().trim()).isPresent()) {
|
||||
String errorMessage = "Специальность с таким кодом уже существует";
|
||||
logger.error("Ошибка валидации: {}", errorMessage);
|
||||
return ResponseEntity.badRequest().body(Map.of("message", errorMessage));
|
||||
}
|
||||
|
||||
Speciality speciality = new Speciality();
|
||||
speciality.setSpecialityName(request.getSpecialityName());
|
||||
speciality.setSpecialityCode(request.getSpecialityCode());
|
||||
specialtiesRepository.save(speciality);
|
||||
|
||||
logger.info("Специальность успешно создана с ID: {}", speciality.getId());
|
||||
|
||||
return ResponseEntity.ok(
|
||||
new SpecialityResponse(
|
||||
speciality.getId(),
|
||||
speciality.getSpecialityName(),
|
||||
speciality.getSpecialityCode()
|
||||
)
|
||||
);
|
||||
} catch (Exception e) {
|
||||
logger.error("Ошибка при создании специальности: {}", e.getMessage(), e);
|
||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
.body(Map.of("message", "Произошла ошибка при создании специальности " + e.getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
@DeleteMapping("/id")
|
||||
public ResponseEntity<?> deleteSpeciality(@PathVariable Long id) {
|
||||
logger.info("Получен запрос на удаление специальности с ID: {}", id);
|
||||
if (!specialtiesRepository.existsById(id)) {
|
||||
logger.info("Специальность с ID - {} не найдена", id);
|
||||
return ResponseEntity.notFound().build();
|
||||
}
|
||||
specialtiesRepository.deleteById(id);
|
||||
logger.info("Специальность с ID - {} успешно удалена", id);
|
||||
return ResponseEntity.ok(Map.of("message", "Специальнсть удалена"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.magistr.app.dto;
|
||||
|
||||
public class CreateDepartmentRequest {
|
||||
|
||||
private String departmentName;
|
||||
private Long departmentCode;
|
||||
|
||||
public CreateDepartmentRequest() {}
|
||||
|
||||
public String getDepartmentName() {
|
||||
return departmentName;
|
||||
}
|
||||
|
||||
public void setDepartmentName(String departmentName) {
|
||||
this.departmentName = departmentName;
|
||||
}
|
||||
|
||||
public Long getDepartmentCode() {
|
||||
return departmentCode;
|
||||
}
|
||||
|
||||
public void setDepartmentCode(Long departmentCode) {
|
||||
this.departmentCode = departmentCode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.magistr.app.dto;
|
||||
|
||||
public class CreateSpecialityRequest {
|
||||
|
||||
private String specialityName;
|
||||
private String specialityCode;
|
||||
|
||||
public CreateSpecialityRequest() {}
|
||||
|
||||
public String getSpecialityName() {
|
||||
return specialityName;
|
||||
}
|
||||
|
||||
public void setSpecialityName(String specialityName) {
|
||||
this.specialityName = specialityName;
|
||||
}
|
||||
|
||||
public String getSpecialityCode() {
|
||||
return specialityCode;
|
||||
}
|
||||
|
||||
public void setSpecialityCode(String specialityCode) {
|
||||
this.specialityCode = specialityCode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.magistr.app.dto;
|
||||
|
||||
public class DepartmentResponse {
|
||||
|
||||
private Long id;
|
||||
private String departmentName;
|
||||
private Long departmentCode;
|
||||
|
||||
public DepartmentResponse(Long id, String departmentName, Long departmentCode) {
|
||||
this.id = id;
|
||||
this.departmentName = departmentName;
|
||||
this.departmentCode = departmentCode;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDepartmentName() {
|
||||
return departmentName;
|
||||
}
|
||||
|
||||
public void setDepartmentName(String departmentName) {
|
||||
this.departmentName = departmentName;
|
||||
}
|
||||
|
||||
public Long getDepartmentCode() {
|
||||
return departmentCode;
|
||||
}
|
||||
|
||||
public void setDepartmentCode(Long departmentCode) {
|
||||
this.departmentCode = departmentCode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.magistr.app.dto;
|
||||
|
||||
public class SpecialityResponse {
|
||||
|
||||
private Long id;
|
||||
private String specialityName;
|
||||
private String specialityCode;
|
||||
|
||||
public SpecialityResponse(Long id, String specialityName, String specialityCode) {
|
||||
this.id = id;
|
||||
this.specialityName = specialityName;
|
||||
this.specialityCode = specialityCode;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getSpecialityName() {
|
||||
return specialityName;
|
||||
}
|
||||
|
||||
public void setSpecialityName(String specialityName) {
|
||||
this.specialityName = specialityName;
|
||||
}
|
||||
|
||||
public String getSpecialityCode() {
|
||||
return specialityCode;
|
||||
}
|
||||
|
||||
public void setSpecialityCode(String specialityCode) {
|
||||
this.specialityCode = specialityCode;
|
||||
}
|
||||
}
|
||||
50
backend/src/main/java/com/magistr/app/model/Department.java
Normal file
50
backend/src/main/java/com/magistr/app/model/Department.java
Normal file
@@ -0,0 +1,50 @@
|
||||
package com.magistr.app.model;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name="departments")
|
||||
public class Department {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@Column(name = "name", nullable = false)
|
||||
private String departmentName;
|
||||
|
||||
@Column(name = "code", nullable = false)
|
||||
private Long departmentCode;
|
||||
|
||||
public Department() {}
|
||||
|
||||
public Department(Long id, String departmentName, Long departmentCode) {
|
||||
this.id = id;
|
||||
this.departmentName = departmentName;
|
||||
this.departmentCode = departmentCode;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDepartmentName() {
|
||||
return departmentName;
|
||||
}
|
||||
|
||||
public void setDepartmentName(String departmentName) {
|
||||
this.departmentName = departmentName;
|
||||
}
|
||||
|
||||
public Long getDepartmentCode() {
|
||||
return departmentCode;
|
||||
}
|
||||
|
||||
public void setDepartmentCode(Long departmentCode) {
|
||||
this.departmentCode = departmentCode;
|
||||
}
|
||||
}
|
||||
50
backend/src/main/java/com/magistr/app/model/Speciality.java
Normal file
50
backend/src/main/java/com/magistr/app/model/Speciality.java
Normal file
@@ -0,0 +1,50 @@
|
||||
package com.magistr.app.model;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name="specialties")
|
||||
public class Speciality {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@Column(name="name", nullable = false)
|
||||
private String specialityName;
|
||||
|
||||
@Column(name="specialty_code",nullable = false)
|
||||
private String specialityCode;
|
||||
|
||||
public Speciality() {}
|
||||
|
||||
public Speciality(Long id, String specialityName, String specialityCode) {
|
||||
this.id = id;
|
||||
this.specialityName = specialityName;
|
||||
this.specialityCode = specialityCode;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getSpecialityName() {
|
||||
return specialityName;
|
||||
}
|
||||
|
||||
public void setSpecialityName(String specialityName) {
|
||||
this.specialityName = specialityName;
|
||||
}
|
||||
|
||||
public String getSpecialityCode() {
|
||||
return specialityCode;
|
||||
}
|
||||
|
||||
public void setSpecialityCode(String specialityCode) {
|
||||
this.specialityCode = specialityCode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.magistr.app.repository;
|
||||
|
||||
import com.magistr.app.model.Department;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface DepartmentRepository extends JpaRepository<Department, Long> {
|
||||
|
||||
Optional<Department> findByDepartmentName(String departmentName);
|
||||
|
||||
Optional<Department> findByDepartmentCode(Long departmentCode);
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.magistr.app.repository;
|
||||
|
||||
import com.magistr.app.model.Speciality;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface SpecialtiesRepository extends JpaRepository<Speciality, Long> {
|
||||
|
||||
Optional<Speciality> findBySpecialityName(String specialityName);
|
||||
|
||||
Optional<Speciality> findBySpecialityCode(String specialityCode);
|
||||
}
|
||||
Reference in New Issue
Block a user