示例#1
0
        public void OpenAccount(IAccountNumberGenerator gen, AccountHolder person, AccountType priveledge, AccountStatus status, int sum, int bonus, out string id)
        {
            BankAccount bankAccount;

            id = gen.GenerateAccountNumber(person + " " + priveledge);

            switch ((int)priveledge)
            {
            case 1:
            {
                bankAccount = new BaseAccount(int.Parse(id), person, status, priveledge, sum, bonus); break;
            }

            case 2:
            {
                bankAccount = new GoldAccount(int.Parse(id), person, status, priveledge, sum, bonus); break;
            }

            case 3:
            {
                bankAccount = new PlatinumAccount(int.Parse(id), person, status, priveledge, sum, bonus); break;
            }

            default:
            {
                bankAccount = new BaseAccount(int.Parse(id), person, status, priveledge, sum, bonus); break;
            }
            }

            bankAccount.Status = AccountStatus.Active;
            fakeRepository.Create(bankAccount);
        }
示例#2
0
        public void Handle(CreateAccount command)
        {
            var newAccountNumber = _accountNumberGenerator.GenerateAccountNumber();
            var account          = new Account(command.BusinessName, newAccountNumber, command.NewAccountId);

            _accountStore.Save(account);
        }
        protected BankAccount(AccountHolder holder, IAccountNumberGenerator idGenerator, IMoneyAccuracyCalculator rounder = null)
        {
            ValidateOnNull(holder, nameof(holder));

            this.Id      = idGenerator.GenerateAccountNumber();
            this.rounder = rounder ?? new OneHundredthAccuracy();
            this.Holder  = holder;
        }
示例#4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BankAccount"/> class.
 /// </summary>
 /// <param name="generator">Generator of ID.</param>
 /// <param name="holder">Account holder.</param>
 /// <param name="balance">Account's balance.</param>
 /// <param name="bonusPoints">Account's bonus points.</param>
 /// <param name="status">Status of account.</param>
 protected BankAccount(
     IAccountNumberGenerator generator,
     AccountHolder holder,
     AccountStatus status = AccountStatus.Base,
     decimal balance      = 0m,
     int bonusPoints      = 0)
 {
     this.Holder      = holder;
     this.Balance     = balance;
     this.BonusPoints = bonusPoints;
     this.Status      = status;
     this.Id          = generator.GenerateAccountNumber(this); // ?? throw new ArgumentNullException(nameof(generator));
 }
示例#5
0
        public Account CreateAccount(string firstName, string secondName, string email, decimal balance, IAccountNumberGenerator generator, ICreateAccount creator)
        {
            //здесь подумать как передать какой именно аккаунт
            if (firstName == null)
            {
                throw new ArgumentNullException(nameof(firstName));
            }

            if (secondName == null)
            {
                throw new ArgumentNullException(nameof(secondName));
            }

            if (email == null)
            {
                throw new ArgumentNullException(nameof(email));
            }

            string  id  = generator.GenerateAccountNumber();
            Account acc = creator.Create(id, firstName, secondName, email, balance);

            repos.Save(acc);
            return(acc);
        }