<?php /** * OBG Customizations * * Copyright (c) 2021 vonRotenberg * * @license commercial */ namespace vonRotenberg\RealEstateListingBundle\Controller\FrontendModule; use Contao\Config; use Contao\CoreBundle\DependencyInjection\Attribute\AsFrontendModule; use Contao\CoreBundle\Exception\ResponseException; use Contao\CoreBundle\Twig\FragmentTemplate; use Contao\Input; use vonRotenberg\RealEstateListingBundle\Model\RealEstateAssetsModel; use Contao\Controller; use Contao\CoreBundle\Image\Studio\Studio; use Contao\Date; use Contao\FrontendTemplate; use Contao\ModuleModel; use Contao\PageModel; use Contao\StringUtil; use Contao\System; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Contracts\Translation\TranslatorInterface; #[AsFrontendModule(RealEstateAssetsReaderController::TYPE, category: 'miscellaneous')] class RealEstateAssetsReaderController extends RealEstateAssetsModuleController { public const TYPE = 'vr_re_assets_reader'; /** * @var RealEstateAssetsModel|null */ protected $asset; /** * @var TranslatorInterface */ protected $translator; protected function getResponse(FragmentTemplate $template, ModuleModel $model, Request $request): Response { $this->translator = System::getContainer()->get('translator'); Controller::loadLanguageFile(RealEstateAssetsModel::getTable()); $jumpTo = PageModel::findByPk($model->jumpTo); // Set the item from the auto_item parameter dump($_GET); if (Input::get('items') === null && Config::get('useAutoItem') && Input::get('auto_item')) { Input::setGet('items', Input::get('auto_item')); } $this->asset = RealEstateAssetsModel::findPublishedByIdOrAlias(Input::get('items')); if ($this->asset === null) { return new Response(); } $figureBuilder = System::getContainer() ->get('contao.image.studio') ->createFigureBuilder() ->setSize($model->imgSize) ->enableLightbox(true); // ->setLightboxGroupIdentifier('lb' . $model->id); $arrItem = array_merge($this->asset->row(), [ 'features' => StringUtil::deserialize($this->asset->features,true), 'parking' => StringUtil::deserialize($this->asset->parking,true), 'availableFrom' => ($this->asset->availability == 'immediately' ? $this->translator->trans('REF.re_availability.immediately', [], 'contao_default') : Date::parse(Date::getNumericDateFormat(), $this->asset->availableFrom)), 'deadline' => ($this->asset->stop > 0 ? Date::parse(Date::getNumericDateFormat(), $this->asset->stop) : ''), 'teaserFigure' => $this->getImageFigures($this->asset->gallerySRC, $figureBuilder, $this->asset->orderSRC, 1), 'galleryFigures' => $this->getImageFigures($this->asset->gallerySRC, $figureBuilder, $this->asset->orderSRC, 0, 0), 'floorPlansFigures' => $this->getImageFigures($this->asset->floorPlansSRC, $figureBuilder, $this->asset->floorPlansOrderSRC), 'listUrl' => $jumpTo !== null ? $jumpTo->getFrontendUrl() : null, 'pdfUrl' => $request->getBaseUrl() . $request->getPathInfo() . '?pdf', 'qrUrl' => $request->getUriForPath($request->getPathInfo()), 'hasProperty' => false ]); // Check for object if (($Property = $this->asset->getRelated('managedPropertyId')) !== null) { $arrItem['hasProperty'] = true; $arrItem['property'] = array_merge($Property->row(),[ 'teaserFigure' => $this->getImageFigures($Property->gallerySRC, $figureBuilder, $Property->orderSRC, 1), 'galleryFigures' => $this->getImageFigures($Property->gallerySRC, $figureBuilder, $Property->orderSRC, 0, 0), ]); } if (isset($_GET['pdf'])) { $PDF = new FrontendTemplate('exposePdfDefinition'); $PDF->item = $arrItem; // echo $PDF->parse(); $response = $PDF->getResponse(); $template->pdfJs = $response->getContent(); throw new ResponseException($response); // echo $response->getContent(); // exit; } $template->formURL = $model->vr_re_formUrl; $template->item = $arrItem; return $template->getResponse(); } }