* 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; } }