public async Task HandleAsync(ProductAddedEvent @event) { var product = await _productRepository.Get(@event.ProductId.IdAsString()); var cart = await _cartRepository.Get(@event.AggregateId.IdAsString()); var cartItem = CartItemReadModel.CreateFor(@event.AggregateId.IdAsString(), @event.ProductId.IdAsString()); cartItem.ProductName = product.Name; cartItem.Quantity = @event.Quantity; cart.TotalItems += @event.Quantity; await _cartRepository.Update(cart); await _cartItemRepository.Insert(cartItem); }
public async Task HandleAsync(ProductQuantityChangedEvent @event) { var cartItemId = CartItemReadModel.IdFor(@event.AggregateId.IdAsString(), @event.ProductId.IdAsString()); var cartItem = (await _cartItemRepository .Find(x => x.Id == cartItemId)) .Single(); var cart = await _cartRepository.Get(@event.AggregateId.IdAsString()); cart.TotalItems += @event.NewQuantity - @event.OldQuantity; cartItem.Quantity = @event.NewQuantity; await _cartRepository.Update(cart); await _cartItemRepository.Update(cartItem); }