/**
  * Close voting
  *
  * @return void
  */
 public function handleClose()
 {
     $issues = $this->issueRepository->findAll();
     $priorities = [];
     $sumTotalValue = $sumRisk = $sumCost = 0;
     // Hydrate fields from JIRA + make sums
     foreach ($issues as $issue) {
         $priority = $this->jiraService->hydratePriority($issue);
         $priority->setPositiveValue($this->voteRepository->getTotalVotes($issue));
         $priority->setTotalValue((int) $priority->getPositiveValue() + (int) $priority->getNegativeValue());
         $sumTotalValue += (int) $priority->getTotalValue();
         $sumRisk += (int) $priority->getRisk();
         $sumCost += (int) $priority->getCost();
         $priorities[] = $priority;
     }
     /** @var Priority $priority */
     foreach ($priorities as $priority) {
         $totalValuePercentage = $sumTotalValue > 0 ? (int) $priority->getTotalValue() / $sumTotalValue * 100 : 0;
         $priority->setTotalValuePercentage($totalValuePercentage);
         $costPercentage = $sumCost > 0 ? (int) $priority->getCost() / $sumCost * 100 : 0;
         $priority->setCostPercentage($costPercentage);
         $riskPercentage = $sumRisk > 0 ? (int) $priority->getRisk() / $sumRisk * 100 : 0;
         $priority->setRiskPercentage($riskPercentage);
         $priority->setPriority($priority->getTotalValuePercentage() / ($priority->getCostPercentage() + $priority->getRiskPercentage() * 0.5));
         $this->priorityRepository->persist($priority);
     }
     $this->priorityRepository->flush();
     $this->fileSystem->remove($this->votingOpenFile);
     return;
 }
 /**
  * @return array
  */
 public function getGrid()
 {
     $issueGrid = [];
     /** @var Issue $issue */
     foreach ($this->issueRepository->findAll() as $issue) {
         $issueGrid[$issue->getId()]['key'] = $issue->getJiraKey();
         $issueGrid[$issue->getId()]['summary'] = $issue->getSummary();
         /** @var PersistentCollection $votes */
         $votes = $issue->getVotes();
         /** @var Stakeholder $stakeholder */
         foreach ($this->stakeHolderRepository->findAll() as $stakeholder) {
             $vote = $votes->matching(Criteria::create()->where(Criteria::expr()->eq('stakeholder', $stakeholder)))->first();
             $vote = $vote ? $vote->getVote() : 0;
             $issueGrid[$issue->getId()]['stakeholders'][$stakeholder->getId()] = $vote;
         }
     }
     $stakeholderGrid = [];
     foreach ($this->stakeHolderRepository->findAll() as $stakeholder) {
         $stakeholderGrid[$stakeholder->getId()] = ['name' => $stakeholder->getName(), 'allowedVotes' => $stakeholder->getAllowedVotes()];
     }
     return ['stakeholders' => $stakeholderGrid, 'issues' => $issueGrid];
 }