insertTagParser = $insertTagParser; } protected function getResponse(Template $template, ModuleModel $model, Request $request): ?Response { $standortIds = StringUtil::deserialize($model->vr_wa_standortId); $arrData = $template->getData(); $arrOptions = []; // Add filter values if (!empty($_GET['filter_kapazitaet'])) { $arrData['filter']['kapazitaet']['selected'] = $_GET['filter_kapazitaet']; $arrOptions['column'][] = '(SELECT tl_vr_wa_slot.behaelter - IFNULL(SUM(tl_vr_wa_reservation.behaelter),0) FROM tl_vr_wa_reservation WHERE tl_vr_wa_reservation.pid = tl_vr_wa_slot.id) >= ?'; $arrOptions['value'][] = $_GET['filter_kapazitaet']; } if (!empty($_GET['filter_sorte'])) { $arrData['filter']['sorte']['selected'] = $_GET['filter_sorte']; $arrOptions['column'][] = 'FIND_IN_SET(?,sorte)'; $arrOptions['value'][] = $_GET['filter_sorte']; } $arrData['filter']['kapazitaet']['options'] = range(1,30); if (($Sorten = WeinanlieferungRebsorteModel::findAll(['order'=>'title ASC'])) !== null) { $arrData['filter']['sorte']['options'] = array_combine($Sorten->fetchEach('id'),$Sorten->fetchEach('title')); } // Get available slots if (($slots = WeinanlieferungSlotsModel::findMultiplePublishedByPids($standortIds,$arrOptions)) !== null) { /** @var WeinanlieferungSlotsModel $slot */ foreach ($slots as $slot) { $day = new Date($slot->date); $arrSorten = []; $intAvailableBehaelter = $slot->getAvailableBehaelter(); if (($Sorten = $slot->getRelated('sorte')) !== null) { $arrSorten = $Sorten->fetchEach('title'); } $arrData['days'][$day->dayBegin][] = array_merge($slot->row(),[ 'sorte' => $arrSorten, 'behaelterAvailable' => $intAvailableBehaelter, 'buchbar' => (boolean) $intAvailableBehaelter ]); } } $template->setData($arrData); // Handle ajax if ($request->headers->get('VR-Ajax') == 'WaSlotsModule') { throw new ResponseException(new Response($this->insertTagParser->replace($template->parse()))); } return $template->getResponse(); } }