From fee6dd21158c605204f797b4b0187d7272ec171a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rio=20Mur=C3=ADn?= <xmurin@fi.muni.cz> Date: Fri, 5 Jul 2024 16:07:49 +0200 Subject: [PATCH] Add validation for reviving an instance --- .../service/training/TrainingInstanceService.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/training/TrainingInstanceService.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/training/TrainingInstanceService.java index 7aebe488..c965a1b2 100644 --- a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/training/TrainingInstanceService.java +++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/training/TrainingInstanceService.java @@ -135,6 +135,7 @@ public class TrainingInstanceService { public String update(TrainingInstance trainingInstanceToUpdate) { validateStartAndEndTime(trainingInstanceToUpdate); TrainingInstance trainingInstance = findById(trainingInstanceToUpdate.getId()); + checkNotRevivingAnExpiredInstance(trainingInstanceToUpdate, trainingInstance); //add original organizers to update trainingInstanceToUpdate.setOrganizers(new HashSet<>(trainingInstance.getOrganizers())); addLoggedInUserAsOrganizerToTrainingInstance(trainingInstanceToUpdate); @@ -176,6 +177,14 @@ public class TrainingInstanceService { } } + private void checkNotRevivingAnExpiredInstance(TrainingInstance trainingInstanceToUpdate, TrainingInstance currentTrainingInstance) { + if (currentTrainingInstance.finished() && !trainingInstanceToUpdate.finished()) { + throw new EntityConflictException(new EntityErrorDetail(TrainingInstance.class, "id", + trainingInstanceToUpdate.getId().getClass(), trainingInstanceToUpdate.getId(), + "End time of an expired instance cannot be set to the future.")); + } + } + private void checkChangedFieldsOfTrainingInstance(TrainingInstance trainingInstanceToUpdate, TrainingInstance currentTrainingInstance) { if (!currentTrainingInstance.getStartTime().equals(trainingInstanceToUpdate.getStartTime())) { throw new EntityConflictException(new EntityErrorDetail(TrainingInstance.class, "id", Long.class, trainingInstanceToUpdate.getId(), -- GitLab