<?php
declare(strict_types=1);
namespace Vio\B2BBudget\Storefront\Subscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Vio\B2BBudget\Services\EmployeeBudgetService;
use VioB2BLogin\Core\Services\AbstractAvailabilityService;
use VioB2BLogin\Storefront\Page\Employee\Detail\EmployeeDetailPageLoadedEvent;
class EmployeeDetailPageSubscriber implements EventSubscriberInterface
{
private EmployeeBudgetService $budgetService;
private AbstractAvailabilityService $availabilityService;
public function __construct(
EmployeeBudgetService $budgetService,
AbstractAvailabilityService $availabilityService
)
{
$this->budgetService = $budgetService;
$this->availabilityService = $availabilityService;
}
public static function getSubscribedEvents(): array
{
return [
EmployeeDetailPageLoadedEvent::class => 'onEmployeeDetailPageLoaded'
];
}
public function onEmployeeDetailPageLoaded(EmployeeDetailPageLoadedEvent $event): void
{
if(!$this->availabilityService->isEnabled($event->getSalesChannelContext())) {
return;
}
$page = $event->getPage();
// load employee budgets
$budgets = $this->budgetService->getEmployeeBudgets($page->getEmployee(), $event->getContext());
$page->addExtension('budgets', $budgets);
}
}