diff --git a/public/typo3conf/ext/ep_products/Classes/Service/IcalService.php b/public/typo3conf/ext/ep_products/Classes/Service/IcalService.php index 1ab2507a..e8f2ac48 100644 --- a/public/typo3conf/ext/ep_products/Classes/Service/IcalService.php +++ b/public/typo3conf/ext/ep_products/Classes/Service/IcalService.php @@ -71,29 +71,37 @@ class IcalService implements SingletonInterface $vcalendar = $this->createCalendarInstance(); - $dateStart = $dateEnd = null; + $paxOccupiedCurrent = $dateStart = $dateEnd = null; foreach ($events as $event) { /** @var Contingent $event */ $paxTotal = $event->getPax(); - $paxAvaiable = $event->getAvailable(); + $paxAvailable = $event->getAvailable(); - $percentageBooked = 100; - - if ($paxTotal > 0 && Contingent::STATUS_BLOCKED !== $event->getStatus()) { - $percentageBooked = 100 - round($paxAvaiable / $paxTotal * 100); + if (Contingent::STATUS_BLOCKED === $event->getStatus()) { + $paxOccupied = $paxTotal; + } else { + $paxOccupied = $paxTotal - $paxAvailable; } - if ($percentageBooked >= self::THRESHOLD) { - if (null !== $dateStart) { - continue; + if ($paxOccupied !== $paxOccupiedCurrent) { + if (null === $dateStart) { + $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 { @@ -110,20 +118,16 @@ class IcalService implements SingletonInterface * @param Vcalendar $vcalendar * @param \DateTime $dateStart * @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 { $vcalendar ->newVevent() ->setDtstart($dateStart) ->setDtend($dateEnd) - ->setSummary('Unavailable') - ->setDescription(sprintf( - 'Unavailable from %s to %s', - $dateStart->format('d M Y'), - $dateEnd->format('d.M Y') - )) + ->setDescription(sprintf('Part-occupied:%d', $pax)) ; } catch (\Exception $e) { @@ -143,4 +147,4 @@ class IcalService implements SingletonInterface return $vcalendar; } -} \ No newline at end of file +}