<?php
namespace App\Controller;
use Pimcore\Controller\FrontendController;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\Event;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\JsonResponse;
use App\Website\LinkGenerator\EventLinkGenerator;
use App\Website\LinkGenerator\ResourceLinkGenerator;
use App\Website\Navigation\BreadcrumbHelperService;
use Knp\Component\Pager\PaginatorInterface;
use Pimcore\Twig\Extension\Templating\HeadTitle;
use Pimcore\Twig\Extension\Templating\Placeholder;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Elasticsearch\Client;
class EventController extends BaseController
{
const EVENT_DEFAULT_DOCUMENT_PROPERTY_NAME = 'event_default_document';
/**
* @param Request $request
*
* @return Response
*
* @throws \Exception
*/
public function listingAction(Request $request, PaginatorInterface $paginator)
{
$eventListing = new Event\Listing();
$eventListing->setOrderKey('from_time');
$eventListing->setOrder('DESC');
$paginator = $paginator->paginate(
$eventListing,
$request->get('page', 1),
6
);
return $this->render('event/listing.html.twig', [
'eventListing' => $paginator,
'paginationVariables' => $paginator->getPaginationData()
]);
// return $this->render('event/listing.html.twig', ['eventListing' => $eventListing]);
}
/**
* @param Request $request
*
* @return Response
*
* @throws \Exception
*/
public function listingDividedAction(Request $request, PaginatorInterface $paginator)
{
$eventList = new Event\Listing();
$eventList->setOrderKey('from_time');
$eventList->setOrder('ASC');
$eventList->setCondition("from_time > ?", [time()]);
$eventListPast = new Event\Listing();
$eventListPast->setOrderKey('from_time');
$eventListPast->setOrder('DESC');
$eventListPast->setCondition("from_time < ?", [time()]);
$paginator = $paginator->paginate(
$eventListPast,
$request->get('page', 1),
6
);
return $this->render('event/listing.html.twig', [
'eventList' => $eventList,
'eventListPast' => $paginator,
'paginationVariables' => $paginator->getPaginationData()
]);
// return $this->render('event/listing.html.twig', ['eventListing' => $eventListing]);
}
/**
* @param Request $request
*
* @return Response
*
* @throws \Exception
*/
public function listEventsAction(Request $request, PaginatorInterface $paginator)
{
$training = $request->query->get('training');
$past = $request->query->get('past');
$eventList = new Event\Listing();
if (!$past) {
$eventList->setOrderKey('from_time');
$eventList->setOrder('ASC');
$eventList->setCondition("to_time > ?", [time()]);
} else {
$eventList->setOrderKey('from_time');
$eventList->setOrder('DESC');
}
if ($training) {
$eventList->addConditionParam("is_training = ?", 1, "AND");
}
$paginator = $paginator->paginate(
$eventList,
$request->get('page', 1),
6
);
return $this->render('event/listing.html.twig', [
'eventList' => $paginator,
'eventListPast' => null,
'paginationVariables' => $paginator->getPaginationData(),
'training' => $training,
'past' => $past
]);
// return $this->render('event/listing.html.twig', ['eventListing' => $eventListing]);
}
/**
* @Route("{path}/{eventtitle}-eid{event}", name="event-detail", defaults={"path"=""}, requirements={"path"=".*?", "eventtitle"="[\w-]+", "event"="\d+"})
*
* @param Request $request
* @param HeadTitle $headTitleHelper
* @param Placeholder $placeholderHelper
* @param EventLinkGenerator $eventLinkGenerator
* @param BreadcrumbHelperService $breadcrumbHelperService
*
* @return Response
*/
public function detailAction(Request $request, HeadTitle $headTitleHelper, Placeholder $placeholderHelper, EventLinkGenerator $eventLinkGenerator, BreadcrumbHelperService $breadcrumbHelperService)
{
$event = Event::getById($request->get('event'));
//$event = Event::getById(4);
$training = $request->query->get('training');
$past = $request->query->get('past');
if (!($event instanceof Event && ($event->isPublished() || $this->verifyPreviewRequest($request, $event)))) {
throw new NotFoundHttpException('Event not found.');
}
$langOptions = DataObject\Service::getOptionsForSelectField($event, "lang");
$headTitleHelper($event->getTitle());
$breadcrumbHelperService->enrichEventPage($event);
$placeholderHelper('canonical')->set($eventLinkGenerator->generate($event, ['document' => $this->document->getProperty(self::EVENT_DEFAULT_DOCUMENT_PROPERTY_NAME)]));
return $this->render('event/detail.html.twig', [
'event' => $event,
'langOptions' => $langOptions,
'training' => $training,
'past' => $past
]);
}
/**
* @Route("/filtertest", methods={"GET","POST"})
*
* @param Request $request
*
* @return Response
*
* @throws \Exception
*/
}