Skip to content
Snippets Groups Projects

Resolve "An instance is able to be revived by updating end time"

1 file
+ 9
0
Compare changes
  • Side-by-side
  • Inline
@@ -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(),
Loading