public Task Handle(CreditCardTransactionAdded evt, CancellationToken cancellationToken) { return(Update(evt.AggregateId, model => { if (evt.Transaction.Type == TransactionType.Fee && evt.Transaction.ReferenceId != null) { model.Transactions.SingleOrDefault(x => x.Id == evt.Transaction.ReferenceId)? .FeeTransactions.Add(new TransactionModel { Amount = evt.Transaction.Value, Created = evt.Transaction.Created, CurrencyCode = evt.Transaction.Value.CurrencyCode.ToString("G"), Id = evt.Transaction.Id, Type = TransactionType.Fee.ToString("G") }); } else { model.Transactions.Add(new TransactionModel { Amount = evt.Transaction.Value, Created = evt.Transaction.Created, CurrencyCode = evt.Transaction.Value.CurrencyCode.ToString("G"), Id = evt.Transaction.Id, Type = TransactionType.Payment.ToString("G") }); } var transactions = model.Transactions.ToList(); transactions.Sort(((t, next) => next.Created.CompareTo(t.Created))); model.Transactions = transactions; })); }
public void Apply(CreditCardTransactionAdded evt) { _transactions.Add(evt.Transaction); }