<?php
namespace App\EventSubscriber\cic\residence;
use App\Event\Residence\BookingResidenceUpdatedEvent;
use CIC\DB\envLoader\db;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* @deprecated
*/
class BookingCheckInSubscriber implements EventSubscriberInterface
{
private db $db;
private ParameterBagInterface $params;
private $exporter;
private $sync = false;
private EntityManagerInterface $em;
/**
* DepartmentChangeSubscriber constructor.
*/
public function __construct(db $db, EntityManagerInterface $em, ParameterBagInterface $params)
{
$this->db = $db;
$this->params = $params;
$this->em = $em;
}
public static function getSubscribedEvents()
{
return [
BookingResidenceUpdatedEvent::class => 'disabled'
// [
// ['onCheckIn'],
// ['onCheckOut'],
// ['onCreate'],
// ['onChange'],
// ],
];
}
public function disabled(BookingResidenceUpdatedEvent $event) {
return;
}
public function onCheckIn(BookingResidenceUpdatedEvent $event)
{
return;
if (!$event->getBookings()->getCheckInDate()) {
return;
}
$now = new \DateTime();
dump($event->getBookings()->getCheckInDate()->format('Ymd'));
dump($now->format('Ymd'));
if ($event->getBookings()->getCheckInDate()->format('Ymd') != $now->format('Ymd')) {
return;
}
// set the room as occupied
$bed = $event->getBookings()->getBedSpace();
$bed->setOccupancyStatus('Occuipied');
$bed->setOccupant($event->getBookings());
$this->em->persist($bed);
$this->em->flush();
$this->updateStudent('check-in', $event);
return;
}
public function onCheckOut(BookingResidenceUpdatedEvent $event)
{
return;
if (!$event->getBookings()->getCheckOutDate()) {
return;
}
$now = new \DateTime();
if ($event->getBookings()->getCheckOutDate()->format('Ymd') != $now->format('Ymd')) {
return;
}
// set the room as occupied
$bed = $event->getBookings()->getBedSpace();
$bed->setOccupancyStatus('Available');
$bed->setOccupant(null);
$this->em->persist($bed);
$this->em->flush();
$this->updateStudent('check-out', $event);
return;
}
public function onCreate(BookingResidenceUpdatedEvent $event)
{
return;
}
public function onChange(BookingResidenceUpdatedEvent $event)
{
return;
}
public function updateStudent(string $type, BookingResidenceUpdatedEvent $event)
{
return;
$supports = ['check-in', 'check-out'];
if (!in_array($type, $supports)) {
return;
}
if ($type == 'check-in') {
$address1 = $event->getBookings()->getBedSpace()->getRoom()->getBuilding()->getAddress1();
$address2 = $event->getBookings()->getBedSpace()->getName();
}
if ($type == 'check-out') {
$address1 = 'Moved out of Residence';
$address2 = 'Requires Update';
}
$student = $event->getBookings()->getStudent();
$student->setAddress($address1);
$student->setAddress2($address2);
$this->em->persist($student);
$this->em->flush();
}
}