private function placeVote($sessionId, $memberId, $voteValue) { // Fetch entities $session = $this->getSession($sessionId); $currentPoll = $session->getCurrentPoll(); $member = $this->getMember($memberId); // Reject votes if poll is completed if ($currentPoll != null && $currentPoll->getResult() > 0) { throw new Exception("Can not vote on completed polls!"); } // Find or create vote foreach ($currentPoll->getVotes() as $vote) { if ($vote->getMember() == $member) { $match = $vote; } } // Create vote if not found if (!isset($match)) { $match = new Vote(); $match->setPoll($currentPoll); $match->setMember($member); } // Set value $match->setValue($voteValue); // Evaluate the poll $this->evaluatePoll($session, $currentPoll); if ($currentPoll->getResult() > 0) { $this->highlightVotes($currentPoll); } // Save all to db $this->saveAll([$match, $currentPoll]); $this->saveAll($currentPoll->getVotes()->toArray()); }
private function placeVote($sessionId, $memberId, $voteValue) { // Fetch entities $session = $this->getSession($sessionId); $currentPoll = $session->getCurrentPoll(); $member = $this->getMember($memberId); // Find or create vote foreach ($currentPoll->getVotes() as $vote) { if ($vote->getMember() == $member) { $match = $vote; } } // Create vote if not found if (!isset($match)) { $match = new Vote(); $match->setPoll($currentPoll); $match->setMember($member); } // Set value $match->setValue($voteValue); // Evaluate current poll $this->evaluatePoll($session, $currentPoll); // Save all to db $this->saveAll([$match, $currentPoll]); }