/** * @throws Exception\TodoNotOpen */ public function markAsDone() { $status = TodoStatus::fromString('done'); if (!$this->status->isOpen()) { throw Exception\TodoNotOpen::triedStatus($status, $this); } $this->recordThat(TodoWasMarkedAsDone::fromStatus($this->todoId, $this->status, $status)); }
private function isExpired() { if (!$this->status->isOpen() || $this->status->isExpired()) { return false; } if ($this->deadline->isMet()) { return false; } return true; }