/** * @param Configuration $configuration * @param ElectionCircular $electionCircular */ public function inviteElectors(Configuration $configuration, ElectionCircular $electionCircular) { $limit = $configuration->getNumberOfMails(); $receiver = []; $possibleReceivers = $electionCircular->getRemainingReceivers(); while (count($receiver) < $limit && count($possibleReceivers) > 0) { /** @var Elector $possibleReceiver */ $possibleReceiver = array_shift($possibleReceivers); $receiver[] = $possibleReceiver; $electionInvitation = new ElectionInvitation(); $electionInvitation->setElector($possibleReceiver); $electionInvitation->setElectionCircular($electionCircular); $electionInvitation->setSecret(GeneralUtility::getRandomHexString(mt_rand(180, 220))); $this->electionInvitationRepository->add($electionInvitation); $this->electionInvitationRepository->persistAll(); $electionInvitation->setSuccess($this->sendElectionInvitation($configuration, $electionInvitation)); $this->electionInvitationRepository->update($electionInvitation); $this->electionInvitationRepository->persistAll(); } }
/** * @param ElectionVoting $electionVoting * @validate $electionVoting \TYPO3\Election\Domain\Validator\ElectionVotingValidator */ public function submitVoteAction(ElectionVoting $electionVoting) { $electionInvitation = $electionVoting->getElectionInvitation(); if ($electionInvitation->isVoted()) { $this->addFlashMessage(LocalizationUtility::translate('controller.fe.election.vote.already_voted', 'election'), LocalizationUtility::translate('controller.fe.election.vote.request_failed', 'election'), AbstractMessage::ERROR); $this->redirect(FeDashboardController::ACTION_INDEX, FeDashboardController::CONTROLLER_NAME); } $electionInvitation->setVoted(true); $this->electionInvitationRepository->update($electionInvitation); foreach ($electionVoting->getNominees() as $electedNominee) { $electionVote = $this->objectManager->get(ElectionVote::class); $electionVote->setElection($electionInvitation->getElectionCircular()->getElection()); $electionVote->setElector($electionInvitation->getElector()); $electionVote->setNominee($electedNominee); $this->electionVoteRepository->add($electionVote); } $this->addFlashMessage(LocalizationUtility::translate('controller.fe.election.vote.thank_you', 'election'), LocalizationUtility::translate('controller.fe.election.vote.success', 'election'), AbstractMessage::SUCCESS); $this->redirect(FeDashboardController::ACTION_INDEX, FeDashboardController::CONTROLLER_NAME); }