Skip to content
Snippets Groups Projects
Commit d99672fa authored by Jan Tymel's avatar Jan Tymel
Browse files

Add API for question choices removal

parent c4e1c613
No related branches found
No related tags found
No related merge requests found
......@@ -265,4 +265,19 @@ public class AdaptiveTrainingDefinitionsRestController {
levelOperationsService.updateQuestionChoice(questionChoiceUpdateDto);
}
@ApiOperation(httpMethod = "DELETE",
value = "Delete a specified question choice",
nickname = "deleteQuestionChoice",
produces = MediaType.APPLICATION_JSON_VALUE
)
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Question choice deleted"),
@ApiResponse(code = 500, message = "Unexpected application error")
})
@DeleteMapping(value = "/question-choices/{questionChoiceId}", produces = MediaType.APPLICATION_JSON_VALUE)
public void deleteQuestionChoice(
@ApiParam(value = "Question choice ID", required = true) @PathVariable(name = "questionChoiceId") Long questionChoiceId) {
levelOperationsService.deleteQuestionChoice(questionChoiceId);
}
}
......@@ -2,6 +2,7 @@ package com.example.demo.repository;
import com.example.demo.domain.QuestionChoice;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
......@@ -9,4 +10,11 @@ public interface QuestionChoiceRepository extends JpaRepository<QuestionChoice,
@Query("SELECT COALESCE(MAX(q.order), -1) FROM QuestionChoice q WHERE q.question.id = :questionId")
Integer getCurrentMaxOrder(@Param("questionId") Long questionId);
@Modifying
@Query("UPDATE QuestionChoice q SET q.order = q.order - 1 " +
"WHERE q.question.id = :questionId " +
"AND q.order > :order ")
void decreaseOrderAfterQuestionChoiceWasDeleted(@Param("order") int order, @Param("questionId") Long questionId);
}
......@@ -97,6 +97,11 @@ public class LevelOperationsService {
baseLevelRepository.delete(levelEntity.get());
}
@Transactional
public void deleteQuestionChoice(Long questionChoiceId) {
questionChoiceService.deleteQuestionChoice(questionChoiceId);
}
public BaseLevelDto createLevel(Long trainingDefinitionId, LevelType levelType) {
BaseLevelDto baseLevelDto;
if (levelType.equals(LevelType.info)) {
......
package com.example.demo.service;
import com.example.demo.domain.BaseLevel;
import com.example.demo.domain.Question;
import com.example.demo.domain.QuestionChoice;
import com.example.demo.dto.QuestionChoiceDto;
......@@ -58,4 +59,17 @@ public class QuestionChoiceService {
return BeanMapper.INSTANCE.toDto(savedEntity);
}
public void deleteQuestionChoice(Long questionChoiceId) {
Optional<QuestionChoice> questionChoice = questionChoiceRepository.findById(questionChoiceId);
if (questionChoice.isEmpty()) {
// TODO throw a proper exception
return;
}
int questionChoiceOrder = questionChoice.get().getOrder();
questionChoiceRepository.decreaseOrderAfterQuestionChoiceWasDeleted(questionChoiceOrder, questionChoice.get().getQuestion().getId());
questionChoiceRepository.delete(questionChoice.get());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment