<?php
declare(strict_types=1);
/*
* This file is part of contao-weinanlieferung-bundle.
*
* (c) vonRotenberg
*
* @license commercial
*/
namespace vonRotenberg\WeinanlieferungBundle\Controller\Frontend\Ajax;
use Contao\CoreBundle\Controller\AbstractController;
use Contao\CoreBundle\Framework\ContaoFramework;
use Contao\CoreBundle\Security\Authentication\Token\TokenChecker;
use Contao\System;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungSlotsModel;
/**
* @Route("/_ajax/vr_wa/v1/slot", name="vr_wa_slot_ajax", defaults={"_scope" = "frontend", "_token_check" = false})
*/
class SlotAjaxController extends AbstractController
{
private $tokenChecker;
private $translator;
private $framework;
public function __construct(ContaoFramework $framework, TokenChecker $tokenChecker, TranslatorInterface $translator)
{
$this->framework = $framework;
$this->tokenChecker = $tokenChecker;
$this->translator = $translator;
}
public function __invoke(Request $request)
{
System::loadLanguageFile('default');
if (!$this->tokenChecker->hasFrontendUser())
{
return $this->renderUnauthorized();
}
if (empty($_REQUEST['do']))
{
return new Response('Required parameter missing',412);
}
switch ($_REQUEST['do'])
{
case 'details':
return $this->renderDetails();
break;
}
return new Response('',500);
return new Response(null,203);
}
protected function renderDetails()
{
if (empty($_REQUEST['id']))
{
return new Response('Required parameter missing',412);
}
if (($Slot = WeinanlieferungSlotsModel::findPublishedById($_REQUEST['id'])) === null)
{
return new Response('Could not load slot data',500);
}
$arrSorten = [];
if (($Sorten = $Slot->getRelated('sorte')) !== null)
{
$arrSorten = $Sorten->fetchEach('title');
}
$arrData = [
'id' => $Slot->id,
'slot' => array_merge($Slot->row(),[
'sorte' => $arrSorten
]),
'standort' => $Slot->getRelated('pid')
];
return $this->render('@Contao/modal_slot_details.html.twig',$arrData);
}
protected function renderUnauthorized()
{
return $this->render('@Contao/modal_unauthorized.html.twig');
}
}