public Validation <Error, Document> Update(DocumentNumber number, Option <DocumentDescription> description) { if (Status != DocumentStatus.Draft) { return(new InvalidStatusError(DocumentStatus.Draft, Status)); } return(WithNumber(number).WithDescription(description)); }
protected Document(DocumentId id, UserId userId, DocumentNumber number, Option <DocumentDescription> description, DocumentStatus status, IEnumerable <File> files) { Id = id; UserId = userId; Number = number; Description = description; Status = status; Files = files; }
public ApprovedDocument(DocumentId id, UserId userId, DocumentNumber number, Option <DocumentDescription> description, IEnumerable <File> files, Comment comment) : base(id, userId, number, description, DocumentStatus.Approved, files) { Comment = comment; }
public RejectedDocument(DocumentId id, UserId userId, DocumentNumber number, Option <DocumentDescription> description, IEnumerable <File> files, RejectReason reason) : base(id, userId, number, description, DocumentStatus.Rejected, files) { Reason = reason; }
public Document(DocumentId id, UserId userId, DocumentNumber number, Option <DocumentDescription> description) : this(id, userId, number, description, DocumentStatus.Draft, new List <File>()) { }
private Document WithNumber(DocumentNumber number) => new Document(Id, UserId, number, Description, Status, Files);