<?php
declare(strict_types=1);
namespace App\EventSubscriber;
use App\Entity\Vista\Order;
use App\Event\OrderEvent;
use App\Helper\UserHelper;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class OrderEventsSubscriber implements EventSubscriberInterface
{
/**
* @var UserHelper
*/
protected $userHelper;
public function __construct(UserHelper $userHelper)
{
$this->userHelper = $userHelper;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return [
OrderEvent::class => 'onPreFinish'
];
}
/**
* Attach additional data on recharge
*
* @param OrderEvent $event
*/
public function onPreFinish(OrderEvent $event)
{
$payable = $event->getPayable();
if (!$payable instanceof Order) {
return;
}
$transaction = $event->getTransaction();
if (!$transaction->getMemberId()) {
return;
}
$user = $this->userHelper->requestUser($transaction->getMemberId());
if (!$user) {
return;
}
$requestData = $event->getRequestData();
$requestData['CustomerEmail'] = $user->getEmail();
$requestData['CustomerName'] = trim($user->getFirstName() . ' ' . $user->getLastName());
$requestData['OptionalMemberId'] = $user->getMemberId();
$event->setResult($requestData);
}
}