twig = $twig; $this->tokenManager = $tokenManager; $this->request = $requestStack->getCurrentRequest(); $container = System::getContainer(); $objSession = $container->get('session'); $strKey = Input::get('popup') ? 'popupReferer' : 'referer'; $strRefererId = $this->request->attributes->get('_contao_referer_id'); $session = $objSession->get($strKey); $session[$strRefererId]['current'] = substr(Environment::get('requestUri'), \strlen(Environment::get('path')) + 1); $objSession->set($strKey, $session); } public function __invoke(): Response { $GLOBALS['TL_CSS']['cirrus'] = 'bundles/vonrotenbergweinanlieferung/css/backend.css|static'; $arrData = [ 'request_token' => $this->tokenManager->getDefaultTokenValue(), 'ref' => $this->request->attributes->get('_contao_referer_id') ]; System::loadLanguageFile('default'); // Get bookings if (($bookings = WeinanlieferungReservationModel::findAllFuture(['order' => "(SELECT tl_vr_wa_slot.time FROM tl_vr_wa_slot WHERE tl_vr_wa_slot.id=tl_vr_wa_reservation.pid) ASC"])) !== null) { /** @var WeinanlieferungReservationModel $booking */ foreach ($bookings as $booking) { /** @var WeinanlieferungSlotsModel $Slot */ if (($Slot = $booking->getRelated('pid')) !== null) { $day = new Date($Slot->date); $arrSorten = []; $arrErnteart = []; $arrLagen = []; if (!isset($arrData['days'][$day->dayBegin][$Slot->time])) { $arrSortenAvailable = []; $Sorten = StringUtil::deserialize($Slot->sorten,true); foreach($Sorten as $sorte) { $objSorte = WeinanlieferungRebsorteModel::findByPk($sorte['sorte']); $objLeseart = WeinanlieferungLeseartModel::findByPk($sorte['leseart']); $arrSortenAvailable[] = ($objSorte !== null ? $objSorte->title : '') . ' ' . ($objLeseart !== null ? $objLeseart->title : ''); } $arrData['days'][$day->dayBegin][$Slot->time] = array_merge($Slot->row(),[ 'sorten' => $arrSortenAvailable, 'behaelterAvailable' => $Slot->getAvailableBehaelter(), ]); } if ($booking->sorten !== null) { $SortenLeseart = explode(';', $booking->sorten); foreach ($SortenLeseart as $sorteLeseart) { list($sorte, $leseart) = explode(',', $sorteLeseart); $objSorte = WeinanlieferungRebsorteModel::findByPk($sorte); $objLeseart = WeinanlieferungLeseartModel::findByPk($leseart); $arrSorten[$objSorte->id . ',' . $objLeseart->id] = ($objSorte !== null ? $objSorte->title : '') . ' ' . ($objLeseart !== null ? $objLeseart->title : ''); } } if ($booking->ernteart !== null) { foreach (explode(',', $booking->ernteart) as $ernteart) { $arrErnteart[$ernteart] = $GLOBALS['TL_LANG']['REF']['wa_ernteart'][$ernteart] ?? $ernteart; } } if (($Lagen = $booking->getRelated('lage')) !== null) { foreach ($Lagen as $lage) { $arrLagen[$lage->id] = $lage->title; } } $strStandort = ''; if (($Standort = $Slot->getRelated('pid')) !== null) { $strStandort = $Standort->title; } $arrData['days'][$day->dayBegin][$Slot->time]['items'][] = array_merge($booking->row(), [ 'sorte' => $arrSorten, 'ernteart' => $arrErnteart, 'lage' => $arrLagen, 'slot' => $Slot->row(), 'standort' => $strStandort, 'member' => $booking->getRelated('uid') !== null ? $booking->getRelated('uid')->row() : null ]); } } } return new Response( $this->twig->render( '@Contao_VonrotenbergWeinanlieferungBundle/be_wa_buchungsliste.html.twig', $arrData ) ); } }