示例#1
0
        public AccountDepositResponse Deposit(string accountNumber, decimal amount)
        {
            AccountDepositResponse response = new AccountDepositResponse();

            response.Account = _accountRepository.LoadAccount(accountNumber);

            if (response.Account == null)
            {
                response.Success = false;
                response.Message = $"{accountNumber} is not a valid account.";
                return(response);
            }
            else
            {
                response.Success = true;
            }

            IDeposit depositRule = DepositRulesFactory.Create(response.Account.Type);

            response = depositRule.Deposit(response.Account, amount);

            if (response.Success)
            {
                _accountRepository.SaveAccount(response.Account);
            }

            return(response);
        }
示例#2
0
        public AccountDepositResponse Deposit(string accountNumber, decimal amount)
        {
            AccountDepositResponse accountDepositResponse = new AccountDepositResponse
            {
                Account = _accountRepository.LoadAccount(accountNumber)
            };

            if (accountDepositResponse.Account == null)
            {
                Console.WriteLine(accountNumber + " is not an account number.");
                return(accountDepositResponse);
            }
            else
            {
                accountDepositResponse.Amount  = amount;
                accountDepositResponse.Success = true;
            }

            IDeposit depositRule = DepositRulesFactory.Create(accountDepositResponse.Account.Type);

            accountDepositResponse = depositRule.Deposit(accountDepositResponse.Account, amount);

            if (accountDepositResponse.Success)
            {
                _accountRepository.SaveAccount(accountDepositResponse.Account);
            }

            return(accountDepositResponse);
        }
示例#3
0
        public AccountDepositResponse Deposit(string accountNumber, decimal amount)
        {
            AccountDepositResponse response = new AccountDepositResponse();

            try
            {
                response.Account = _accountRepository.LoadAccount(accountNumber);
            }
            catch (Exception ex)
            {
                response.Success = false;
                response.Message = ex.Message;
                return(response);
            }

            if (response.Account == null)
            {
                response.Success = false;
                response.Message = $"{accountNumber} is not a valid account.";
                return(response);
            }
            else if (response.Account.Name == "Error")
            {
                response.Success = false;
                response.Message = "Error: something went wrong while accessing the file repository. Contact IT.";
                return(response);
            }
            else
            {
                response.Success = true;
            }

            IDeposit depositRule = DepositRulesFactory.CreateDepositRule(response.Account.Type);

            response = depositRule.Deposit(response.Account, amount);
            if (response.Success)
            {
                try
                {
                    _accountRepository.SaveAccount(response.Account);
                }
                catch (Exception ex)
                {
                    response.Success = false;
                    response.Message = ex.Message;
                    return(response);
                }
            }

            return(response);
        }
示例#4
0
        public void PremiumAccountDepositTests(string accountNumber, string name, decimal balance, AccountType accountType, decimal amount, bool expectedResult)
        {
            IDeposit deposit = DepositRulesFactory.Create(AccountType.Premium);
            Account  account = new Account();

            account.AccountNumber = accountNumber;
            account.Name          = name;
            account.Balance       = balance;
            account.Type          = accountType;

            AccountDepositResponse response = deposit.Deposit(account, amount);

            Assert.AreEqual(expectedResult, response.Success);
        }
        [TestCase("33333", "BasicAccount", 100, AccountType.Basic, 250, true)]     //Pass
        public void BasicAccount_DepositRuleTest(string accountNumber, string name, decimal balance, AccountType accountType, decimal amount, bool expectedResult)
        {
            IDeposit depositRule = DepositRulesFactory.Create(AccountType.Basic);

            Account account = new Account()
            {
                AccountNumber = accountNumber,
                Balance       = balance,
                Name          = name,
                Type          = accountType
            };

            AccountDepositResponse response = depositRule.Deposit(account, amount);

            Assert.AreEqual(expectedResult, response.Success);
        }