public function createQuestionAction(Request $request) { if (!$request->isXmlHttpRequest()) { throw $this->createNotFoundException(); } /** @var \Doctrine\ORM\EntityManager $em */ $em = $this->get('doctrine.orm.entity_manager'); $user = $this->getUser(); $question = new RiskQuestion(); // Add one empty answer row $answer = new RiskAnswer(); $question->addAnswer($answer); $form = $this->createForm(new RiskQuestionFormType(), $question); if ($request->isMethod('post')) { $form->bind($request); if ($form->isValid()) { $question = $form->getData(); $question->setOwner($user); $em->persist($question); foreach ($question->getAnswers() as $answer) { $answer->setQuestion($question); $em->persist($answer); } $em->flush(); return $this->getJsonResponse(array('status' => 'success', 'new_row' => $this->renderView('WealthbotRiaBundle:Risks:_question_row.html.twig', array('question' => $question)))); } else { return $this->getJsonResponse(array('status' => 'error', 'form' => $this->renderView('WealthbotRiaBundle:Risks:_question_form.html.twig', array('form' => $form->createView())))); } } return $this->getJsonResponse(array('status' => 'success', 'content' => $this->renderView('WealthbotRiaBundle:Risks:_question_form.html.twig', array('form' => $form->createView())))); }
public function setUp() { $questions = array(); for ($i = 0; $i < 4; $i++) { $question = new RiskQuestion(); $question->setTitle('Question ' . ($i + 1)); for ($j = 0; $j < 4; $j++) { $answer = new RiskAnswer(); $answer->setTitle('Answer ' . ($i + 1) . ' - ' . ($j + 1)); $answer->setQuestion($question); $answer->setPoint($j); $question->addAnswer($answer); } $questions[] = $question; } $userAnswers = array(); foreach ($questions as $key => $question) { $userAnswer = new ClientQuestionnaireAnswer(); $userAnswer->setQuestion($question); $questionAnswers = $question->getAnswers(); $userAnswer->setAnswer($questionAnswers[$key]); $userAnswers[] = $userAnswer; } $portfolio = new CeModel(); for ($i = 0; $i < 4; $i++) { $modelMock = $this->getMock('Wealthbot\\AdminBundle\\Entity\\CeModel', array('getId')); $modelMock->expects($this->any())->method('getId')->will($this->returnValue($i + 1)); $modelMock->setName('Model ' . ($i + 1)); $modelMock->setRiskRating($i + 1); $portfolio->addChildren($modelMock); } $riaCompanyInformation = new RiaCompanyInformation(); $riaCompanyInformation->setPortfolioModel($portfolio); $ria = new User(); $ria->setRoles(array('ROLE_RIA')); $ria->setRiaCompanyInformation($riaCompanyInformation); $userProfile = new Profile(); $userProfile->setRia($ria); $user = new User(); $user->setRoles(array('ROLE_CLIENT')); $user->setProfile($userProfile); $this->riskTolerance = new RiskTolerance($user, $userAnswers); }
public function load(ObjectManager $manager) { /** @var User $adminUser */ $adminUser = $this->getReference('user-admin'); $riskQuestion1 = new RiskQuestion(); $riskQuestion1->setOwner($adminUser); $riskQuestion1->setTitle("The global stock market is often volatile. If your entire investment portfolio lost 10% of its value in a month during a market decline, what would you do?"); $riskQuestion1->setDescription("Lorem ipsum"); $riskQuestion1->setSequence(2); $manager->persist($riskQuestion1); $riskQuestion2 = new RiskQuestion(); $riskQuestion2->setOwner($adminUser); $riskQuestion2->setTitle("Which set of hypothetical portfolio returns in a year is most acceptable to you?"); $riskQuestion2->setDescription("Lorem ipsum"); $riskQuestion2->setSequence(3); $manager->persist($riskQuestion2); $riskQuestion3 = new RiskQuestion(); $riskQuestion3->setOwner($adminUser); $riskQuestion3->setTitle("Choose the statement that best reflects your thoughts about reaching your financial goal:"); $riskQuestion3->setDescription("Lorem ipsum"); $riskQuestion3->setSequence(4); $manager->persist($riskQuestion3); $riskQuestion4 = new RiskQuestion(); $riskQuestion4->setOwner($adminUser); $riskQuestion4->setTitle("Will you need up to ¼ of your portfolio within the next 10 years for a large expense (house, college, etc.)?"); $riskQuestion4->setDescription("Lorem ipsum"); $riskQuestion4->setSequence(5); $manager->persist($riskQuestion4); $manager->flush(); $this->addReference('risk-question-1', $riskQuestion1); $this->addReference('risk-question-2', $riskQuestion2); $this->addReference('risk-question-3', $riskQuestion3); $this->addReference('risk-question-4', $riskQuestion4); }
private function saveRiskQuestions(ObjectManager $manager, User $owner) { foreach ($this->riskProfiling as $qIndex => $questionItem) { $adminQuestion = $this->getReference('risk-question-' . $questionItem['question_index']); $question = new RiskQuestion(); $question->setTitle($adminQuestion->getTitle()); $question->setDescription($adminQuestion->getDescription()); $question->setIsWithdrawAgeInput($adminQuestion->getIsWithdrawAgeInput()); $question->setOwner($owner); $question->setSequence($questionItem['sequence']); foreach ($questionItem['answers'] as $aIndex => $answerItem) { $adminAnswer = $this->getReference('risk-answer-' . $questionItem['question_index'] . '-' . $answerItem['answer_index']); $answer = new RiskAnswer(); $answer->setQuestion($question); $answer->setTitle($adminAnswer->getTitle()); $answer->setPoint($answerItem['point']); $question->addAnswer($answer); $this->addReference('cec-answer-' . $qIndex . '-' . $aIndex, $answer); } $manager->persist($question); $this->addReference('cec-question-' . $qIndex, $question); } }
/** * Return RiskAnswer object for withdraw age input question * * @param RiskQuestion $question * @param $ageDiff * @return null|RiskAnswer */ private function getAnswerForWithdrawAgeQuestion(RiskQuestion $question, $ageDiff) { $answers = $this->em->getRepository('WealthbotRiaBundle:RiskAnswer')->findBy(array('risk_question_id' => $question->getId()), array('title' => 'DESC')); $result = null; /** @var RiskAnswer $answer */ foreach ($answers as $answer) { $string = $answer->getTitle(); $symbol = substr($string, 0, 1); $number = (int) substr($string, 1); if ($symbol == '>') { if ($ageDiff >= $number) { return $answer; } } else { if ($ageDiff <= $number) { $result = $answer; } } } return $result; }