/// <summary> /// Handle open account request. /// </summary> /// <param name="command">The open account command.</param> /// <param name="accountNumberGenerator">The account number generator service.</param> public void Handle(OpenAccount command, IGenerateAccountNumbers accountNumberGenerator) { if (Status == AccountStatus.New) { Raise(new AccountOpened(command.AccountType, accountNumberGenerator.GetAccountNumber(command.AccountType), Decimal.Zero, AccountStatus.Opened)); } else { Raise(new AccountAlreadyOpened(command.AccountType, Number, Balance, Status)); } }