<?php
namespace App\Controller;
use App\Entity\EventsPageFrequencyInstance;
use App\Entity\Pages\EventsPage;
use App\Repository\EventsPageFrequencyInstanceRepository;
use App\Repository\EventsPageRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\PersistentCollection;
use Gedmo\Tree\RepositoryInterface;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Pagerfanta\Adapter\ArrayAdapter;
use Pagerfanta\Exception\OutOfRangeCurrentPageException;
use Pagerfanta\Pagerfanta;
class EventsArticleController extends Controller
{
public function serviceAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$searchCategory = $request->get('category') ? explode(',', $request->get('category')) : null;
$searchTag = $request->get('tag') ? explode(',', $request->get('tag')) : null;
$pageRepository = $em->getRepository(EventsPage::class);
$result = $pageRepository->getArticles($request->getLocale(), null, null, $searchCategory, $searchTag);
// Filter the results for this page
$adapter = new ArrayAdapter($result);
$pagerfanta = new Pagerfanta($adapter);
$pagerfanta->setMaxPerPage(10);
$pagenumber = (int)$request->get('page');
if (!$pagenumber || $pagenumber < 1) {
$pagenumber = 1;
}
try {
$pagerfanta->setCurrentPage($pagenumber);
} catch (OutOfRangeCurrentPageException $oore) {
$repo = $em->getRepository('KunstmaanNodeBundle:NodeTranslation');
$nt = $repo->getNodeTranslationByLanguageAndInternalName($request->getLocale(), 'events');
$url = $nt ? $nt->getUrl() : '';
$url = $this->get('router')->generate('_slug', array('url' => $url, '_locale' => $request->getLocale()));
return new RedirectResponse($url);
}
// Add events post url's
$results = $pagerfanta->getCurrentPageResults();
$context['results'] = $results;
$context['pagerfanta'] = $pagerfanta;
$context['nodeTranslation'] = $request->attributes->get('_nodeTranslation');
$request->attributes->set('_renderContext', $context);
}
public function lastEvents(Request $request, $limit = 12, $node = null, array $sports = [])
{
$em = $this->getDoctrine()->getManager();
/** @var EventsPageRepository $pageRepository */
$pageRepository = $em->getRepository('App:Pages\EventsPage');
/** @var EventsPageFrequencyInstanceRepository $pageInsRepository */
$pageInsRepository = $em->getRepository(EventsPageFrequencyInstance::class);
$latestEventsIns = $pageInsRepository->getLastEvents($request->getLocale(), null, $limit, $sports);
// dd($latestEventsIns);
// $result = $pageRepository->getLatestEvents($request->getLocale(), null, $limit, $sports);
return $this->render(
'Events/view.html.twig',
array(
'eventsInstances' => $latestEventsIns,
'node' => $node
)
);
}
}