<?php
namespace App\Entity\Residence;
use App\Service\Residence\ResidenceReportingService;
use Symfony\Component\Uid\Ulid;
class Occupancy implements \Serializable, \JsonSerializable
{
function __construct($data=null){
// dump($data);
if(!empty($data)) {
// dd('l');
$this->__unserialize($data);
}
}
private $bedId;
private ?Ulid $bedUuid;
private $bedName;
private $bedRate;
private $bedOccupancyStatus;
private $bedStatus;
private $bedType;
private ?bool $bedForCamper=null;
private bool $bedClosedFlag=false;
private $roomStatus;
private $roomType;
private $roomBathType;
private $bedOccupant;
private $bookingId=null;
private ?Ulid $bookingUuid = null;
private $bookingStudent=null;
private $bookingRateCharged = null;
private ?\DateTimeInterface $bookingReservationStartDate=null;
private ?\DateTimeInterface $bookingReservationEndDate=null;
private ?\DateTimeInterface $bookingCheckInDate = null;
private ?\DateTimeInterface $bookingCheckOutDate = null;
private ?\DateTimeInterface $bookingExpectedCheckInDate = null;
private ?\DateTimeInterface $bookingExpectedCheckOutDate = null;
private ?\DateTimeInterface $bookingTemporaryCheckOutDate = null;
private ?\DateTimeInterface $bookingBillingStartDate = null;
private ?\DateTimeInterface $bookingBillingEndDate = null;
private ?bool $bookingFlagBillingReview = null;
private ?string $bookingInvoiceNumber = null;
private $bookingStatus = 'new';
private $bookingStatusText = 0;
private $bedMailbox;
private $roomAccessKey;
private $buildingAccessKey;
private $roomPhoneExtension;
private $buildingId=null;
private ?Ulid $buildingUuid = null;
private $buildingName=null;
private $buildingCode=null;
private $roomId=null;
private ?Ulid $roomUuid = null;
private $roomName=null;
private $floorId=null;
private ?Ulid $floorUuid = null;
private $floorName=null;
private $wingmId=null;
private ?Ulid $wingUuid = null;
private $wingName=null;
private $occupantId=null;
private ?Ulid $occupantUuid=null;
private $occupantNumber=null;
private $occupantGivenName=null;
private $occupantLastName=null;
private $occupantEmail=null;
private $occupantPhone=null;
private $occupantGender=null;
private $occupantType=null;
private bool $occupantYouthFlag;
private $occupantProgram;
private $occupantGroup;
private ?\DateTimeInterface $occupantDateOfBirth=null;
private $occupantCountry=null;
private $occupantBirthCountry=null;
private bool $potentialGraduateFlag;
private string $potentialGraduateSem;
private bool $graduatedFlag;
private ?int $studentId=null;
private ?Ulid $studentUuid=null;
private ?int $camperId=null;
private ?Ulid $camperUuid=null;
private ?string $overStayFlag=null;
private array $extra=[];
private $previousBookingId= null;
private ?Ulid $previousBookingUuid= null;
private $previousBookingBedName=null;
private ?\DateTimeInterface $previousBookingCheckInDate = null;
private ?\DateTimeInterface $previousBookingCheckOutDate = null;
private $nextBookingId= null;
private ?Ulid $nextBookingUuid= null;
private $nextBookingBedName=null;
private ?\DateTimeInterface $nextBookingCheckInDate = null;
private ?\DateTimeInterface $nextBookingCheckOutDate = null;
/**
* @return mixed
*/
public function getBedId()
{
return $this->bedId;
}
/**
* @param mixed $bedId
*
* @return Occupancy
*/
public function setBedId($bedId)
{
$this->bedId = $bedId;
return $this;
}
/**
* @return mixed
*/
public function getBedName()
{
return $this->bedName;
}
/**
* @return mixed
*/
public function getBedType()
{
return $this->bedType;
}
/**
* @param mixed $bedType
* @return Occupancy
*/
public function setBedType($bedType)
{
$this->bedType = $bedType;
return $this;
}
public function getBedForCamper(): ?bool
{
return $this->bedForCamper;
}
public function setBedForCamper(?bool $bedForCamper): Occupancy
{
$this->bedForCamper = $bedForCamper;
return $this;
}
public function isBedClosedFlag(): bool
{
return $this->bedClosedFlag;
}
public function setBedClosedFlag(bool $bedClosedFlag): Occupancy
{
$this->bedClosedFlag = $bedClosedFlag;
return $this;
}
public function isBedOpenFlag(): ?bool
{
if($this->isBedClosedFlag())
return false;
else
return true;
}
public function getBedOpen(): ?bool {
return $this->isBedOpen();
}
/**
* @param mixed $bedName
*
* @return Occupancy
*/
public function setBedName($bedName)
{
$this->bedName = $bedName;
return $this;
}
/**
* @return mixed
*/
public function getBedRate()
{
return $this->bedRate;
}
/**
* @param mixed $bedRate
*
* @return Occupancy
*/
public function setBedRate($bedRate)
{
$this->bedRate = $bedRate;
return $this;
}
/**
* @return mixed
*/
public function getBedOccupancyStatus()
{
return $this->bedOccupancyStatus;
}
/**
* @param mixed $bedOccupancyStatus
*
* @return Occupancy
*/
public function setBedOccupancyStatus($bedOccupancyStatus)
{
$this->bedOccupancyStatus = $bedOccupancyStatus;
return $this;
}
/**
* @return mixed
*/
public function getBedOccupant()
{
return $this->bedOccupant;
}
/**
* @param mixed $bedOccupant
*
* @return Occupancy
*/
public function setBedOccupant($bedOccupant)
{
$this->bedOccupant = $bedOccupant;
return $this;
}
/**
* @return mixed
*/
public function getBookingId()
{
return $this->bookingId;
}
/**
* @param mixed $bookingId
*
* @return Occupancy
*/
public function setBookingId($bookingId)
{
$this->bookingId = $bookingId;
return $this;
}
/**
* @return mixed
*/
public function getBookingStudent()
{
return $this->bookingStudent;
}
/**
* @param mixed $bookingStudent
*
* @return Occupancy
*/
public function setBookingStudent($bookingStudent)
{
$this->bookingStudent = $bookingStudent;
return $this;
}
/**
* @return null
*/
public function getBookingRateCharged()
{
return $this->bookingRateCharged;
}
/**
* @param null $bookingRateCharged
*
* @return Occupancy
*/
public function setBookingRateCharged($bookingRateCharged)
{
$this->bookingRateCharged = $bookingRateCharged;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getBookingReservationStartDate(): ?\DateTimeInterface
{
return $this->bookingReservationStartDate;
}
/**
* @param \DateTimeInterface|null $bookingReservationStartDate
*
* @return Occupancy
*/
public function setBookingReservationStartDate(?\DateTimeInterface $bookingReservationStartDate): Occupancy
{
$this->bookingReservationStartDate = $bookingReservationStartDate;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getBookingReservationEndDate(): ?\DateTimeInterface
{
return $this->bookingReservationEndDate;
}
/**
* @param \DateTimeInterface|null $bookingReservationEndDate
*
* @return Occupancy
*/
public function setBookingReservationEndDate(?\DateTimeInterface $bookingReservationEndDate): Occupancy
{
$this->bookingReservationEndDate = $bookingReservationEndDate;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getBookingCheckInDate(): ?\DateTimeInterface
{
return $this->bookingCheckInDate;
}
/**
* @param \DateTimeInterface|null $bookingCheckInDate
*
* @return Occupancy
*/
public function setBookingCheckInDate(?\DateTimeInterface $bookingCheckInDate): Occupancy
{
$this->bookingCheckInDate = $bookingCheckInDate;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getBookingCheckOutDate(): ?\DateTimeInterface
{
return $this->bookingCheckOutDate;
}
/**
* @param \DateTimeInterface|null $bookingCheckOutDate
*
* @return Occupancy
*/
public function setBookingCheckOutDate(?\DateTimeInterface $bookingCheckOutDate): Occupancy
{
$this->bookingCheckOutDate = $bookingCheckOutDate;
return $this;
}
public function isCheckedIn() : bool
{
if ($this->bookingCheckInDate) {
return true;
}
return false;
}
public function isCheckedOut() : bool
{
if ($this->bookingCheckOutDate) {
return true;
}
return false;
}
public function isPreviousCheckedIn() : bool
{
if ($this->previousBookingCheckInDate) {
return true;
}
return false;
}
public function isPreviousCheckedOut() : bool
{
if ($this->previousBookingCheckOutDate) {
return true;
}
return false;
}
public function isNextCheckedIn() : bool
{
if ($this->nextBookingCheckInDate) {
return true;
}
return false;
}
public function isNextCheckedOut() : bool
{
if ($this->nextBookingCheckOutDate) {
return true;
}
return false;
}
public function isTempCheckedOut() : bool
{
if ($this->bookingTemporaryCheckOutDate) {
return true;
}
return false;
}
/**
* @return \DateTimeInterface|null
*/
public function getBookingExpectedCheckInDate(): ?\DateTimeInterface
{
return $this->bookingExpectedCheckInDate;
}
/**
* @param \DateTimeInterface|null $bookingExpectedCheckInDate
*
* @return Occupancy
*/
public function setBookingExpectedCheckInDate(?\DateTimeInterface $bookingExpectedCheckInDate): Occupancy
{
$this->bookingExpectedCheckInDate = $bookingExpectedCheckInDate;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getBookingExpectedCheckOutDate(): ?\DateTimeInterface
{
return $this->bookingExpectedCheckOutDate;
}
/**
* @param \DateTimeInterface|null $bookingExpectedCheckOutDate
*
* @return Occupancy
*/
public function setBookingExpectedCheckOutDate(?\DateTimeInterface $bookingExpectedCheckOutDate): Occupancy
{
$this->bookingExpectedCheckOutDate = $bookingExpectedCheckOutDate;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getBookingTemporaryCheckOutDate(): ?\DateTimeInterface
{
return $this->bookingTemporaryCheckOutDate;
}
/**
* @param \DateTimeInterface|null $bookingTemporaryCheckOutDate
*
* @return Occupancy
*/
public function setBookingTemporaryCheckOutDate(?\DateTimeInterface $bookingTemporaryCheckOutDate): Occupancy
{
$this->bookingTemporaryCheckOutDate = $bookingTemporaryCheckOutDate;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getBookingBillingStartDate(): ?\DateTimeInterface
{
return $this->bookingBillingStartDate;
}
/**
* @param \DateTimeInterface|null $bookingBillingStartDate
*
* @return Occupancy
*/
public function setBookingBillingStartDate(?\DateTimeInterface $bookingBillingStartDate): Occupancy
{
$this->bookingBillingStartDate = $bookingBillingStartDate;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getBookingBillingEndDate(): ?\DateTimeInterface
{
return $this->bookingBillingEndDate;
}
/**
* @param \DateTimeInterface|null $bookingBillingEndDate
*
* @return Occupancy
*/
public function setBookingBillingEndDate(?\DateTimeInterface $bookingBillingEndDate): Occupancy
{
$this->bookingBillingEndDate = $bookingBillingEndDate;
return $this;
}
/**
* @return bool|null
*/
public function getBookingFlagBillingReview(): ?bool
{
return $this->bookingFlagBillingReview;
}
/**
* @param bool|null $bookingFlagBillingReview
*
* @return Occupancy
*/
public function setBookingFlagBillingReview(?bool $bookingFlagBillingReview): Occupancy
{
$this->bookingFlagBillingReview = $bookingFlagBillingReview;
return $this;
}
/**
* @return string|null
*/
public function getBookingInvoiceNumber(): ?string
{
return $this->bookingInvoiceNumber;
}
/**
* @param string|null $bookingInvoiceNumber
*
* @return Occupancy
*/
public function setBookingInvoiceNumber(?string $bookingInvoiceNumber): Occupancy
{
$this->bookingInvoiceNumber = $bookingInvoiceNumber;
return $this;
}
/**
* @return string
*/
public function getBookingStatus(): string
{
return $this->bookingStatus;
}
/**
* @param string $bookingStatus
*
* @return Occupancy
*/
public function setBookingStatus(?string $bookingStatus): Occupancy
{
if(is_null($bookingStatus)) $bookingStatus='new';
$this->bookingStatus = $bookingStatus;
return $this;
}
/**
* @return int
*/
public function getBookingStatusText(): int
{
return $this->bookingStatusText;
}
/**
* @param int $bookingStatusText
*
* @return Occupancy
*/
public function setBookingStatusText(int $bookingStatusText): Occupancy
{
$this->bookingStatusText = $bookingStatusText;
return $this;
}
/**
* @return null
*/
public function getBuildingId()
{
return $this->buildingId;
}
/**
* @param null $buildingId
*
* @return Occupancy
*/
public function setBuildingId($buildingId)
{
$this->buildingId = $buildingId;
return $this;
}
/**
* @return null
*/
public function getBuildingName()
{
return $this->buildingName;
}
/**
* @param null $buildingName
*
* @return Occupancy
*/
public function setBuildingName($buildingName)
{
$this->buildingName = $buildingName;
return $this;
}
/**
* @return null
*/
public function getBuildingCode()
{
return $this->buildingCode;
}
/**
* @param null $buildingCode
*
* @return Occupancy
*/
public function setBuildingCode($buildingCode)
{
$this->buildingCode = $buildingCode;
return $this;
}
/**
* @return null
*/
public function getRoomId()
{
return $this->roomId;
}
/**
* @param null $roomId
*
* @return Occupancy
*/
public function setRoomId($roomId)
{
$this->roomId = $roomId;
return $this;
}
/**
* @return null
*/
public function getRoomName()
{
return $this->roomName;
}
/**
* @param null $roomName
*
* @return Occupancy
*/
public function setRoomName($roomName)
{
$this->roomName = $roomName;
return $this;
}
/**
* @return null
*/
public function getFloorId()
{
return $this->floorId;
}
/**
* @param null $floorId
*
* @return Occupancy
*/
public function setFloorId($floorId)
{
$this->floorId = $floorId;
return $this;
}
/**
* @return null
*/
public function getFloorName()
{
return $this->floorName;
}
/**
* @param null $floorName
*
* @return Occupancy
*/
public function setFloorName($floorName)
{
$this->floorName = $floorName;
return $this;
}
/**
* @return null
*/
public function getWingmId()
{
return $this->wingmId;
}
/**
* @param null $wingmId
*
* @return Occupancy
*/
public function setWingmId($wingmId)
{
$this->wingmId = $wingmId;
return $this;
}
/**
* @return null
*/
public function getWingName()
{
return $this->wingName;
}
/**
* @param null $wingName
*
* @return Occupancy
*/
public function setWingName($wingName)
{
$this->wingName = $wingName;
return $this;
}
/**
* @return null
*/
public function getPreviousBookingId()
{
return $this->previousBookingId;
}
/**
* @param null $previousBookingId
* @return Occupancy
*/
public function setPreviousBookingId($previousBookingId)
{
$this->previousBookingId = $previousBookingId;
return $this;
}
public function getPreviousBookingUuid(): ?Ulid
{
return $this->previousBookingUuid;
}
public function setPreviousBookingUuid(?Ulid $previousBookingUuid): Occupancy
{
$this->previousBookingUuid = $previousBookingUuid;
return $this;
}
/**
* @return null
*/
public function getPreviousBookingBedName()
{
return $this->previousBookingBedName;
}
/**
* @param null $previousBookingBedName
* @return Occupancy
*/
public function setPreviousBookingBedName($previousBookingBedName)
{
$this->previousBookingBedName = $previousBookingBedName;
return $this;
}
public function getPreviousBookingCheckInDate(): ?\DateTimeInterface
{
return $this->previousBookingCheckInDate;
}
public function setPreviousBookingCheckInDate(?\DateTimeInterface $previousBookingCheckInDate): Occupancy
{
$this->previousBookingCheckInDate = $previousBookingCheckInDate;
return $this;
}
public function getPreviousBookingCheckOutDate(): ?\DateTimeInterface
{
return $this->previousBookingCheckOutDate;
}
public function setPreviousBookingCheckOutDate(?\DateTimeInterface $previousBookingCheckOutDate): Occupancy
{
$this->previousBookingCheckOutDate = $previousBookingCheckOutDate;
return $this;
}
/**
* @return null
*/
public function getNextBookingId()
{
return $this->nextBookingId;
}
/**
* @param null $nextBookingId
* @return Occupancy
*/
public function setNextBookingId($nextBookingId)
{
$this->nextBookingId = $nextBookingId;
return $this;
}
public function getNextBookingUuid(): ?Ulid
{
return $this->nextBookingUuid;
}
public function setNextBookingUuid(?Ulid $nextBookingUuid): Occupancy
{
$this->nextBookingUuid = $nextBookingUuid;
return $this;
}
/**
* @return null
*/
public function getNextBookingBedName()
{
return $this->nextBookingBedName;
}
/**
* @param null $nextBookingBedName
* @return Occupancy
*/
public function setNextBookingBedName($nextBookingBedName)
{
$this->nextBookingBedName = $nextBookingBedName;
return $this;
}
public function getNextBookingCheckInDate(): ?\DateTimeInterface
{
return $this->nextBookingCheckInDate;
}
public function setNextBookingCheckInDate(?\DateTimeInterface $nextBookingCheckInDate): Occupancy
{
$this->nextBookingCheckInDate = $nextBookingCheckInDate;
return $this;
}
public function getNextBookingCheckOutDate(): ?\DateTimeInterface
{
return $this->nextBookingCheckOutDate;
}
public function setNextBookingCheckOutDate(?\DateTimeInterface $nextBookingCheckOutDate): Occupancy
{
$this->nextBookingCheckOutDate = $nextBookingCheckOutDate;
return $this;
}
/*************************************/
/******* Assets *******/
/*************************************/
/**
* @return mixed
*/
public function getBedMailbox()
{
return $this->bedMailbox;
}
/**
* @param mixed $bedMailbox
* @return Occupancy
*/
public function setBedMailbox($bedMailbox)
{
$this->bedMailbox = $bedMailbox;
return $this;
}
/**
* @return mixed
*/
public function getRoomAccessKey()
{
return $this->roomAccessKey;
}
/**
* @param mixed $roomAccessKey
* @return Occupancy
*/
public function setRoomAccessKey($roomAccessKey)
{
$this->roomAccessKey = $roomAccessKey;
return $this;
}
/**
* @return mixed
*/
public function getBuildingAccessKey()
{
return $this->buildingAccessKey;
}
/**
* @param mixed $buildingAccessKey
* @return Occupancy
*/
public function setBuildingAccessKey($buildingAccessKey)
{
$this->buildingAccessKey = $buildingAccessKey;
return $this;
}
/**
* @return mixed
*/
public function getRoomPhoneExtension()
{
return $this->roomPhoneExtension;
}
/**
* @param mixed $roomPhoneExtension
* @return Occupancy
*/
public function setRoomPhoneExtension($roomPhoneExtension)
{
$this->roomPhoneExtension = $roomPhoneExtension;
return $this;
}
/*************************************/
/******* ULIDs *******/
/*************************************/
/**
* @return Ulid|null
*/
public function getBedUuid(): ?Ulid
{
return $this->bedUuid;
}
/**
* @param Ulid|null $bedUuid
*
* @return Occupancy
*/
public function setBedUuid(?Ulid $bedUuid): Occupancy
{
$this->bedUuid = $bedUuid;
return $this;
}
/**
* @return Ulid|null
*/
public function getBookingUuid(): ?Ulid
{
return $this->bookingUuid;
}
/**
* @param Ulid|null $bookingUuid
*
* @return Occupancy
*/
public function setBookingUuid(?Ulid $bookingUuid): Occupancy
{
$this->bookingUuid = $bookingUuid;
return $this;
}
/**
* @return Ulid|null
*/
public function getBuildingUuid(): ?Ulid
{
return $this->buildingUuid;
}
/**
* @param Ulid|null $buildingUuid
*
* @return Occupancy
*/
public function setBuildingUuid(?Ulid $buildingUuid): Occupancy
{
$this->buildingUuid = $buildingUuid;
return $this;
}
/**
* @return Ulid|null
*/
public function getFloorUuid(): ?Ulid
{
return $this->floorUuid;
}
/**
* @param Ulid|null $floorUuid
*
* @return Occupancy
*/
public function setFloorUuid(?Ulid $floorUuid): Occupancy
{
$this->floorUuid = $floorUuid;
return $this;
}
/**
* @return Ulid|null
*/
public function getWingUuid(): ?Ulid
{
return $this->wingUuid;
}
/**
* @param Ulid|null $wingUuid
*
* @return Occupancy
*/
public function setWingUuid(?Ulid $wingUuid): Occupancy
{
$this->wingUuid = $wingUuid;
return $this;
}
/**
* @return Ulid|null
*/
public function getRoomUuid(): ?Ulid
{
return $this->roomUuid;
}
/**
* @param Ulid|null $roomUuid
*
* @return Occupancy
*/
public function setRoomUuid(?Ulid $roomUuid): Occupancy
{
$this->roomUuid = $roomUuid;
return $this;
}
/**********************************/
/**
* @return null
*/
public function getOccupantId()
{
return $this->occupantId;
}
/**
* @param null $occupantId
*
* @return Occupancy
*/
public function setOccupantId($occupantId)
{
$this->occupantId = $occupantId;
return $this;
}
/**
* @return Ulid|null
*/
public function getOccupantUuid(): ?Ulid
{
return $this->occupantUuid;
}
/**
* @param Ulid|null $occupantUuid
*
* @return Occupancy
*/
public function setOccupantUuid(?Ulid $occupantUuid): Occupancy
{
$this->occupantUuid = $occupantUuid;
return $this;
}
/**
* @return null
*/
public function getOccupantNumber()
{
return $this->occupantNumber;
}
/**
* @param null $occupantNumber
*
* @return Occupancy
*/
public function setOccupantNumber($occupantNumber)
{
$this->occupantNumber = $occupantNumber;
return $this;
}
/**
* @return null
*/
public function getOccupantGivenName()
{
return $this->occupantGivenName;
}
/**
* @param null $occupantGivenName
*
* @return Occupancy
*/
public function setOccupantGivenName($occupantGivenName)
{
$this->occupantGivenName = $occupantGivenName;
return $this;
}
/**
* @return null
*/
public function getOccupantLastName()
{
return $this->occupantLastName;
}
/**
* @param null $occupantLastName
*
* @return Occupancy
*/
public function setOccupantLastName($occupantLastName)
{
$this->occupantLastName = $occupantLastName;
return $this;
}
/**
* @return null
*/
public function getOccupantEmail()
{
return $this->occupantEmail;
}
/**
* @param null $occupantEmail
*
* @return Occupancy
*/
public function setOccupantEmail($occupantEmail)
{
$this->occupantEmail = $occupantEmail;
return $this;
}
/**
* @return null
*/
public function getOccupantPhone()
{
return $this->occupantPhone;
}
/**
* @param null $occupantPhone
*
* @return Occupancy
*/
public function setOccupantPhone($occupantPhone)
{
$this->occupantPhone = $occupantPhone;
return $this;
}
/**
* @return null
*/
public function getOccupantGender()
{
return $this->occupantGender;
}
/**
* @param null $occupantGender
*
* @return Occupancy
*/
public function setOccupantGender($occupantGender)
{
$this->occupantGender = $occupantGender;
return $this;
}
/**
* @return null
*/
public function getOccupantType()
{
return $this->occupantType;
}
/**
* @param null $occupantType
*
* @return Occupancy
*/
public function setOccupantType($occupantType)
{
$this->occupantType = $occupantType;
return $this;
}
/**
* @return null
*/
public function getOccupantGroup()
{
return $this->occupantGroup;
}
/**
* @param null $occupantGroup
*
* @return Occupancy
*/
public function setOccupantGroup($occupantGroup)
{
$this->occupantGroup = $occupantGroup;
return $this;
}
/**
* @return null
*/
public function getOccupantCountry()
{
return $this->occupantCountry;
}
/**
* @param null $occupantCountry
*
* @return Occupancy
*/
public function setOccupantCountry($occupantCountry)
{
$this->occupantCountry = $occupantCountry;
return $this;
}
/**
* @return null
*/
public function getOccupantBirthCountry()
{
return $this->occupantBirthCountry;
}
/**
* @param null $occupantBirthCountry
*/
public function setOccupantBirthCountry($occupantBirthCountry): void
{
$this->occupantBirthCountry = $occupantBirthCountry;
}
/**
* @return \DateTimeInterface|null
*/
public function getOccupantDateOfBirth(): ?\DateTimeInterface
{
return $this->occupantDateOfBirth;
}
/**
* @param \DateTimeInterface|null $occupantDateOfBirth
*
* @return Occupancy
*/
public function setOccupantDateOfBirth(?\DateTimeInterface $occupantDateOfBirth): Occupancy
{
$this->occupantDateOfBirth = $occupantDateOfBirth;
return $this;
}
public function getOccupantAge() : ?int
{
if (empty($this->getOccupantDateOfBirth())) {
return null;
}
$age = $this->getOccupantDateOfBirth()->diff(new \DateTime())->y;
return $age;
}
/*************************************/
function camel_to_snake($input)
{
return strtolower(preg_replace('/(?<!^)[A-Z]/', '_$0', $input));
}
function snakeToCamel($input)
{
return lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $input))));
// return lcfirst(str_replace('', '', ucwords($input, '')));
}
public function serialize()
{
return $this->__serialize();
}
public function __serialize() {
// return $this->toArray();
return $this->toArray();
}
public function jsonSerialize()
{
return $this->__serialize();
}
public function toArray()
{
$data = [];
foreach (get_object_vars($this) as $key => $val) {
$f = 'get' . ucfirst($key);
switch ($key) {
case "bookingReservationStartDate":
case "bookingReservationEndDate":
case "bookingCheckInDate":
case "bookingCheckOutDate":
case "bookingExpectedCheckInDate":
case "bookingExpectedCheckOutDate":
case "bookingTemporaryCheckOutDate":
case "bookingBillingStartDate":
case "bookingBillingEndDate":
case "studentDateOfBirth":
case "occupantDateOfBirth":
case "startDate":
case "endDate":
case "previousBookingCheckInDate":
case "previousBookingCheckOutDate":
case "nextBookingCheckInDate":
case "nextBookingCheckOutDate":
/* @var $val \DateTime */
$data[$this->camel_to_snake($key)] = $val->format("c");
break;
default:
/* @var $val string */
$data[$this->camel_to_snake($key)] = $this->$f();
break;
}
}
// dd($data);
return $data;
}
/**
* @return mixed
*/
public function getBedStatus()
{
return $this->bedStatus;
}
/**
* @param mixed $bedStatus
*/
public function setBedStatus($bedStatus): void
{
$this->bedStatus = $bedStatus;
}
/**
* @return mixed
*/
public function getRoomStatus()
{
return $this->roomStatus;
}
/**
* @param mixed $roomStatus
*/
public function setRoomStatus($roomStatus): void
{
$this->roomStatus = $roomStatus;
}
/**
* @return mixed
*/
public function getRoomType()
{
return $this->roomType;
}
/**
* @param mixed $roomType
* @return Occupancy
*/
public function setRoomType($roomType)
{
$this->roomType = $roomType;
return $this;
}
/**
* @return mixed
*/
public function getRoomBathType()
{
return $this->roomBathType;
}
/**
* @param mixed $roomBathType
* @return Occupancy
*/
public function setRoomBathType($roomBathType)
{
$this->roomBathType = $roomBathType;
return $this;
}
public function isOccupantYouthFlag(): bool
{
return $this->occupantYouthFlag;
}
public function setOccupantYouthFlag(bool $occupantYouthFlag): Occupancy
{
$this->occupantYouthFlag = $occupantYouthFlag;
return $this;
}
/**
* @return mixed
*/
public function getOccupantProgram()
{
return $this->occupantProgram;
}
/**
* @param mixed $occupantProgram
* @return Occupancy
*/
public function setOccupantProgram($occupantProgram)
{
$this->occupantProgram = $occupantProgram;
return $this;
}
public function isPotentialGraduateFlag(): bool
{
return $this->potentialGraduateFlag;
}
public function setPotentialGraduateFlag(bool $potentialGraduateFlag): Occupancy
{
$this->potentialGraduateFlag = $potentialGraduateFlag;
return $this;
}
public function getPotentialGraduateSem(): string
{
return $this->potentialGraduateSem;
}
public function setPotentialGraduateSem(string $potentialGraduateSem): Occupancy
{
$this->potentialGraduateSem = $potentialGraduateSem;
return $this;
}
public function isGraduatedFlag(): bool
{
return $this->graduatedFlag;
}
public function setGraduatedFlag(bool $graduatedFlag): Occupancy
{
$this->graduatedFlag = $graduatedFlag;
return $this;
}
public function getExtra(): array
{
return $this->extra;
}
public function setExtra(array $extra): Occupancy
{
$this->extra = $extra;
return $this;
}
public function getStudentId(): ?int
{
return $this->studentId;
}
public function setStudentId(?int $studentId): Occupancy
{
$this->studentId = $studentId;
return $this;
}
public function getStudentUuid(): ?Ulid
{
return $this->studentUuid;
}
public function setStudentUuid(?Ulid $studentUuid): Occupancy
{
$this->studentUuid = $studentUuid;
return $this;
}
public function getCamperId(): ?int
{
return $this->camperId;
}
public function setCamperId(?int $camperId): Occupancy
{
$this->camperId = $camperId;
return $this;
}
public function getCamperUuid(): ?Ulid
{
return $this->camperUuid;
}
public function setCamperUuid(?Ulid $camperUuid): Occupancy
{
$this->camperUuid = $camperUuid;
return $this;
}
public function getOverStayFlag(): ?string
{
return $this->overStayFlag;
}
public function setOverStayFlag(?string $overStayFlag): Occupancy
{
$this->overStayFlag = $overStayFlag;
return $this;
}
public function unserialize($serialized)
{
$this->__unserialize($serialized);
}
function __unserialize($serialized)
{
if(is_string($serialized))
$serialized=json_decode($serialized,true);
if(!is_array($serialized))
return;
foreach ($serialized as $key => $val) {
$prop = $this->snakeToCamel($key);
$f = "set" . ucfirst($prop);
if (method_exists($this, $f)) {
switch ($prop) {
case "bookingReservationStartDate":
case "bookingReservationEndDate":
case "bookingCheckInDate":
case "bookingCheckOutDate":
case "previousBookingCheckInDate":
case "nextBookingCheckOutDate":
case "nextBookingCheckInDate":
case "previousBookingCheckOutDate":
case "bookingExpectedCheckInDate":
case "bookingExpectedCheckOutDate":
case "bookingTemporaryCheckOutDate":
case "bookingBillingStartDate":
case "bookingBillingEndDate":
case "studentDateOfBirth":
case "occupantDateOfBirth":
case "startDate":
case "endDate":
if(!is_null($val))
$this->$f(new \DateTime($val));
// $this->$f(new \DateTime('2023-05-15 11:22:33'));
break;
case "bookingUuid":
case "previousBookingUuid":
case "nextBookingUuid":
case "bedUuid":
case "roomUuid":
case "buildingUuid":
case "floorUuid":
case "wingUuid":
case "studentUuid":
case "occupantUuid":
case "camperUuid":
//only load if not null
if(!empty($val))
$this->$f(Ulid::fromString($val));
else $this->$f(null);
break;
default:
$this->$f($val);
break;
}
}
}
}
}