Files
server/shared/lib/Resource/Range/RangeDate.php
T
Sebastian fe78426a5d feat: add deserilazation
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
2026-07-03 21:33:28 -04:00

81 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: Sebastian Krupinski <krupinski01@gmail.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace KTXF\Resource\Range;
use DateTimeImmutable;
use DateTimeInterface;
class RangeDate extends Range implements IRangeDate {
protected DateTimeInterface $start;
protected DateTimeInterface $end;
public function jsonDeserialize(array|string $data): static {
if (is_string($data)) {
$data = json_decode($data, true, flags: JSON_THROW_ON_ERROR);
}
if (isset($data['start'])) {
$this->setStart(new DateTimeImmutable($data['start']));
}
if (isset($data['end'])) {
$this->setEnd(new DateTimeImmutable($data['end']));
}
return $this;
}
/**
* Returns the type of the range
*
* @since 1.0.0
*/
public function type(): RangeType {
return RangeType::DATE;
}
/**
* Gets the start date of the range
*
* @since 1.0.0
*/
public function getStart(): DateTimeInterface {
return $this->start;
}
/**
* Sets the start date of the range
*
* @since 1.0.0
*/
public function setStart(DateTimeInterface $value): void {
$this->start = $value;
}
/**
* Gets the end date of the range
*
* @since 1.0.0
*/
public function getEnd(): DateTimeInterface {
return $this->end;
}
/**
* Sets the end date of the range
*
* @since 1.0.0
*/
public function setEnd(DateTimeInterface $value): void {
$this->end = $value;
}
}