/** * 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; }
/** * 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(); }
/** * 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); } } }