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 7aebe488c9409795ccaedd4256be1d248878d55a..c965a1b2e3152069586148a4839af91ed0f25749 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(),