src/EventSubscriber/Residence/StudentProfileBookingSubscriber.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber\Residence;
  3. use App\Entity\School\Student\StudentReachCloud;
  4. use App\Event\Residence\BookingResidenceCheckInEvent;
  5. use App\Event\Residence\BookingResidenceCheckOutEvent;
  6. use App\Event\Residence\BookingResidenceUpdatedEvent;
  7. use CIC\DB\envLoader\db;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. class StudentProfileBookingSubscriber implements EventSubscriberInterface
  12. {
  13.     private EntityManagerInterface $em;
  14.     public function __construct(EntityManagerInterface $em)
  15.     {
  16.         $this->em $em;
  17.     }
  18.     public static function getSubscribedEvents()
  19.     {
  20.         return [
  21.             BookingResidenceCheckInEvent::class => 'onCheckIn',
  22.             BookingResidenceCheckOutEvent::class => 'onCheckOut',
  23.             BookingResidenceCheckInEvent::NAME => 'onCheckIn',
  24.             BookingResidenceCheckOutEvent::NAME => 'onCheckOut',
  25.         ];
  26.     }
  27.     public function onCheckIn(BookingResidenceCheckInEvent $event)
  28.     {
  29.         if(!$event->getBookings()->getStudent())
  30.             return;
  31.         $student $event->getBookings()->getStudent();
  32.         $student->setAddress($event->getBookings()->getBedSpace()->getRoom()->getBuilding()->getAddress1());
  33.         $student->setAddress2($event->getBookings()->getBedSpace()->getName());
  34.         $student->setResidence($event->getBookings()->getBedSpace()->getRoom()->getBuilding());
  35.         $student->setResidenceBookingCurrent($event->getBookings());
  36.         $student->setResidenceCode($event->getBookings()->getBedSpace()->getRoom()->getBuilding()->getShortCode());
  37.         if(!$student->getReach()) {
  38.             $student->setReach(new StudentReachCloud());
  39.             $student->getReach()->setAccountActive(1);
  40.         }
  41.         $student->getReach()->setHouse($event->getBookings()->getBedSpace()->getRoom()->getBuilding()->getReachId());
  42.         $this->em->persist($student);
  43.         $this->em->flush();
  44.     }
  45.     public function onCheckOut(BookingResidenceCheckOutEvent $event)
  46.     {
  47.         if(!$event->getBookings()->getStudent())
  48.             return;
  49.         $student $event->getBookings()->getStudent();
  50.         $student->setAddress('Moved out of Residence');
  51.         $student->setAddress2('Requires Update');
  52.         $student->setResidence(NULL);
  53.         $student->setResidenceCode('OUT');
  54.         $student->setResidenceBookingPrevious($student->getResidenceBookingCurrent());
  55.         $student->setResidenceBookingCurrent(NULL);
  56.         $this->em->persist($student);
  57.         $this->em->flush();
  58.     }
  59. }