Пример #1
0
        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);
        }
Пример #2
0
        public void Cancel()
        {
            ShoppingCartBusinessRules.CanCancel().Check(this);

            RaiseEvent(new ShoppingCartCancelled(Id, DateTime.UtcNow));
        }
Пример #3
0
        public void Order(IEventRepository repository)
        {
            ShoppingCartBusinessRules.CanOrder(repository).Check(this);

            RaiseEvent(new ShoppingCartOrdered(Id, DateTime.UtcNow));
        }
Пример #4
0
        public void SetShippingAddress(ShippingAddress shippingAddress)
        {
            ShoppingCartBusinessRules.CanSetShippingAddress().Check(this);

            RaiseEvent(new ShoppingCartShippingAddressSet(Id, shippingAddress, DateTime.UtcNow));
        }