src/FMT/Application/Controller/Common/CampaignController.php line 42

Open in your IDE?
  1. <?php
  2. namespace FMT\Application\Controller\Common;
  3. use FMT\Data\Entity\Campaign;
  4. use FMT\Domain\Service\Manager\CampaignManager;
  5. use FMT\Application\Controller\AbstractBaseController;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  7. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. /**
  15.  * Class CampaignController
  16.  *
  17.  * @var Response
  18.  * @var Route
  19.  * @var Template
  20.  * @var Security
  21.  * @var Method
  22.  * @var ParamConverter
  23.  *
  24.  * @package FMT\Application\Controller
  25.  * @Route("/campaign")
  26.  * @Template()
  27.  */
  28. class CampaignController extends AbstractBaseController
  29. {
  30.     const ROUTE_VIEW "fmt-common-campaign-view";
  31.     const ROUTE_VALIDATE_DONATE_AMOUNT "fmt-common-campaign-validate-donate-amount";
  32.     /**
  33.      * @param Campaign $campaign
  34.      * @return array
  35.      * @Route("/{id}/view", requirements={"id":"\d+"}, name=CampaignController::ROUTE_VIEW)
  36.      * @Security("is_granted('canView', campaign)")
  37.      */
  38.     public function viewAction(Campaign $campaign)
  39.     {
  40.         $user $this->getUser();
  41.         $userIsNotStudent $user ? !$user->isStudent() : null;
  42.         $activeUserId $user $user->getId() : null;
  43.         $this->addCantDonateWarning($campaign);
  44.         return [
  45.             'campaign' => $campaign,
  46.             'userIsNotStudent' => $userIsNotStudent,
  47.             'activeUserId' => $activeUserId
  48.         ];
  49.     }
  50.     /**
  51.      * @param Campaign $campaign
  52.      */
  53.     private function addCantDonateWarning(Campaign $campaign)
  54.     {
  55.         $currentUser $this->getUser();
  56.         if (!empty($currentUser) && $campaign->getUser() !== $currentUser && $currentUser->isStudent()) {
  57.             $this->addFlashBagError('fmt.campaign.student_donate_not_implemented');
  58.         }
  59.     }
  60.     /**
  61.      * @Route(
  62.      *     "/{id}/validate-donate-amount",
  63.      *      requirements={"id":"\d+"},
  64.      *      name=CampaignController::ROUTE_VALIDATE_DONATE_AMOUNT
  65.      *     )
  66.      * @param Request $request
  67.      * @param Campaign $campaign
  68.      * @param CampaignManager $campaignManager
  69.      * @return JsonResponse
  70.      */
  71.     public function validateDonateAmountAction(
  72.         Request $request,
  73.         Campaign $campaign,
  74.         CampaignManager $campaignManager
  75.     ) {
  76.         $this->checkAjaxRequest($request);
  77.         $amount $request->get('amount''0');
  78.         return new JsonResponse($campaignManager->validateDonateAmount($campaign$amount));
  79.     }
  80. }