<?php
namespace App\Subscriber\User;
use App\Entity\MemberOnline;
use App\Event\User\LogoutEvent;
use App\Service\User\MemberOnlineService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class LogoutSubscriber implements EventSubscriberInterface
{
protected MemberOnlineService $memberOnlineService;
public function __construct(MemberOnlineService $memberOnline)
{
$this->memberOnlineService = $memberOnline;
}
public static function getSubscribedEvents(): array
{
return [
LogoutEvent::class => [
['onAccountLogout', 0],
],
];
}
public function onAccountLogout(LogoutEvent $event): void
{
$memberOnline = $this->memberOnlineService->getMemberOnlineByMember($event->getAccount()->getMember());
if (!$memberOnline instanceof MemberOnline || !$memberOnline->getIsOnlineWithBusinessLogic()) {
return;
}
$this->memberOnlineService->refreshMemberOnlineStatus($memberOnline, false);
}
}