<?php
namespace App\Subscriber\User\AmateurUpgrade;
use App\Event\User\AmateurUpgradeCompleteEvent;
use App\Service\Messenger\MessengerPropertyService;
use App\Service\Property\MemberPropertyService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class DefaultPropertiesSubscriber implements EventSubscriberInterface
{
protected MemberPropertyService $service;
public function __construct(MemberPropertyService $service)
{
$this->service = $service;
}
public static function getSubscribedEvents(): array
{
return [
AmateurUpgradeCompleteEvent::class => [
['createDefaultAmateurProperties', 0],
],
];
}
/**
* @throws \Doctrine\ORM\ORMException
* @throws \Doctrine\ORM\OptimisticLockException
*/
public function createDefaultAmateurProperties(AmateurUpgradeCompleteEvent $event)
{
if ($event->isRejected()) {
return;
}
$account = $event->getAmateurUpgrade()->getAccount();
$amateur = $account->getMember();
// create default message price
$propName = MessengerPropertyService::PROPERTY_CONVERSATION_COST_AMOUNT;
if (!$existingProperty = $this->service->getPropertyForMember($amateur, $propName)) {
$this->service->createPropertyEntity($amateur, $propName, 99);
}
}
}