<?php
namespace App\EventSubscriber;
use App\Entity\Booking\Booking;
use App\Entity\EventCodes;
use App\Manager\Level_1\BookingManager;
use Crea\EventBundle\Model\CreaEvent;
use Doctrine\ORM\NonUniqueResultException;
class BookingEventSubscriber extends AbstractEventSubscriber
{
public static function getSubscribedEvents(): array
{
return [
EventCodes::BOOKING_PAYMENT_CREATE => 'handlePaymentEvent',
EventCodes::BOOKING_PAYMENT_UPDATE => 'handlePaymentEvent',
EventCodes::BOOKING_PAYMENT_DELETE => 'handlePaymentEvent',
];
}
/**
* @throws NonUniqueResultException
*/
public function handlePaymentEvent(CreaEvent $creaEvent): void
{
/** @var Booking $booking */
$booking = $this->creaEventHelper->getProjectEntity($creaEvent);
/** @var BookingManager $bookingManager */
$bookingManager = $this->managerProvider->getManager(Booking::class);
$bookingManager->updateBalance($booking);
$bookingManager->manageStatus($booking);
}
}