/** * @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 ElectionCircular $electionCircular * @param Elector $elector * @param Configuration $configuration * @return bool */ public function sendElectionCircularToElector(ElectionCircular $electionCircular, Elector $elector, Configuration $configuration) { $mail = GeneralUtility::makeInstance(MailMessage::class); $mail->setSubject($electionCircular->getSubject()); $mail->setFrom([$configuration->getFromEmail() => $configuration->getFromName()]); $electionInvitation = new ElectionInvitation(); $electionInvitation->setElector($elector); $electionInvitation->setElectionCircular($electionCircular); $electionInvitation->setSecret(GeneralUtility::getRandomHexString(mt_rand(180, 220))); $electionInvitationRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(ElectionInvitationRepository::class); $electionInvitationRepository->add($electionInvitation); $electionInvitationRepository->persistAll(); if ($configuration->isDebug()) { $mail->setTo([$configuration->getTestEmail() => $elector->getFullName()]); } else { $mail->setTo([$elector->getEmail() => $elector->getFullName()]); } $mail->setBody($electionCircular->getRenderedBody($configuration, $electionInvitation)); return $mail->send() === 1; }