← Back
Editing: SlotExtrapolator.php
<?php declare(strict_types=1); /** * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\Calendar\Service\Appointments; use OCA\Calendar\Db\AppointmentConfig; use Psr\Log\LoggerInterface; class SlotExtrapolator { public function __construct( private LoggerInterface $logger, ) { } /** * @param AppointmentConfig $config * @param Interval[] $availabilityIntervals * * @return Interval[] */ public function extrapolate(AppointmentConfig $config, array $availabilityIntervals): array { $this->logger->debug('Intervals before extrapolating:' . count($availabilityIntervals), ['app' => 'calendar-appointments']); if (empty($availabilityIntervals)) { return []; } foreach ($availabilityIntervals as $availabilityInterval) { $this->logger->debug('Interval start: ' . $availabilityInterval->getStart() . ', interval end: ' . $availabilityInterval->getEnd(), ['app' => 'calendar-appointments']); } $increment = $config->getIncrement(); $length = $config->getLength(); $slots = []; foreach ($availabilityIntervals as $available) { $from = $available->getStart(); $to = $available->getEnd(); for ($t = $from; ($t + $length) <= $to; $t += $increment) { $slots[] = new Interval($t, $t + $length); } } $this->logger->debug('Slots after extrapolating:' . count($slots), ['app' => 'calendar-appointments']); return $slots; } }
Save File
Cancel