src/Bidcoz/Bundle/FrontendBundle/Controller/Auction/WatchlistController.php line 31

Open in your IDE?
  1. <?php
  2. namespace Bidcoz\Bundle\FrontendBundle\Controller\Auction;
  3. use Bidcoz\Bundle\CoreBundle\Controller\CoreController;
  4. use Bidcoz\Bundle\CoreBundle\Entity\Auction\Auction;
  5. use Bidcoz\Bundle\CoreBundle\Entity\Auction\Item;
  6. use Bidcoz\Bundle\CoreBundle\Entity\Campaign;
  7. use Bidcoz\Bundle\CoreBundle\Entity\Organization;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. /**
  14.  * @Route("/{orgSlug}/{campaignSlug}/auction/watchlist")
  15.  * @IsGranted("VIEW", subject="organization")
  16.  * @IsGranted("FRONT_END", subject="campaign")
  17.  */
  18. class WatchlistController extends CoreController
  19. {
  20.     /**
  21.      * @Route("", name="auction_watchlist", methods={"GET"})
  22.      */
  23.     public function indexAction(Organization $organizationCampaign $campaignAuction $auction)
  24.     {
  25.         $user $this->getUser();
  26.         if (!$user) {
  27.             $this->messageAccessDeniedException('You must login or create an account to view wishlist');
  28.         }
  29.         $watchListItems $this->getWatchListManager()->getUserWatchlistItemsForCampaign($user$campaign);
  30.         $availableItems $unavailableItems $upcomingItems = [];
  31.         foreach ($watchListItems as $watchListItem) {
  32.             $item $watchListItem->getItem();
  33.             if ($item->isItemUpcoming()) {
  34.                 array_push($upcomingItems$item);
  35.             } else {
  36.                 $this->getItemManager()->isItemAvailable($item$user)
  37.                     ? array_push($availableItems$item)
  38.                     : array_push($unavailableItems$item);
  39.             }
  40.         }
  41.         return $this->render('@BidcozFrontend/Auction/watchlist.html.twig', [
  42.             'organization'     => $organization,
  43.             'campaign'         => $campaign,
  44.             'auction'          => $auction,
  45.             'availableItems'   => $availableItems,
  46.             'upcomingItems'    => $upcomingItems,
  47.             'unavailableItems' => $unavailableItems,
  48.         ]);
  49.     }
  50.     /**
  51.      * @Route("/add/{itemId}", name="auction_watchlist_add_item", methods={"POST"})
  52.      * @ParamConverter("item", class="Bidcoz\Bundle\CoreBundle\Entity\Auction\Item", options={"id" = "itemId"})
  53.      */
  54.     public function addItemAction(Request $requestOrganization $organizationCampaign $campaignAuction $auctionItem $item)
  55.     {
  56.         $user $this->getUser();
  57.         if (!$user) {
  58.             $this->messageAccessDeniedException('You must login or create an account to add to wishlist');
  59.         }
  60.         $this->getWatchListManager()->add($user$item);
  61.         $this->getEntityManager()->flush();
  62.         if ($request->isXmlHttpRequest()) {
  63.             return $this->redirectToRoute('auction_item', [
  64.                 'orgSlug'      => $organization->getSlug(),
  65.                 'campaignSlug' => $campaign->getSlug(),
  66.                 'itemId'       => $item->getId(),
  67.             ]);
  68.         } else {
  69.             return $this->redirectToRoute('auction_watchlist', [
  70.                 'orgSlug'      => $organization->getSlug(),
  71.                 'campaignSlug' => $campaign->getSlug(),
  72.             ]);
  73.         }
  74.     }
  75.     /**
  76.      * @Route("/remove/{itemId}", name="auction_watchlist_remove_item", methods={"POST"})
  77.      * @ParamConverter("item", class="Bidcoz\Bundle\CoreBundle\Entity\Auction\Item", options={"id" = "itemId"})
  78.      */
  79.     public function removeItemAction(Request $requestOrganization $organizationCampaign $campaignAuction $auctionItem $item)
  80.     {
  81.         $user $this->getUser();
  82.         if (!$user) {
  83.             $this->messageAccessDeniedException('You must login or create an account to remove from wishlist');
  84.         }
  85.         $this->getWatchListManager()->remove($user$item);
  86.         $this->getEntityManager()->flush();
  87.         if ($request->isXmlHttpRequest()) {
  88.             return $this->redirectToRoute('auction_item', [
  89.                 'orgSlug'      => $organization->getSlug(),
  90.                 'campaignSlug' => $campaign->getSlug(),
  91.                 'itemId'       => $item->getId(),
  92.             ]);
  93.         } else {
  94.             return $this->redirectToRoute('auction_watchlist', [
  95.                 'orgSlug'      => $organization->getSlug(),
  96.                 'campaignSlug' => $campaign->getSlug(),
  97.             ]);
  98.         }
  99.     }
  100. }