public void Close() { if (GetCurrentBalance() > Amount.Create(0)) { throw new AccountCannotBeClosedException($"The account {Id} can not be closed because it has funds."); } Raise(ClosedDomainEvent.Create(this)); }
public async Task Delete(ClosedDomainEvent domainEvent) { string deleteSQL = @"DELETE FROM [Transaction] WHERE AccountId = @Id; DELETE FROM Account WHERE Id = @Id;"; var id = new SqlParameter("@Id", domainEvent.AggregateRootId); int affectedRows = await context.Database.ExecuteSqlCommandAsync( deleteSQL, id); }
public void Close() { if (Transactions.GetCurrentBalance() > 0) { throw new AccountCannotBeClosedException($"The account {Id} can not be closed because it has funds."); } var domainEvent = new ClosedDomainEvent( Id, Version ); Raise(domainEvent); }
public async Task Delete(ClosedDomainEvent domainEvent) { using (IDbConnection db = new SqlConnection(connectionString)) { string deleteSQL = @"DELETE FROM [Transaction] WHERE AccountId = @Id; DELETE FROM Account WHERE Id = @Id;"; DynamicParameters deleteParameters = new DynamicParameters(); deleteParameters.Add("@id", domainEvent.AggregateRootId); int rowsAffected = await db.ExecuteAsync(deleteSQL, deleteParameters); } }
public async Task Delete(ClosedDomainEvent 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); } await mongoContext.Accounts.DeleteOneAsync(e => e.Id == account.Id); }
protected void When(ClosedDomainEvent domainEvent) { }