public async Task <ShoppingCartArticle> PlaceArticleAsync(ShoppingCartArticleId shoppingCartArticleId, ArticleId articleId, int quantity, IEventRepository repository) { ShoppingCartBusinessRules.CanPlaceArticle(shoppingCartArticleId, articleId, repository).Check(this); var article = await repository.GetAsync <Article>(articleId); var shoppingCartArticle = new ShoppingCartArticle( this, shoppingCartArticleId, article.Id, article.StateModel.Articlenumber, article.StateModel.Description, article.StateModel.Price, quantity, article.StateModel.Price * quantity, DateTime.UtcNow); // or: RaiseEvent(new ShoppingCartArticlePlaced(aggregateRoot.Id, shoppingCartArticleId, articleId, articlenumber, description, price, quantity, total, dateTime ?? DateTime.UtcNow)); // var shoppingCartArticle = GetChildEntity<ShoppingCartArticle>(shoppingCartArticleId); return(shoppingCartArticle); }
public void Cancel() { ShoppingCartBusinessRules.CanCancel().Check(this); RaiseEvent(new ShoppingCartCancelled(Id, DateTime.UtcNow)); }
public void Order(IEventRepository repository) { ShoppingCartBusinessRules.CanOrder(repository).Check(this); RaiseEvent(new ShoppingCartOrdered(Id, DateTime.UtcNow)); }
public void SetShippingAddress(ShippingAddress shippingAddress) { ShoppingCartBusinessRules.CanSetShippingAddress().Check(this); RaiseEvent(new ShoppingCartShippingAddressSet(Id, shippingAddress, DateTime.UtcNow)); }