public function __construct(\Civix\CoreBundle\Entity\Poll\Question $question = null)
 {
     $this->question = $question;
     foreach ($question->getEducationalContext() as $context) {
         $this->items[] = new EducationalItem($context);
     }
 }
Пример #2
0
 public function checkAccessAnswer(User $user, Question $question)
 {
     if ($question instanceof Petition && $question->getIsOutsidersSign()) {
         return true;
     }
     $questionOwner = $question->getUser();
     if ($questionOwner instanceof Superuser) {
         return true;
     }
     if ($questionOwner instanceof Group) {
         $userGroup = $this->entityManager->getRepository('CivixCoreBundle:UserGroup')->isJoinedUser($questionOwner, $user);
         if ($userGroup instanceof UserGroup && $userGroup->getStatus() == UserGroup::STATUS_ACTIVE) {
             return true;
         }
         return false;
     }
     if ($questionOwner instanceof Representative) {
         $userDistricts = $user->getDistrictsIds();
         if (array_search($questionOwner->getDistrictId(), $userDistricts) !== false) {
             return true;
         }
         return false;
     }
     return false;
 }
 public function updateResponseCountQuestion(Question $question)
 {
     $query = $this->getEntityManager()->createQuery('UPDATE Civix\\CoreBundle\\Entity\\Activities\\Question a
                           SET a.responsesCount = :questions_count
                         WHERE a.questionId = :question');
     $query->setParameter('question', $question->getId())->setParameter('questions_count', $question->getAnswersCount());
     return $query->execute();
 }
Пример #4
0
 /**
  * @Route("/{id}/answers/")
  * @Method("GET")
  */
 public function answersListAction(Question $question)
 {
     if ($question->getUser() !== $this->getUser()) {
         return $this->createJSONResponse('', 403);
     }
     $answers = $this->getDoctrine()->getRepository(Answer::class)->findByQuestion($question);
     return $this->createJSONResponse($this->jmsSerialization($answers, ['api-leader-answers']));
 }
Пример #5
0
 private function getQuestionDetails(Question $question, $class)
 {
     try {
         $questionDetails = $this->getDoctrine()->getRepository('CivixCoreBundle:Poll\\Question')->getPublishedQuestionWithAnswers($question->getId(), $class);
     } catch (LogicException $e) {
         throw $this->createNotFoundException();
     }
     if (!$questionDetails) {
         throw $this->createNotFoundException();
     }
     $statistics = $question->getStatistic(['#7ac768', '#ba3830', '#4fb0f3', '#dbfa08', '#08fac4']);
     return ['statistics' => $statistics, 'question' => $questionDetails];
 }
 /**
  * @param Question $question
  * @param bool $saveTagsInEntity
  */
 public function addForQuestion(Question $question, $saveTagsInEntity = true)
 {
     $em = $this->getEntityManager();
     if ($question instanceof PollPetition) {
         $tags = HashTagParser::parseHashTags($question->getPetitionBody());
     } else {
         $tags = HashTagParser::parseHashTags($question->getSubject());
     }
     foreach ($tags['parsed'] as $tag) {
         $entity = $this->findOneByName($tag);
         if (!$entity) {
             $entity = new HashTag($tag);
             $em->persist($entity);
         }
         $entity->addQuestion($question);
         $em->flush($entity);
     }
     if ($saveTagsInEntity) {
         $question->setCachedHashTags($tags['original']);
         $em->flush($question);
     }
 }
 public function findNotPaidOut(Question $question)
 {
     return $this->createQueryBuilder('ph')->where('ph.question_id = :question')->andWhere('ph.state = :state')->andWhere('ph.paidOut IS NULL')->andWhere('ph.toUser IS NOT NULL')->setParameter('state', PaymentHistory::STATE_SUCCESS)->setParameter('question', $question->getId())->getQuery()->getResult();
 }
 private function getPreviewByPoll(Question $question)
 {
     if ($question instanceof \Civix\CoreBundle\Entity\Poll\Question\Petition) {
         return $this->preparePreview($question->getPetitionTitle());
     }
     if ($question instanceof \Civix\CoreBundle\Entity\Poll\Question\PaymentRequest) {
         return $this->preparePreview($question->getTitle());
     }
     if ($question instanceof \Civix\CoreBundle\Entity\Poll\Question\LeaderEvent) {
         return $this->preparePreview($question->getTitle());
     }
     return $this->preparePreview($question->getSubject());
 }
Пример #9
0
 private function createActivityConditionsForQuestion(Activity $activity, Question $question)
 {
     if ($activity->getRepresentative() && $activity->getRepresentative()->getDistrict()) {
         $this->createRepresentativeActivityConditions($activity);
     } elseif ($activity->getGroup()) {
         if ($question instanceof GroupSectionInterface && $question->getGroupSections()->count() > 0) {
             foreach ($question->getGroupSections() as $section) {
                 $this->createGroupSectionActivityConditions($activity, $section);
             }
         } else {
             $this->createGroupActivityConditions($activity);
         }
     } elseif ($activity->getSuperuser()) {
         $this->createSuperuserActivityConditions($activity);
     }
 }
Пример #10
0
 /**
  * @param string $subject
  * @return $this
  */
 public function setSubject($subject)
 {
     parent::setSubject($subject);
     $this->setSubjectParsed(\Civix\CoreBundle\Parser\UrlConverter::convert($subject));
     return $this;
 }
Пример #11
0
 /**
  * @param  \Civix\CoreBundle\Entity\Poll\Question $question
  * @param  type                                   $answersCount
  * @return \Civix\CoreBundle\Entity\Poll\Option
  */
 protected function createNewOption(\Civix\CoreBundle\Entity\Poll\Question $question, $answersCount = 0)
 {
     $option = new \Civix\CoreBundle\Entity\Poll\Option();
     for ($i = 0; $i < $answersCount; $i++) {
         $answer = $this->getNewAnswer();
         $option->addAnswer($answer);
         $question->addAnswer($answer);
     }
     return $option;
 }
 /**
  * @Route("/details/{id}", requirements={"id"="\d+"})
  * @ParamConverter("question", class="CivixCoreBundle:Poll\Question")
  * @Template("CivixFrontBundle:Question:details.html.twig")
  */
 public function detailsAction(Request $request, Question $question)
 {
     $entityManager = $this->getDoctrine()->getManager();
     $statistics = $question->getStatistic(['#7ac768', '#ba3830', '#4fb0f3', '#dbfa08', '#08fac4']);
     $query = $entityManager->getRepository('CivixCoreBundle:Poll\\Answer')->getAnswersByQuestion($question->getId());
     $pagination = $this->get('knp_paginator')->paginate($query, $this->getRequest()->get('page', 1), 20);
     return ['statistics' => $statistics, 'pagination' => $pagination];
 }
Пример #13
0
 public function setQuestion(Question $question)
 {
     $this->question = $question;
     $this->questionOwner = $this->getClassName($question->getUser());
 }