<?php
namespace App\Network\Controller;
use App\Network\Form\Type\RacetrackFilterType;
use App\Profile\Model\Profile;
use Doctrine\DBAL\Query\QueryBuilder;
use Knp\Component\Pager\PaginatorInterface;
use Pimcore\Controller\FrontendController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[Route([
'name' => 'network_raceclub_',
'localizedPaths' => [
'en' => '/{_locale}/network/racetrack',
'de' => '/{_locale}/netzwerk/rennbahn',
'fr' => '/{_locale}/reseau/hippodrome',
],
])]
class NetworkRacetrackController extends FrontendController
{
#[Route('/', name: 'index')]
// Rennbahnübersichtsseite
public function index(Request $request, PaginatorInterface $paginator): Response
{
$racetracks = Profile::getList();
$country = $request->get('country', null);
$filter = $this->createForm(RacetrackFilterType::class, [
'country' => $country,
], ['method' => 'get']);
$filter->handleRequest($request);
$racetracks->onCreateQueryBuilder(function (QueryBuilder $queryBuilder) {
$queryBuilder->innerJoin('object_profile', 'object_brick_query_RacetrackProfile_profile', 'racetrack', 'object_profile.oo_id = racetrack.o_id');
});
if ($country) {
$racetracks->addConditionParam('country = :country', ['country' => $country]);
}
$racetracks->setOrderKey('company');
$racetracks->setOrder('asc');
$paginator = $paginator->paginate(
$racetracks,
$request->get('page', 1),
10
);
return $this->renderForm('network/profile/racetracks/listing.html.twig', [
'racetracks' => $paginator,
'filter' => $filter,
]);
}
}