/** * @param TodoId $todoId * @param UserId $userId * @param TodoReminder $reminder * @return ReminderWasAddedToTodo */ public static function byUserToDate(TodoId $todoId, UserId $userId, TodoReminder $reminder) { $event = self::occur($todoId->toString(), ['todo_id' => $todoId->toString(), 'user_id' => $userId->toString(), 'reminder' => $reminder->toString()]); $event->todoId = $todoId; $event->userId = $userId; $event->reminder = $reminder; return $event; }
/** * @param TodoId $todoId * @param UserId $userId * @param TodoDeadline $deadline * @return DeadlineWasAddedToTodo */ public static function byUserToDate(TodoId $todoId, UserId $userId, TodoDeadline $deadline) { $event = self::occur($todoId->toString(), ['todo_id' => $todoId->toString(), 'user_id' => $userId->toString(), 'deadline' => $deadline->toString()]); $event->todoId = $todoId; $event->userId = $userId; $event->deadline = $deadline; return $event; }
/** * @param TodoId $todoId * @param TodoStatus $status * @return TodoWasMarkedAsDone */ public static function withStatus(TodoId $todoId, TodoStatus $status) { $event = self::occur($todoId->toString(), ['status' => $status->toString()]); $event->todoId = $todoId; $event->status = $status; return $event; }
/** * @param TodoId $todoId * @param UserId $userId * @param TodoReminder $reminder * @return TodoAssigneeWasReminded */ public static function forAssignee(TodoId $todoId, UserId $userId, TodoReminder $reminder) { $event = self::occur($todoId->toString(), ['user_id' => $userId->toString(), 'reminder' => $reminder->toString(), 'reminder_status' => $reminder->status()->toString()]); $event->userId = $userId; $event->reminder = $reminder; return $event; }
/** * @param UserId $assigneeId * @param string $text * @param TodoId $todoId * @param TodoStatus $todoStatus * @return TodoWasPosted */ public static function byUser(UserId $assigneeId, $text, TodoId $todoId, TodoStatus $todoStatus) { $event = self::occur($todoId->toString(), ['assignee_id' => $assigneeId->toString(), 'text' => $text, 'status' => $todoStatus->toString()]); $event->todoId = $todoId; $event->assigneeId = $assigneeId; $event->todoStatus = $todoStatus; return $event; }
/** * @param TodoId $todoId * @param TodoStatus $oldStatus * @param TodoStatus $newStatus * @return TodoWasMarkedAsDone */ public static function fromStatus(TodoId $todoId, TodoStatus $oldStatus, TodoStatus $newStatus) { $event = self::occur($todoId->toString(), ['old_status' => $oldStatus->toString(), 'new_status' => $newStatus->toString()]); $event->todoId = $todoId; $event->oldStatus = $oldStatus; $event->newStatus = $newStatus; return $event; }
/** * * @param TodoId $todoId * @param TodoReminder $todoReminder * @return RemindTodoAssignee */ public static function forTodo(TodoId $todoId, TodoReminder $todoReminder) { return new self(['todo_id' => $todoId->toString(), 'reminder' => $todoReminder->toString(), 'reminder_status' => $todoReminder->status()->toString()]); }
/** * @return string representation of the unique identifier of the aggregate root */ protected function aggregateId() { return $this->todoId->toString(); }
/** * @param TodoId $todoId * @return TodoNotFound */ public static function withTodoId(TodoId $todoId) { return new self(sprintf('Todo with id %s cannot be found.', $todoId->toString())); }
/** * @param TodoId $todoId * @return Todo */ public function get(TodoId $todoId) { return $this->getAggregateRoot($todoId->toString()); }
/** * @param TodoId $other * @return bool */ public function sameValueAs(TodoId $other) { return $this->toString() === $other->toString(); }