<?php declare(strict_types=1); namespace Xentral\Modules\TimeManagement\Data; use JsonSerializable; final class DayInfoData implements JsonSerializable { /** @var string $type */ private $type = ''; /** @var int $workMinutes */ private $workMinutes = 0; /** @var int $vacationMinutes */ private $vacationMinutes = 0; /** @var string $internalComment */ private $internalComment = ''; private function __construct() { } /** * @param $data * * @return DayInfoData */ public static function fromDbState($data): DayInfoData { $dayInfoData = new DayInfoData(); if (isset($data['type'])) { $dayInfoData->type = (string)$data['type']; } if (isset($data['workminutes'])) { $dayInfoData->workMinutes = (int)$data['workminutes']; } if (isset($data['vacationminutes'])) { $dayInfoData->vacationMinutes = (int)$data['vacationminutes']; } if (isset($data['internal_comment'])) { $dayInfoData->internalComment = (string)$data['internal_comment']; } return $dayInfoData; } /** * @return string */ public function getType(): string { return $this->type; } /** * @return int */ public function getWorkMinutes(): int { return $this->workMinutes; } /** * @return int */ public function getVacationMinutes(): int { return $this->vacationMinutes; } /** * @return string */ public function getInternalComment(): string { return $this->internalComment; } /** * @return array */ public function jsonSerialize(): array { return [ 'type' => $this->type, 'workminutes' => $this->workMinutes, 'vacationminutes' => $this->vacationMinutes, 'internal_comment' => $this->internalComment, ]; } }