/** * @return null * @throws Exception\TodoNotExpired * @throws Exception\TodoNotOpen */ public function markAsExpired() { $status = TodoStatus::fromString(TodoStatus::EXPIRED); if (!$this->status->isOpen() || $this->status->isExpired()) { throw Exception\TodoNotOpen::triedToExpire($this->status, $this); } if ($this->deadline->isMet()) { throw Exception\TodoNotExpired::withDeadline($this->deadline, $this); } $this->recordThat(TodoWasMarkedAsExpired::fromStatus($this->todoId, $this->status, $status)); }
public function getEvent($todoId) { return TodoWasMarkedAsExpired::fromStatus(TodoId::fromString($todoId), TodoStatus::fromString(TodoStatus::OPEN), TodoStatus::fromString(TodoStatus::EXPIRED)); }