/** * @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); } }