<?php
namespace App\EventSubscriber\Residence;
use App\Event\Residence\BookingResidenceCheckInEvent;
use App\Event\Residence\BookingResidenceCheckOutEvent;
use App\Event\Residence\BookingResidenceUpdatedEvent;
use App\Service\CsscHelperService;
use CIC\DB\envLoader\db;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class LegacyStudentProfileBookingSubscriber implements EventSubscriberInterface
{
private EntityManagerInterface $em;
private db $db;
private ParameterBagInterface $parameterBag;
private CsscHelperService $cssc;
public function __construct(ParameterBagInterface $parameterBag,EntityManagerInterface $em, db $db, CsscHelperService $cssc)
{
$this->em = $em;
$this->db = $db;
$this->parameterBag = $parameterBag;
$this->cssc = $cssc;
}
public static function getSubscribedEvents()
{
return [
BookingResidenceCheckInEvent::class => 'onCheckIn',
BookingResidenceCheckOutEvent::class => 'onCheckOut',
BookingResidenceCheckInEvent::NAME => 'onCheckIn',
BookingResidenceCheckOutEvent::NAME => 'onCheckOut',
];
}
public function onCheckIn(BookingResidenceCheckInEvent $event)
{
if(!$this->parameterBag->get("legacy.update_school_student_residence"))
return;
$student = $event->getBookings()->getStudent();
$this->db->update(
'SINFO',
[
'LADD1'=>$event->getBookings()->getBedSpace()->getRoom()->getBuilding()->getAddress1(),
'LADD2'=>$event->getBookings()->getBedSpace()->getName(),
'LPC'=>$event->getBookings()->getBedSpace()->getRoom()->getBuilding()->getPostalCode(),
'RESCODE'=>$event->getBookings()->getBedSpace()->getRoom()->getBuilding()->getShortCode(),
],
'uuid=?', //uuid?
[$student->getUuid()->toBase32()]
);
$this->cssc->getSinfo()->refresh($student->getStudentNumber());
}
public function onCheckOut(BookingResidenceCheckOutEvent $event)
{
if(!$this->parameterBag->get("legacy.update_school_student_residence"))
return;
$student = $event->getBookings()->getStudent();
$this->db->update(
'SINFO',
[
'LADD1'=>'Moved out of Residence',
'LADD2'=>'',
'RESCODE'=>'OUT',
],
'uuid=?', //uuid?
[$student->getUuid()->toBase32()]
);
$this->cssc->getSinfo()->refresh($student->getStudentNumber());
}
}