<?php
declare(strict_types=1);
namespace Harmonizely\EventSubscriber;
use Harmonizely\CalendarEvents;
use Harmonizely\Core\Security\Contract\ISecurityHelper;
use Harmonizely\Model\EventInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
use Webmozart\Assert\Assert;
class SetEventSchedulerUserSubscriber implements EventSubscriberInterface
{
/**
* @var ISecurityHelper
*/
private ISecurityHelper $securityHelper;
/**
* @param ISecurityHelper $securityHelper
*/
public function __construct(ISecurityHelper $securityHelper)
{
$this->securityHelper = $securityHelper;
}
/**
* @return string[]
*/
public static function getSubscribedEvents(): array
{
return [
CalendarEvents::EVENT_PRE_CREATE => 'setEventSchedulerUser',
];
}
/**
* @param GenericEvent $genericEvent
* @return void
*/
public function setEventSchedulerUser(GenericEvent $genericEvent): void
{
/** @var EventInterface $event */
$event = $genericEvent->getSubject();
Assert::isInstanceOf($event, EventInterface::class);
$currentUser = $this->securityHelper->getUser();
if ($currentUser) {
$event->setSchedulerUser($currentUser);
}
}
}