public void Deposit(Credit credit) { var domainEvent = new DepositedDomainEvent( Id, Version, credit.Id, credit.Amount, DateTime.Now ); Raise(domainEvent); }
protected void When(DepositedDomainEvent domainEvent) { if (transactions == null) { transactions = new List <Transaction>(); } Transaction transaction = Credit.Load(domainEvent.TransactionId, domainEvent.CustomerId, domainEvent.Amount); transactions.Add(transaction); currentBalance = currentBalance + domainEvent.Amount; }
public async Task Update(DepositedDomainEvent domainEvent) { Account account = await context.Accounts.FindAsync(domainEvent.AggregateRootId); if (account == null) { throw new AccountNotFoundException($"The account {domainEvent.AggregateRootId} does not exists or is already closed."); } if (account.Version != domainEvent.Version) { throw new TransactionConflictException(account, domainEvent); } account.Apply(domainEvent); int affectedRows = await context.SaveChangesAsync(); }
public async Task Update(DepositedDomainEvent domainEvent) { Account account = await mongoContext .Accounts .Find(e => e.Id == domainEvent.AggregateRootId) .SingleOrDefaultAsync(); if (account == null) { throw new AccountNotFoundException($"The account {domainEvent.AggregateRootId} does not exists or is already closed."); } if (account.Version != domainEvent.Version) { throw new TransactionConflictException(account, domainEvent); } account.Apply(domainEvent); await mongoContext.Accounts.ReplaceOneAsync(e => e.Id == account.Id, account); }
public async Task Update(DepositedDomainEvent domainEvent) { using (IDbConnection db = new SqlConnection(connectionString)) { string updateAccountSQL = "UPDATE Account SET Version = @Version WHERE Id = @Id"; DynamicParameters accountParameters = new DynamicParameters(); accountParameters.Add("@id", domainEvent.AggregateRootId); accountParameters.Add("@version", domainEvent.Version); int rowsAffected = await db.ExecuteAsync(updateAccountSQL, accountParameters); string insertCreditSQL = "INSERT INTO [Transaction] (Id, Amount, TransactionDate, AccountId, TransactionType) " + "VALUES (@Id, @Amount, @TransactionDate, @AccountId, @TransactionType)"; DynamicParameters transactionParameters = new DynamicParameters(); transactionParameters.Add("@id", domainEvent.TransactionId); transactionParameters.Add("@amount", domainEvent.TransactionAmount.Value); transactionParameters.Add("@transactionDate", domainEvent.TransactionDate); transactionParameters.Add("@accountId", domainEvent.AggregateRootId); transactionParameters.Add("@transactionType", 1); int creditRows = await db.ExecuteAsync(insertCreditSQL, transactionParameters); } }
protected void When(DepositedDomainEvent domainEvent) { Transaction credit = new Credit(domainEvent.AggregateRootId, domainEvent.TransactionAmount); Transactions.Add(credit); }
public void Deposit(Transaction transaction) { Raise(DepositedDomainEvent.Create(this, transaction.Id, transaction.GetCustomerId(), transaction.GetAmount())); }