/** * @Route("/publish/{id}", requirements={"id"="\d+"}) * @ParamConverter("petition", class="CivixCoreBundle:Poll\Question") */ public function publishAction(Request $request, Petition $petition) { if ($petition->getUser() !== $this->getUser() || $petition->getPublishedAt() || $request->get('token') !== $this->getToken()) { throw new AccessDeniedHttpException(); } if (true === $petition->getIsOutsidersSign()) { return $this->redirect($this->generateUrl("civix_front_{$this->getUser()->getType()}_payment_buypublicpetition", array('petition' => $petition->getId()))); } $petition->setPublishedAt(new \DateTime()); $this->getDoctrine()->getManager()->flush($petition); $this->getDoctrine()->getRepository('CivixCoreBundle:HashTag')->addForQuestion($petition); $this->get('civix_core.activity_update')->publishPetitionToActivity($petition); $this->get('session')->getFlashBag()->add('notice', 'The petition has been successfully published'); return $this->redirect($this->generateUrl("civix_front_{$this->getUser()->getType()}_petition_index")); }
/** * @Route("/petitions/buy-outsiders/{petition}") * @ParamConverter( * "petition", * class="CivixCoreBundle:Poll\Question\Petition" * ) * @Template("CivixFrontBundle:Payment:form.html.twig") */ public function buyPublicPetitionAction(Request $request, Petition $petition) { if ($petition->getUser() !== $this->getUser()) { throw new AccessDeniedHttpException(); } $card = new CardModel(); $form = $this->createForm(new CardFormType(), $card); //get marketplace $marketplaceToken = $this->get('civix_core.payments')->getMarketPlaceToken(); if ('POST' === $request->getMethod()) { if ($form->submit($request)->isValid()) { try { $customer = $this->get('civix_core.customer_manager')->getCustomerByUser($this->getUser()); $this->get('civix_core.payments')->buyPublishOutsiderPetition($card, $customer); $petition->setPublishedAt(new \DateTime()); $this->getDoctrine()->getManager()->flush($petition); $this->get('civix_core.activity_update')->publishPetitionToActivity($petition); $this->get('session')->getFlashBag()->add('notice', 'The petition has been successfully published'); return $this->redirect($this->generateUrl("civix_front_{$this->getUser()->getType()}_petition_index")); } catch (\Balanced\Errors\DuplicateAccountEmailAddress $ex) { $this->get('session')->getFlashBag()->add('error', 'User with this email exist in balanced system.'); } catch (\Balanced\Errors\Declined $ex) { $this->get('session')->getFlashBag()->add('error', 'The processor declined the debit. ' . $ex->description); } catch (\Balanced\Errors\NoFundingSource $ex) { $this->get('session')->getFlashBag()->add('error', 'The buyer has not active funding sources. ' . $ex->description); } catch (\Balanced\Errors\CannotDebit $ex) { $this->get('session')->getFlashBag()->add('error', 'The buyer has no debitable funding sources. ' . $ex->description); } catch (\Balanced\Errors\Error $ex) { $this->get('session')->getFlashBag()->add('error', $ex->description); } } } return array('formTitle' => '', 'marketplaceToken' => $marketplaceToken, 'petition' => $petition->getId(), 'form' => $form->createView()); }