/**
  * @Route("/electedofficial/{id}/vote/create")
  * @Template("GovWikiAdminBundle:ElectedOfficial:_create_vote_modal.html.twig")
  *
  * @param ElectedOfficial $electedOfficial
  * @param Request         $request
  * @return Response|JsonResponse
  */
 public function createAction(ElectedOfficial $electedOfficial, Request $request)
 {
     if ($request->isXmlHttpRequest()) {
         $em = $this->getDoctrine()->getManager();
         $issueCategories = $em->getRepository('GovWikiDbBundle:IssueCategory')->findAll();
         if ($request->getMethod() == 'POST') {
             $vote = new ElectedOfficialVote();
             $voteData = $request->request->get('vote');
             $vote->setElectedOfficial($electedOfficial)->setVote($voteData['vote'])->setDidElectedOfficialProposeThis($voteData['didElectedOfficialProposeThis']);
             $legislationType = $request->request->get('legislationType');
             if ($legislationType == 'existing') {
                 $vote->setLegislation($em->getRepository('GovWikiDbBundle:Legislation')->find($voteData['legislation']));
             } elseif ($legislationType == 'new') {
                 $legislation = new Legislation();
                 $legislationData = $request->request->get('legislation');
                 foreach ($legislationData as $field => $value) {
                     if ($field != 'issueCategory') {
                         if ($field == 'dateConsidered') {
                             $value = new \DateTime($value);
                         }
                         $setter = 'set' . ucfirst($field);
                         $legislation->{$setter}($value);
                     } else {
                         $legislation->setIssueCategory($em->getRepository('GovWikiDbBundle:IssueCategory')->find($value));
                     }
                 }
                 $em->persist($legislation);
                 $vote->setLegislation($legislation);
             }
             $em->persist($vote);
             $em->flush();
             return new JsonResponse(['reload' => true]);
         }
         return ['electedOfficial' => $electedOfficial, 'issueCategories' => $issueCategories, 'action' => $this->generateUrl('govwiki_admin_electedofficialvote_create', ['id' => $electedOfficial->getId()])];
     } else {
         return new Response(null, 400);
     }
 }