@@ -7,6 +7,7 @@ import com.magistr.app.repository.*;
|
||||
import com.magistr.app.service.AcademicCalendarGridService;
|
||||
import com.magistr.app.service.AcademicStructureService;
|
||||
import com.magistr.app.service.ScheduleGeneratorService;
|
||||
import com.magistr.app.utils.AcademicCalendarTitleBuilder;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -152,9 +153,6 @@ public class AcademicCalendarController {
|
||||
if (request == null) {
|
||||
throw new IllegalArgumentException("Передайте данные календарного графика");
|
||||
}
|
||||
if (request.title() == null || request.title().isBlank()) {
|
||||
throw new IllegalArgumentException("Название графика обязательно");
|
||||
}
|
||||
if (request.courseCount() == null || request.courseCount() <= 0) {
|
||||
throw new IllegalArgumentException("Количество курсов должно быть больше нуля");
|
||||
}
|
||||
@@ -178,7 +176,7 @@ public class AcademicCalendarController {
|
||||
EducationForm studyForm = educationFormRepository.findById(request.studyFormId())
|
||||
.orElseThrow(() -> new IllegalArgumentException("Форма обучения не найдена"));
|
||||
|
||||
calendar.setTitle(request.title().trim());
|
||||
calendar.setTitle(AcademicCalendarTitleBuilder.build(year, speciality, profile, studyForm));
|
||||
calendar.setAcademicYear(year);
|
||||
calendar.setSpeciality(speciality);
|
||||
calendar.setSpecialtyProfile(profile);
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.magistr.app.repository.SpecialtiesRepository;
|
||||
import com.magistr.app.repository.SpecialtyProfileRepository;
|
||||
import com.magistr.app.repository.StudentGroupCalendarAssignmentRepository;
|
||||
import com.magistr.app.repository.SubgroupRepository;
|
||||
import com.magistr.app.utils.AcademicCalendarTitleBuilder;
|
||||
import com.magistr.app.utils.CourseAndSemesterCalculator;
|
||||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -126,7 +127,12 @@ public class AcademicStructureService {
|
||||
);
|
||||
}
|
||||
|
||||
calendar.setTitle(request.title().trim());
|
||||
calendar.setTitle(AcademicCalendarTitleBuilder.build(
|
||||
candidate.academicYear(),
|
||||
candidate.speciality(),
|
||||
candidate.profile(),
|
||||
candidate.studyForm()
|
||||
));
|
||||
applyCalendarDimensions(calendar, candidate, request.courseCount());
|
||||
AcademicCalendar saved = saveCalendar(calendar);
|
||||
clearScheduleCacheAfterCommit();
|
||||
@@ -208,9 +214,6 @@ public class AcademicStructureService {
|
||||
if (request == null) {
|
||||
throw new IllegalArgumentException("Передайте данные календарного графика");
|
||||
}
|
||||
if (request.title() == null || request.title().isBlank()) {
|
||||
throw new IllegalArgumentException("Название графика обязательно");
|
||||
}
|
||||
if (request.courseCount() == null || request.courseCount() <= 0) {
|
||||
throw new IllegalArgumentException("Количество курсов должно быть больше нуля");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.magistr.app.utils;
|
||||
|
||||
import com.magistr.app.model.AcademicYear;
|
||||
import com.magistr.app.model.EducationForm;
|
||||
import com.magistr.app.model.Speciality;
|
||||
import com.magistr.app.model.SpecialtyProfile;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public final class AcademicCalendarTitleBuilder {
|
||||
|
||||
private static final String SEPARATOR = " — ";
|
||||
|
||||
private AcademicCalendarTitleBuilder() {
|
||||
}
|
||||
|
||||
public static String build(AcademicYear academicYear,
|
||||
Speciality speciality,
|
||||
SpecialtyProfile profile,
|
||||
EducationForm studyForm) {
|
||||
List<String> parts = List.of(
|
||||
normalize(speciality == null ? null : speciality.getSpecialityCode()),
|
||||
normalize(profile == null ? null : profile.getName()),
|
||||
normalize(studyForm == null ? null : studyForm.getName()),
|
||||
normalize(academicYear == null ? null : academicYear.getTitle())
|
||||
);
|
||||
if (parts.stream().anyMatch(String::isBlank)) {
|
||||
throw new IllegalArgumentException(
|
||||
"Невозможно сформировать название календарного графика из выбранных параметров"
|
||||
);
|
||||
}
|
||||
return String.join(SEPARATOR, parts);
|
||||
}
|
||||
|
||||
private static String normalize(String value) {
|
||||
return value == null ? "" : value.trim();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user