/**
  * @EXT\Route(
  *     "/survey/{survey}/model/{model}/details/retrieve",
  *     name="claro_survey_retrieve_model_details",
  *     options={"expose"=true}
  * )
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function retrieveModelDetailsAction(Survey $survey, QuestionModel $model)
 {
     $canEdit = $this->hasSurveyRight($survey, 'EDIT');
     $workspaceIdA = $survey->getResourceNode()->getWorkspace()->getId();
     $workspaceIdB = $model->getWorkspace()->getId();
     if (!$canEdit || $workspaceIdA !== $workspaceIdB) {
         throw new AccessDeniedException();
     }
     return new Response(json_encode($model->getDetails()), 200);
 }
 public function createQuestionModel(Question $question)
 {
     $questionType = $question->getType();
     $model = new QuestionModel();
     $model->setTitle($question->getTitle());
     $model->setQuestionType($questionType);
     $model->setWorkspace($question->getWorkspace());
     $details = [];
     switch ($questionType) {
         case 'multiple_choice_single':
         case 'multiple_choice_multiple':
             $choiceQuestion = $this->getMultipleChoiceQuestionByQuestion($question);
             $details['questionType'] = $questionType;
             if ($question->isCommentAllowed()) {
                 $details['withComment'] = 'comment';
                 $details['commentLabel'] = $question->getCommentLabel();
             } else {
                 $details['withComment'] = 'no-comment';
             }
             $horizontal = !is_null($choiceQuestion) && $choiceQuestion->getHorizontal();
             $details['choiceDisplay'] = $horizontal ? 'horizontal' : 'vertical';
             $details['choices'] = [];
             if (!is_null($choiceQuestion)) {
                 $choices = $this->getChoicesByQuestion($question);
                 foreach ($choices as $choice) {
                     $choiceDetails = [];
                     $choiceDetails['other'] = $choice->isOther() ? 'other' : 'not-other';
                     $choiceDetails['content'] = $choice->getContent();
                     $details['choices'][] = $choiceDetails;
                 }
             }
             break;
         case 'open_ended':
         case 'open_ended_bare':
         case 'simple_text':
         default:
             break;
     }
     $model->setDetails($details);
     $this->om->persist($model);
     $this->om->flush();
 }