src/EventSubscriber/OvertimeRequestAcceptGuardSubscriber.php line 22
<?phpnamespace App\EventSubscriber;use App\Entity\OvertimeRequest;use App\Enum\OvertimeRequestStatus;use App\WorkMonthManagement\WorkMonthChecker;use Symfony\Component\Workflow\Event\GuardEvent;use Symfony\Component\EventDispatcher\EventSubscriberInterface;class OvertimeRequestAcceptGuardSubscriber implements EventSubscriberInterface{private WorkMonthChecker $workMonthChecker;public function __construct(WorkMonthChecker $workMonthChecker,){$this->workMonthChecker = $workMonthChecker;}public function guardAccept(GuardEvent $event): void{$subject = $event->getSubject();if (!$subject instanceof OvertimeRequest) {return;}/** @var OvertimeRequest $subject */if ($subject->getStatus() === OvertimeRequestStatus::REQUESTED->value&& $this->workMonthChecker->isWorkMonthLockedForDate($subject->getEmployee(), $subject->getDate())) {$event->setBlocked(true,'The month the overtime would take place in is already validated by a Project Admin!');}}public static function getSubscribedEvents(): array{$workflowName = 'leave_request';$transitionName = 'accept';return ['workflow.' . $workflowName . '.guard.' . $transitionName => ['guardAccept'],];}}