(#8) - Minimum lead time

This commit was merged in pull request #10.
This commit is contained in:
Martin Slachta
2026-06-14 10:01:24 +02:00
parent 7d7f748f7a
commit 3225ff1e10
5 changed files with 30 additions and 11 deletions
@@ -39,6 +39,14 @@ class RsvTimetableReservationService {
return false;
}
$max_lead_time = max(array_map(fn($c) => (int) $c->min_lead_time_minutes, $overlapping_capacity));
$earliest_allowed = new DateTime('now', new DateTimeZone('UTC'));
$earliest_allowed->modify("+{$max_lead_time} minutes");
if ($start_utc < $earliest_allowed) {
Logger::error("Reservation rejected: minimum lead time of {$max_lead_time} minutes not met for timetable_id: $timetable_id");
return false;
}
$start_min = $this->time_of_day_minutes($start_utc);
$end_min = $this->time_of_day_minutes($end_utc);
+2 -1
View File
@@ -98,7 +98,8 @@ class RsvTimetableService {
$availabilities[] = new RsvTimetableAvailability($i * $block_length, ($i + 1) * $block_length, $block_length, []);
}
$availabilities[$availability_idx]->push_block($total_capacity - count($reservation_stack));
$max_lead_time = empty($capacity_stack) ? 0 : max(array_map(fn($x) => $x->min_lead_time_minutes, $capacity_stack));
$availabilities[$availability_idx]->push_block($total_capacity - count($reservation_stack), $max_lead_time);
} else if($total_capacity === 0 && count($availabilities) !== $availability_idx) {
$availability_idx++;
}