Example #1
0
 /**
  * Get rank information for a picture
  *
  * @param Picture $picture
  *
  * @return array
  */
 public function getRankForPicture(Picture $picture)
 {
     $ranking = $this->getRankingForCompetition($picture->getCompetition(), null);
     foreach ($ranking as $rank) {
         if ($rank['picture']->getId() === $picture->getId()) {
             return $rank;
         }
     }
     return null;
 }
Example #2
0
 /**
  * Get votes for a given picture
  *
  * @param Picture $picture
  * @param integer $limit
  *
  * @return array
  */
 public function getVotesForPicture(Picture $picture, $limit = 50)
 {
     return $this->repository->createQueryBuilder('v')->where('v.votedForPicture = :pictureId')->orWhere('v.votedAgainstPicture = :pictureId')->setParameter('pictureId', $picture->getId())->addOrderBy('v.votedAt', 'DESC')->setMaxResults($limit)->getQuery()->getResult();
 }
Example #3
0
 /**
  * Update a combination status
  *
  * @param Competition $competition
  * @param Picture     $leftPicture
  * @param Picture     $rightPicture
  *
  * @return void
  */
 private function updateCombinationStatus(Competition $competition, Picture $leftPicture, Picture $rightPicture)
 {
     if ($leftPicture->getId() < $rightPicture->getId()) {
         $combination = $this->getCombinationByPictures($competition, $leftPicture, $rightPicture);
         if (empty($combination)) {
             $combination = new Combination();
             $combination->setCompetition($competition);
             $combination->setLeftPicture($leftPicture);
             $combination->setRightPicture($rightPicture);
         }
         $active = false;
         if ($leftPicture->isActive() && $rightPicture->isActive()) {
             $active = true;
         }
         if ($combination->getActive() !== $active) {
             $combination->setActive($active);
             $this->entityManager->persist($combination);
         }
     }
 }