initial
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
<?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'
|
||||
|
||||
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'),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user