<?php
namespace CioMasterdata\Subscriber;
use CioMasterdata\Definition\Masterdata\MasterdataEntity;
use CioMasterdata\Service\MasterdataService;
use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityLoadedEvent;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class MasterdataLoadedSubscriber implements EventSubscriberInterface
{
private EventDispatcherInterface $eventDispatcher;
private MasterdataService $masterdataService;
public function __construct(EventDispatcherInterface $eventDispatcher, MasterdataService $masterdataService)
{
$this->eventDispatcher = $eventDispatcher;
$this->masterdataService = $masterdataService;
}
public static function getSubscribedEvents(): array
{
return [
'cio_masterdata.loaded' => 'onMasterdataLoaded'
];
}
public function onMasterdataLoaded(EntityLoadedEvent $event): void
{
$this->eventDispatcher->removeSubscriber($this);
/** @var MasterdataEntity $entity */
foreach ($event->getEntities() as $entity) {
$entity->openinghours_week = $this->masterdataService->getOpeningHoursPerWeek($entity->getId());
$entity->openinghours_weekend = $this->masterdataService->getOpeningHoursPerWeekend($entity->getId());
}
}
}