/** * @param string $text * @param UserId $assigneeId * @param TodoId $todoId * @return Todo */ public static function post($text, UserId $assigneeId, TodoId $todoId) { $self = new self(); $self->assertText($text); $self->recordThat(TodoWasPosted::byUser($assigneeId, $text, $todoId, TodoStatus::open())); return $self; }
/** * @return TodoStatus */ public function todoStatus() { if (is_null($this->todoStatus)) { $this->todoStatus = TodoStatus::fromString($this->payload['status']); } return $this->todoStatus; }
/** * @param TodoStatus $status * @param Todo $todo * @return TodoAlreadyDone */ public static function triedStatus(TodoStatus $status, Todo $todo) { return new self(sprintf('Tried to change status of Todo %s to %s. But Todo is already marked as done!', $todo->todoId()->toString(), $status->toString())); }