/** * @test */ public function removeVotingFromObjectStorageHoldingVotings() { $voting = new \Visol\EasyvoteEducation\Domain\Model\Voting(); $votingsObjectStorageMock = $this->getMock('TYPO3\\CMS\\Extbase\\Persistence\\ObjectStorage', array('detach'), array(), '', FALSE); $votingsObjectStorageMock->expects($this->once())->method('detach')->with($this->equalTo($voting)); $this->inject($this->subject, 'votings', $votingsObjectStorageMock); $this->subject->removeVoting($voting); }
/** * Get all parties that are (still) available for the current panel * For each panel, a party can only be added in one panelInvitation * This method is called by Select2 AJAX to ensure only available parties can be added * * @param Panel $panel * @return string */ public function getAvailablePartiesForPanelAction(Panel $panel) { $parties = $this->partyRepository->findYoungParties(); // Build an array containing all parties that are already part of existing panelInvitations $unavailableParties = array(); foreach ($panel->getPanelInvitations() as $panelInvitation) { /** @var PanelInvitation $panelInvitation */ foreach ($panelInvitation->getAllowedParties() as $unavailableParty) { /** @var \Visol\Easyvote\Domain\Model\Party $unavailableParty */ $unavailableParties[] = $unavailableParty->getUid(); } } $returnArray['results'] = array(); foreach ($parties as $party) { /** @var $party \Visol\Easyvote\Domain\Model\Party */ // If current party was used before, it may not be used again if (in_array($party->getUid(), $unavailableParties)) { continue; } $returnArray['results'][] = array('id' => $party->getUid(), 'text' => $party->getTitle(), 'shortTitle' => $party->getShortTitle()); } $returnArray['more'] = FALSE; return json_encode($returnArray); }
/** * Sets panel state to beginning (currentState => empty) and removes all votes from all votingOptions from all votings * * @param Panel $panel * @throws \TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException */ protected function resetPanel(Panel $panel) { $panel->setCurrentState(''); foreach ($panel->getVotings() as $voting) { /** @var $voting \Visol\EasyvoteEducation\Domain\Model\Voting */ foreach ($voting->getVotingOptions() as $votingOption) { /** @var $votingOption \Visol\EasyvoteEducation\Domain\Model\VotingOption */ $votingOption->getVotes()->removeAll($votingOption->getVotes()); $this->votingOptionRepository->update($votingOption); } } $this->persistenceManager->persistAll(); }
/** * Check if the currently logged in user is the owner of a panel * * @param Panel $panel * @return bool */ public function isCurrentUserOwnerOfPanel(Panel $panel) { if ($communityUser = $this->getLoggedInUser()) { if ($panel->getCommunityUser() === $communityUser) { return true; } else { return false; } } else { return false; } }
/** * @param Panel $panel */ public function processVotingResult(Panel $panel) { $voting = $panel->getCurrentVoting(); $votesCount = 0; foreach ($voting->getVotingOptions() as $votingOption) { /** @var \Visol\EasyvoteEducation\Domain\Model\VotingOption $votingOption */ $votesCountForVotingOption = $votingOption->getVotes()->count(); $votingOption->setCachedVotes($votesCountForVotingOption); $votesCount = $votesCount + $votesCountForVotingOption; $this->votingOptionRepository->update($votingOption); } $this->persistenceManager->persistAll(); // $votesCount is complete foreach ($voting->getVotingOptions() as $votingOption) { /** @var \Visol\EasyvoteEducation\Domain\Model\VotingOption $votingOption */ if ($votesCount > 0) { $votingResult = round($votingOption->getCachedVotes() / $votesCount, 5) * 100; $votingOption->setCachedVotingResult((int) $votingResult); } else { $votingOption->setCachedVotingResult(0); } $this->votingOptionRepository->update($votingOption); } $this->persistenceManager->persistAll(); }
/** * Send an invitiation to all politicians affected by a panel * Affected by a panel means: * a) Living in the Kanton a panel takes place * b) Are politicians of a Party that is allowed for a Panel invitation * * @param Panel $panel */ public function sentMailAboutPanelToAffectedPoliticians(Panel $panel) { if (is_null($panel->getCity())) { return FALSE; } if (count($panel->getPanelInvitations())) { foreach ($panel->getPanelInvitations() as $panelInvitation) { /** @var $panelInvitation \Visol\EasyvoteEducation\Domain\Model\PanelInvitation */ if (count($panelInvitation->getAllowedParties())) { foreach ($panelInvitation->getAllowedParties() as $party) { /** @var $party \Visol\Easyvote\Domain\Model\Party */ $demand = []; $demand['kanton'] = $panel->getCity()->getKanton()->getUid(); $partyMembers = $this->communityUserRepository->findPoliticiansByPartyAndDemand($party, $demand); foreach ($partyMembers as $partyMember) { /** @var $partyMember \Visol\Easyvote\Domain\Model\CommunityUser */ // Send information e-mail to politician /** @var \Visol\Easyvote\Service\TemplateEmailService $templateEmail */ $templateEmail = $this->objectManager->get('Visol\\Easyvote\\Service\\TemplateEmailService'); $templateEmail->addRecipient($partyMember); $templateEmail->setTemplateName('panelCreatePolitician'); $templateEmail->setExtensionName('easyvoteeducation'); $templateEmail->assign('panel', $panel); $templateEmail->enqueue(); } } } } } }