2026-06-11 19:03:29 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
class RsvTimetableReservation {
|
|
|
|
|
public int|null $id;
|
|
|
|
|
public int $timetable_id;
|
|
|
|
|
public DateTime $start_utc; // UTC, 'Y-m-d H:i:s'
|
|
|
|
|
public DateTime $end_utc; // UTC, 'Y-m-d H:i:s'
|
|
|
|
|
|
2026-06-17 11:15:09 +02:00
|
|
|
public ?int $is_confirmed = null;
|
|
|
|
|
|
2026-06-11 19:03:29 +02:00
|
|
|
public static function schema(): array {
|
|
|
|
|
return [
|
|
|
|
|
'type' => 'object',
|
|
|
|
|
'properties' => [
|
|
|
|
|
'id' => ['type' => 'integer', 'readonly' => true],
|
|
|
|
|
'timetable_id' => ['type' => 'integer', 'required' => true],
|
|
|
|
|
'start_utc' => ['type' => 'string', 'required' => true, 'format' => 'date-time'],
|
|
|
|
|
'end_utc' => ['type' => 'string', 'required' => true, 'format' => 'date-time'],
|
|
|
|
|
],
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function __construct(int|null $id, int $timetable_id, DateTime $start_utc, DateTime $end_utc) {
|
|
|
|
|
$this->id = $id;
|
|
|
|
|
$this->timetable_id = $timetable_id;
|
|
|
|
|
$this->start_utc = $start_utc;
|
|
|
|
|
$this->end_utc = $end_utc;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function from_array(array $data): self {
|
|
|
|
|
$utc = new DateTimeZone('UTC');
|
|
|
|
|
return new self(
|
|
|
|
|
$data['id'] ?? null,
|
|
|
|
|
(int) $data['timetable_id'],
|
|
|
|
|
new DateTime($data['start_utc'], $utc),
|
|
|
|
|
new DateTime($data['end_utc'], $utc),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function to_array(): array {
|
|
|
|
|
return [
|
|
|
|
|
'id' => $this->id,
|
|
|
|
|
'timetable_id' => $this->timetable_id,
|
|
|
|
|
'start_utc' => $this->start_utc->format('Y-m-d H:i:s'),
|
|
|
|
|
'end_utc' => $this->end_utc->format('Y-m-d H:i:s'),
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
}
|