<?php declare(strict_types=1); /* * This file is part of contao-weinanlieferung-bundle. * * (c) vonRotenberg * * @license commercial */ namespace vonRotenberg\WeinanlieferungBundle\EventListener\DataContainer; use Contao\CoreBundle\ServiceAnnotation\Callback; use Contao\DataContainer; use Contao\Date; use Contao\StringUtil; use Doctrine\DBAL\Connection; use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungLeseartModel; use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungRebsorteModel; use vonRotenberg\WeinanlieferungBundle\Model\WeinanlieferungSlotsModel; class WeinanlieferungSlotContainerListener { /** @var Connection */ protected $db; public function __construct(Connection $db) { $this->db = $db; } /** * @Callback(table="tl_vr_wa_slot", target="list.sorting.child_record") */ public function onChildRecordCallback(array $row) { $Slot = WeinanlieferungSlotsModel::findByPk($row['id']); $arrSorten = []; $Sorten = StringUtil::deserialize($Slot->sorten,true); foreach($Sorten as $sorte) { $objSorte = WeinanlieferungRebsorteModel::findByPk($sorte['sorte']); $objLeseart = WeinanlieferungLeseartModel::findByPk($sorte['leseart']); $arrSorten[] = ($objSorte !== null ? $objSorte->title : '') . ' ' . ($objLeseart !== null ? $objLeseart->title : ''); } return sprintf('<div class="tl_content_left"><div class="row u-items-center"> <div class="col-2 text-md">%s %s</div> <div class="col-2"> <div class="t-label">Buchbar ab</div>%s <div class="t-label">Buchbar bis</div>%s </div> <div class="col-3"> <div class="t-label">Behälterkapazität</div>%s </div> <div class="col-3"> <div class="t-label">Sorten</div>%s </div> </div></div>',Date::parse(Date::getNumericDateFormat(),$row['date']), Date::parse(Date::getNumericTimeFormat(),$row['time']),Date::parse(Date::getNumericDatimFormat(),$row['buchbar_ab']),Date::parse(Date::getNumericDatimFormat(),$row['buchbar_bis']),$Slot->behaelter,implode(', ',$arrSorten)); } /** * @Callback(table="tl_vr_wa_slot", target="config.onsubmit") */ public function adjustTime(DataContainer $dc) { // Return if there is no active record (override all) or no start date has been set yet if (!$dc->activeRecord || empty($dc->activeRecord->date)) { return; } $arrSet['time'] = strtotime(date('Y-m-d', $dc->activeRecord->date) . ' ' . date('H:i:s', $dc->activeRecord->time)); $this->db->update("tl_vr_wa_slot",$arrSet,['id' => $dc->id]); } }