user = $user; $this->date = $date; } public function getId(): ?int { return $this->id; } public function getUser(): ?User { return $this->user; } public function getDate(): \DateTimeImmutable { return $this->date; } public function getExpectedTime(): int { return $this->expectedTime; } public function setExpectedTime(int $expectedTime): void { $this->expectedTime = $expectedTime; $this->storeOriginalExpectedTime(); } public function storeOriginalExpectedTime(): void { if ($this->originalExpectedTime === null) { $this->originalExpectedTime = $this->expectedTime; } } public function getOriginalExpectedTime(): int { $this->storeOriginalExpectedTime(); return $this->originalExpectedTime ?? 0; } public function halveExpectedTime(): int { $this->storeOriginalExpectedTime(); $reduceBy = ($this->getOriginalExpectedTime() / 2); $this->expectedTime = $this->expectedTime - $reduceBy; return $reduceBy; } public function emptyExpectedTime(): void { $this->storeOriginalExpectedTime(); $this->expectedTime = 0; } public function getActualTime(): int { return $this->actualTime; } public function setActualTime(int $actualTime): void { $this->actualTime = $actualTime; } public function getApprovedBy(): ?User { return $this->approvedBy; } public function setApprovedBy(?User $approvedBy): void { $this->approvedBy = $approvedBy; } public function getApprovedAt(): ?\DateTimeImmutable { return $this->approvedAt; } public function setApprovedAt(?\DateTimeImmutable $approvedAt): void { $this->approvedAt = $approvedAt; } public function isApproved(): bool { return $this->approvedAt !== null; } }