/**
  * @param ElectionInvitation $electionInvitation
  * @param string $hmac
  * @return string
  */
 public function voteAction(ElectionInvitation $electionInvitation = null, $hmac = '')
 {
     if (null !== $electionInvitation && '' !== $hmac) {
         $saltedEmail = $electionInvitation->getSecret() . $electionInvitation->getElector()->getEmail();
         if ($this->hashService->validateHmac($saltedEmail, $hmac)) {
             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);
             } elseif ($electionInvitation->getElectionEndDateAsTimestamp() < time()) {
                 $this->addFlashMessage(LocalizationUtility::translate('controller.fe.election.vote.election_finished', 'election'), LocalizationUtility::translate('controller.fe.election.vote.request_failed', 'election'), AbstractMessage::ERROR);
                 $this->redirect(FeDashboardController::ACTION_INDEX, FeDashboardController::CONTROLLER_NAME);
             } else {
                 $this->view->assign('electionInvitation', $electionInvitation);
                 $this->view->assign('electionVoting', new ElectionVoting());
             }
         } else {
             $this->addFlashMessage(LocalizationUtility::translate('controller.fe.election.vote.hmac_invalid', 'election'), LocalizationUtility::translate('controller.fe.election.vote.request_failed', 'election'), AbstractMessage::ERROR);
             $this->redirect(FeDashboardController::ACTION_INDEX, FeDashboardController::CONTROLLER_NAME);
         }
     } else {
         $this->addFlashMessage(LocalizationUtility::translate('controller.fe.election.vote.no_election_or_hmac', 'election'), LocalizationUtility::translate('controller.fe.election.vote.request_failed', 'election'), AbstractMessage::ERROR);
         $this->redirect(FeDashboardController::ACTION_INDEX, FeDashboardController::CONTROLLER_NAME);
     }
 }