Skip to content

Instantly share code, notes, and snippets.

@tomilsinszki
Created July 5, 2017 20:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomilsinszki/3bdb4ded450c233da6872b7132150b12 to your computer and use it in GitHub Desktop.
Save tomilsinszki/3bdb4ded450c233da6872b7132150b12 to your computer and use it in GitHub Desktop.
<?php
namespace RabattCorner\CashbackBundle\Controller;
use RabattCorner\AccountBundle\Entity\User;
use RabattCorner\CashbackBundle\Entity\SpecialOffer;
use RabattCorner\CashbackBundle\Form\Type\PartnerRatingFormType;
use RabattCorner\CashbackBundle\Entity\Category;
use RabattCorner\CashbackBundle\Entity\Partner;
use RabattCorner\CashbackBundle\Entity\PartnerRating;
use RabattCorner\CashbackBundle\Entity\PartnerVisit;
use JMS\SecurityExtraBundle\Annotation\Secure;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Component\HttpFoundation\Response;
/**
* Partner controller.
*/
class PartnerController extends Controller
{
/**
* Lists all partners.
*
* @return Response
*
* @Route("/partner/index.{_format}", name="partner_index", requirements={"_format" = "html|json"}, defaults={"slug" = null})
* @Route("/partner/category/{slug}.{_format}", name="partner_index_category", requirements={"_format" = "html|json"})
* @ParamConverter("category", class="RabattCornerCashbackBundle:Category")
*/
public function indexAction(Category $category = null)
{
$request = $this->getRequest();
$em = $this->getDoctrine()->getManager();
$offset = (int)$request->query->get('offset', 0);
$limit = $request->query->get('limit');
if ($limit !== null) {
$limit = (int)$limit;
} else {
$limit = $this->container->getParameter('pagination_limit');
}
$count = $em->getRepository('RabattCornerCashbackBundle:Partner')->searchCount(null, $category, false);
$partners = $em->getRepository('RabattCornerCashbackBundle:Partner')->search(null, $category, false, $offset, $limit);
$categories = $em->getRepository('RabattCornerCashbackBundle:Category')->findBy(array('parent' => null));
$vouchers = array();
/** @var Partner $partner */
foreach ($partners as $partner) {
$vouchers[$partner->getId()] = $em->getRepository('RabattCornerCashbackBundle:Voucher')->findActiveByPartner($partner);
}
$specialOffers = array();
/** @var Partner $partner */
foreach ($partners as $partner) {
$specialOffers[$partner->getId()] = $em->getRepository('RabattCornerCashbackBundle:SpecialOffer')->findActiveByPartner($partner);
}
return $this->render('RabattCornerCashbackBundle:Partner:index.html.twig', array(
'currentCategory' => $category,
'vouchers' => $vouchers,
'specialOffers' => $specialOffers,
'partners' => $partners,
'count' => $count,
'offset' => $offset,
'limit' => $limit,
'categories' => $categories,
));
}
/**
* Search for partners.
*
* @return Response
*
* @Route("/partner/search.{_format}", name="partner_search", requirements={"_format" = "html|json"})
*/
public function searchAction()
{
$request = $this->getRequest();
$em = $this->getDoctrine()->getManager();
$offset = (int)$request->query->get('offset', 0);
$limit = $request->query->get('limit');
if ($limit !== null) {
$limit = (int)$limit;
} else {
$limit = $this->container->getParameter('pagination_limit');
}
$count = $em->getRepository('RabattCornerCashbackBundle:Partner')->searchCount($request->query->get('q'));
$partners = $em->getRepository('RabattCornerCashbackBundle:Partner')->search($request->query->get('q'), null, false, $offset, $limit);
$vouchers = array();
/** @var Partner $partner */
foreach ($partners as $partner) {
$vouchers[$partner->getId()] = $em->getRepository('RabattCornerCashbackBundle:Voucher')->findActiveByPartner($partner);
}
$specialOffers = array();
/** @var Partner $partner */
foreach ($partners as $partner) {
$specialOffers[$partner->getId()] = $em->getRepository('RabattCornerCashbackBundle:SpecialOffer')->findActiveByPartner($partner);
}
$lowercaseQuery = strtolower($request->query->get('q'));
$tag = $em->getRepository('RabattCornerCashbackBundle:Tag')->findOneBy(array('name' => $lowercaseQuery, 'status' => 'active'));
$recommendedPartners = array();
if (!empty($tag)) {
$recommendedPartners = $em->getRepository('RabattCornerCashbackBundle:Partner')->getAllActiveForTag($tag);
}
$recommendedPartnerVouchers = array();
foreach ($recommendedPartners as $partner) {
$recommendedPartnerVouchers[$partner->getId()] = $em->getRepository('RabattCornerCashbackBundle:Voucher')->findActiveByPartner($partner);
}
return $this->render('RabattCornerCashbackBundle:Partner:search.html.twig', array(
'partners' => $partners,
'vouchers' => $vouchers,
'specialOffers' => $specialOffers,
'count' => $count,
'offset' => $offset,
'limit' => $limit,
'recommendedPartners' => $recommendedPartners,
'recommendedPartnerVouchers' => $recommendedPartnerVouchers,
));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment