<?php
namespace CioMasterdata\Subscriber;
use CioBudget\Event\CustomerStoresLoadedEvent;
use CioCustomerPermissionGroups\Event\CustomerPermissionGroupIdsLoadedEvent;
use CioCustomerPermissionGroups\Service\CustomerPermissionService;
use CioMasterdata\Definition\Masterdata\MasterdataEntity;
use CioMasterdata\Service\MasterdataService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class CustomerStoresLoadedSubscriber implements EventSubscriberInterface
{
private MasterdataService $masterdataService;
public function __construct(MasterdataService $masterdataService)
{
$this->masterdataService = $masterdataService;
}
public static function getSubscribedEvents(): array
{
return [
CustomerStoresLoadedEvent::class => 'onCustomerStoresLoadedEvent'
];
}
public function onCustomerStoresLoadedEvent(CustomerStoresLoadedEvent $event)
{
$customer = $event->getCustomer();
/** @var MasterdataEntity $masterData */
$masterDatas = $this->masterdataService->getMasterdatasForCustomer($customer, true);
$stores = [];
foreach ($masterDatas as $masterData) {
foreach ($masterData->getStores() as $store) {
if ($myStore = $this->masterdataService->getStoreById($store->getStoreId())) {
$stores[] = $myStore->getVars();
}
}
}
$event->setStores(
array_merge(
$event->getStores(),
$stores
)
);
}
}