public void SendToSales() { if (Status != EAlbumStatus.InLab) { StatusChangeException(EAlbumStatus.InSales); } Status = EAlbumStatus.InLab; AddDomainEvent(new AlbumSentToSalesDomainEvent(Id)); }
public void SendToLab() { if (Status != EAlbumStatus.Pending) { StatusChangeException(EAlbumStatus.InLab); } Status = EAlbumStatus.InLab; AddDomainEvent(new AlbumSentToLabDomainEvent(Id)); }
public void Close() { if (Status != EAlbumStatus.InSales) { StatusChangeException(EAlbumStatus.Closed); } Status = EAlbumStatus.Closed; AddDomainEvent(new AlbumClosedDomainEvent(Id)); }
public void Cancel() { if (Status != EAlbumStatus.Pending) { StatusChangeException(EAlbumStatus.Canceled); } Status = EAlbumStatus.Canceled; AddDomainEvent(new AlbumCanceledDomainEvent(Id)); }
private Album(int albumTypeId, string name, string description, Author author, List <string> tags) { Id = Guid.NewGuid().ToString(); Name = name; Description = description; Author = author; _albumTypeId = albumTypeId; _tags = tags; _songs = new List <Song>(); Audit = Audit.Create(DateTimeOffset.Now, author.UserName); Status = EAlbumStatus.Pending; AddAlbumCreatedDomainEvent(_albumTypeId, Id, Name, Description, Author, _tags); }
private void StatusChangeException(EAlbumStatus albumStatusToChange) { throw new AlbumDomainException($"Is not possible to change the order status from {Status.Name} to {albumStatusToChange.Name}."); }