Пример #1
0
 /**
  * @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));
 }