diff --git a/VERSION.txt b/VERSION.txt index 7013f798c13edaa645c943547cd9d191ae1dd64b..03f4ac328305d953e64f6020bf5ad2a871c188f7 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,3 +1,4 @@ +2.2.8 Add check for training definition being in use when trying to add, remove and update tasks. 2.2.7 Add more descriptive message when training phase contains no tasks. Add answer required field to Adaptive Question. 2.2.6 Implement the ANSWER tag replacing in task solution. 2.2.5 Fix ATD update not setting createdAt. diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/facade/TaskFacade.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/facade/TaskFacade.java index f9d0b242f0716d73873bb506633dc95463f827e6..39e438f0b0591efdab99c4647a9e3c83f8404301 100644 --- a/src/main/java/cz/muni/ics/kypo/training/adaptive/facade/TaskFacade.java +++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/facade/TaskFacade.java @@ -53,6 +53,7 @@ public class TaskFacade { @TransactionalWO public TaskDTO createDefaultTask(Long phaseId) { AbstractPhase trainingPhase = phaseService.getPhase(phaseId); + trainingDefinitionService.checkIfCanBeUpdated(trainingPhase.getTrainingDefinition()); if (!(trainingPhase instanceof TrainingPhase)) { throw new EntityConflictException(new EntityErrorDetail(AbstractPhase.class, "id", phaseId.getClass(), phaseId, "The specified phase isn't training phase.")); } @@ -66,6 +67,7 @@ public class TaskFacade { @TransactionalWO public TaskDTO createTask(Long phaseId, TaskCopyDTO taskCopyDTO) { AbstractPhase trainingPhase = this.phaseService.getPhase(phaseId); + trainingDefinitionService.checkIfCanBeUpdated(trainingPhase.getTrainingDefinition()); if (!(trainingPhase instanceof TrainingPhase)) { throw new EntityConflictException(new EntityErrorDetail(AbstractPhase.class, "id", phaseId.getClass(), phaseId, "The specified phase isn't training phase.")); } @@ -99,6 +101,8 @@ public class TaskFacade { "or @securityService.isDesignerOfGivenTask(#taskId)") @TransactionalWO public TaskDTO updateTask(Long taskId, TaskUpdateDTO taskUpdateDto) { + TrainingDefinition trainingDefinition = this.taskService.getTask(taskId).getTrainingPhase().getTrainingDefinition(); + trainingDefinitionService.checkIfCanBeUpdated(trainingDefinition); Task updatedTask = this.taskService.updateTask(taskId, this.taskMapper.mapToEntity(taskUpdateDto)); trainingDefinitionService.auditAndSave(updatedTask.getTrainingPhase().getTrainingDefinition()); return this.taskMapper.mapToTaskDTO(updatedTask); @@ -115,6 +119,7 @@ public class TaskFacade { public void removeTask(Long taskId) { Task taskToRemove = this.taskService.getTask(taskId); TrainingDefinition relatedTrainingDefinition = taskToRemove.getTrainingPhase().getTrainingDefinition(); + trainingDefinitionService.checkIfCanBeUpdated(relatedTrainingDefinition); this.taskService.removeTask(taskToRemove); trainingDefinitionService.auditAndSave(relatedTrainingDefinition); }