internal void Apply(ProductQuantityChangedEvent ev) { var existingItem = Items.Single(x => x.ProductId == ev.ProductId); Items.Remove(existingItem); Items.Add(existingItem.WithQuantity(ev.NewQuantity)); }
public async Task HandleAsync(ProductQuantityChangedEvent @event) { var cartItemId = CartItemReadModel.IdFor(@event.AggregateId.IdAsString(), @event.ProductId.IdAsString()); var cartItem = (await cartItemRepository .FindAllAsync(x => x.Id == cartItemId)) .Single(); var cart = await cartRepository.GetByIdAsync(@event.AggregateId.IdAsString()); cart.TotalItems += @event.NewQuantity - @event.OldQuantity; cartItem.Quantity = @event.NewQuantity; await cartRepository.UpdateAsync(cart); await cartItemRepository.UpdateAsync(cartItem); }