Improve how date ranges work on schedule API calls.

This commit is contained in:
Buster Neece 2023-11-05 04:11:44 -06:00
parent 4f24a846a6
commit d83a8a4641
No known key found for this signature in database
2 changed files with 16 additions and 7 deletions

View File

@ -20,8 +20,8 @@ trait HasScheduleDisplay
$dateRange = $this->getDateRange($request, $tz);
return new DateRange(
$dateRange->getStart()->subDay()->startOf('day'),
$dateRange->getEnd()->endOf('day')
$dateRange->getStart(),
$dateRange->getEnd()
);
}
@ -34,14 +34,14 @@ trait HasScheduleDisplay
): array {
$events = [];
$startDate = $dateRange->getStart();
$endDate = $dateRange->getEnd();
$loopStartDate = $dateRange->getStart()->subDay()->startOf('day');
$loopEndDate = $dateRange->getEnd()->endOf('day');
foreach ($scheduleItems as $scheduleItem) {
/** @var StationSchedule $scheduleItem */
$i = $startDate;
$i = $loopStartDate;
while ($i <= $endDate) {
while ($i <= $loopEndDate) {
$dayOfWeek = $i->dayOfWeekIso;
if (
@ -56,7 +56,10 @@ trait HasScheduleDisplay
$rowEnd = $rowEnd->addDay();
}
$events[] = $rowRender($scheduleItem, $rowStart, $rowEnd, $now);
$itemDateRange = new DateRange($rowStart, $rowEnd);
if ($itemDateRange->isWithin($dateRange)) {
$events[] = $rowRender($scheduleItem, $rowStart, $rowEnd, $now);
}
}
$i = $i->addDay();

View File

@ -38,4 +38,10 @@ final class DateRange
{
return $time->between($this->start, $this->end);
}
public function isWithin(self $toCompare): bool
{
return $this->getEnd() >= $toCompare->getStart()
&& $this->getStart() <= $toCompare->getEnd();
}
}