Provide pax in ical feed

This commit is contained in:
Björn Fromme
2020-02-04 20:47:24 +01:00
parent 73b6212a98
commit 832a98df56
@@ -71,29 +71,37 @@ class IcalService implements SingletonInterface
$vcalendar = $this->createCalendarInstance(); $vcalendar = $this->createCalendarInstance();
$dateStart = $dateEnd = null; $paxOccupiedCurrent = $dateStart = $dateEnd = null;
foreach ($events as $event) { foreach ($events as $event) {
/** @var Contingent $event */ /** @var Contingent $event */
$paxTotal = $event->getPax(); $paxTotal = $event->getPax();
$paxAvaiable = $event->getAvailable(); $paxAvailable = $event->getAvailable();
$percentageBooked = 100; if (Contingent::STATUS_BLOCKED === $event->getStatus()) {
$paxOccupied = $paxTotal;
if ($paxTotal > 0 && Contingent::STATUS_BLOCKED !== $event->getStatus()) { } else {
$percentageBooked = 100 - round($paxAvaiable / $paxTotal * 100); $paxOccupied = $paxTotal - $paxAvailable;
} }
if ($percentageBooked >= self::THRESHOLD) { if ($paxOccupied !== $paxOccupiedCurrent) {
if (null !== $dateStart) { if (null === $dateStart) {
continue; $dateStart = $event->getBegin();
} else {
$dateEnd = $event->getEnd();
if ($paxOccupiedCurrent > 0) {
$this->addCalendarItem(
$vcalendar,
$dateStart,
$dateEnd,
$paxOccupiedCurrent
);
}
$dateStart = $dateEnd = null;
} }
$dateStart = $event->getBegin();
} elseif (null !== $dateStart) {
$dateEnd = $event->getEnd();
$this->addCalendarItem($vcalendar, $dateStart, $dateEnd);
$dateStart = $dateEnd = null;
} }
$paxOccupiedCurrent = $paxOccupied;
} }
try { try {
@@ -110,20 +118,16 @@ class IcalService implements SingletonInterface
* @param Vcalendar $vcalendar * @param Vcalendar $vcalendar
* @param \DateTime $dateStart * @param \DateTime $dateStart
* @param \DateTime $dateEnd * @param \DateTime $dateEnd
* @param int $pax
*/ */
protected function addCalendarItem(Vcalendar $vcalendar, \DateTime $dateStart, \DateTime $dateEnd): void protected function addCalendarItem(Vcalendar $vcalendar, \DateTime $dateStart, \DateTime $dateEnd, int $pax): void
{ {
try { try {
$vcalendar $vcalendar
->newVevent() ->newVevent()
->setDtstart($dateStart) ->setDtstart($dateStart)
->setDtend($dateEnd) ->setDtend($dateEnd)
->setSummary('Unavailable') ->setDescription(sprintf('Part-occupied:%d', $pax))
->setDescription(sprintf(
'Unavailable from %s to %s',
$dateStart->format('d M Y'),
$dateEnd->format('d.M Y')
))
; ;
} }
catch (\Exception $e) { catch (\Exception $e) {
@@ -143,4 +147,4 @@ class IcalService implements SingletonInterface
return $vcalendar; return $vcalendar;
} }
} }