<?php
namespace Bidcoz\Bundle\FrontendBundle\Controller\Auction;
use Bidcoz\Bundle\CoreBundle\Controller\CoreController;
use Bidcoz\Bundle\CoreBundle\Entity\Auction\FundANeed;
use Bidcoz\Bundle\CoreBundle\Entity\Campaign;
use Bidcoz\Bundle\CoreBundle\Entity\Organization;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/{orgSlug}/{campaignSlug}/fund-a-need")
* @IsGranted("VIEW", subject="organization")
* @IsGranted("FRONT_END", subject="campaign")
*/
class FundANeedController extends CoreController
{
use ItemCatalogQueryTrait;
/**
* @Route("/list", name="fund_a_need_catalog")
*/
public function catalogAction(Request $request, Organization $organization, Campaign $campaign, FundANeed $fundANeed)
{
// CAU-279: group by item so multi-row joins (purchase/images/packagedItems)
// don't duplicate rows and shorten the paginated page. See AuctionController.
$qb = $this->getRepository('Auction\Item')->getAuctionQueryBuilder($fundANeed, true, true);
$filterForm = $this->getItemFilterForm($fundANeed);
$hasFilter = $this->applyFilters($request, $filterForm, $qb);
$orderForm = $this->getItemOrderForm();
// No fixed-price exclusion on bid-count sorts — see ShopController.
$hasOrder = $this->applyOrder($request, $orderForm, $qb);
$items = $this->getPagination($qb);
return $this->render('@BidcozFrontend/Auction/catalog.html.twig', [
'type' => 'fund-a-need',
'title' => $campaign->getFundANeedDisplayName().' Catalog',
'organization' => $organization,
'campaign' => $campaign,
'auction' => $fundANeed,
'filterForm' => $filterForm->createView(),
'orderForm' => $orderForm->createView(),
'items' => $items,
'hasFilter' => $hasFilter || $hasOrder,
'requireCC' => !$this->isGranted('WITH_CC', $campaign),
// Carried onto every item link so the item page's "More Items"
// carousel can mirror this catalog's sort and filters (CAU-356).
'carryParams' => $this->getCatalogCarryParams($request, $filterForm, $orderForm),
]);
}
}