src/EventSubscriber/Residence/BedBookingSubscriber.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber\Residence;
  3. use App\Event\Residence\BookingResidenceCheckInEvent;
  4. use App\Event\Residence\BookingResidenceCheckOutEvent;
  5. use App\Event\Residence\BookingResidenceUpdatedEvent;
  6. use CIC\DB\envLoader\db;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class BedBookingSubscriber implements EventSubscriberInterface
  11. {
  12.     private EntityManagerInterface $em;
  13.     public function __construct(EntityManagerInterface $em)
  14.     {
  15.         $this->em $em;
  16.     }
  17.     public static function getSubscribedEvents()
  18.     {
  19.         return [
  20.             BookingResidenceCheckInEvent::class => 'onCheckIn',
  21.             BookingResidenceCheckOutEvent::class => 'onCheckOut',
  22.             BookingResidenceCheckInEvent::NAME => 'onCheckIn',
  23.             BookingResidenceCheckOutEvent::NAME => 'onCheckOut',
  24.         ];
  25.     }
  26.     public function onCheckIn(BookingResidenceCheckInEvent $event)
  27.     {
  28.         // set the room as occupied
  29.         $bed $event->getBookings()->getBedSpace();
  30.         $bed->setOccupancyStatus('Occuipied');
  31.         $bed->setOccupant($event->getBookings());
  32.         $this->em->persist($bed);
  33.         $this->em->flush();
  34.     }
  35.     public function onCheckOut(BookingResidenceCheckOutEvent $event)
  36.     {
  37.         $bed $event->getBookings()->getBedSpace();
  38.         $bed->setOccupancyStatus('Available');
  39.         $bed->setOccupant(null);
  40.         $this->em->persist($bed);
  41.         $this->em->flush();
  42.     }
  43. }