public async Task Handle(ContractLineAdded @event, CancellationToken cancellationToken) { var e = await _contractReadModelRepository.GetByIdAsync(@event.ContractId, cancellationToken, nameof(ContractReadModel.ContractLines)); if (e != null) { if (e.ContractLines.All(cl => cl.ContractLineId != @event.ContractLineId)) { var contractLine = new ContractLineReadModel(@event.ContractLineId, @event.Product, @event.Price, @event.Quantity, @event.ContractId); e.ContractLines.Add(contractLine); e.Version = e.Version + 1; await _contractReadModelRepository.SaveChangesAsync(cancellationToken); } } }
private void Apply(ContractLineAdded e) { var contractLine = new ContractLine(new Product(e.Product, e.Price), e.Quantity, this.ContractId); this.ContractLines.Add(contractLine); }