예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        private void Apply(ContractLineAdded e)
        {
            var contractLine = new ContractLine(new Product(e.Product, e.Price), e.Quantity, this.ContractId);

            this.ContractLines.Add(contractLine);
        }