public AccountDepositeResponse Deposite(Account account, decimal amount)
        {
            AccountDepositeResponse response = new AccountDepositeResponse();

            if (account.Type != AccountType.Free)
            {
                response.Success = false;
                response.Message = "Error: a non free account his the free deposite rule.";
                return(response);
            }

            if (amount > 100)
            {
                response.Success = false;
                response.Message = "Free accounts cannot deposite more than $100 at a time.";
                return(response);
            }

            if (amount <= 0)
            {
                response.Success = false;
                response.Message = "Deposite amounts must be greater than $0";
                return(response);
            }

            response.OldBalance = account.Balance;
            account.Balance    += amount;
            response.Account    = account;
            response.Amount     = amount;
            response.Success    = true;

            return(response);
        }
示例#2
0
        public AccountDepositeResponse Deposite(Account account, decimal amount)
        {
            AccountDepositeResponse response = new AccountDepositeResponse();

            if (account.Type != AccountType.Basic && account.Type != AccountType.Premium)
            {
                response.Success = false;
                response.Message = "Error: Only basic and premium accounts can deposit with no limit. Contact IT.";
                return(response);
            }

            if (amount <= 0)
            {
                response.Success = false;
                response.Message = "Deposit amounts must be positive!";
                return(response);
            }

            response.OldBalance = account.Balance;
            account.Balance    += amount;
            response.Account    = account;
            response.Amount     = amount;
            response.Success    = true;

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

            //lookup an account
            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;
            }

            IDeposite despositeRule = DepositeRulesFactory.Create(response.Account.Type);

            response = despositeRule.Deposite(response.Account, amount);

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

            return(response);
        }
示例#4
0
        public void Execute()
        {
            Console.Clear();

            AccountManager accountManager = AccountManagerFactory.Create();

            Console.Write("Please enter an account number: ");
            string accountNumber = Console.ReadLine();

            Console.Write("Enter a deposite amount: ");


            decimal amount = decimal.Parse(Console.ReadLine());

            AccountDepositeResponse response = accountManager.Deposite(accountNumber, amount);

            if (response.Success)
            {
                Console.WriteLine("Deposite completed!");
                Console.WriteLine($"Account number: {response.Account.AccountNumber}");
                Console.WriteLine($"Old balance: {response.OldBalance:c}");
                Console.WriteLine($"Amount deposited: {response.Amount:c}");
                Console.WriteLine($"New balance: {response.Account.Balance:c}");
            }
            else
            {
                Console.WriteLine("An error occured: ");
                Console.WriteLine(response.Message);
            }

            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }
示例#5
0
        public void PremiumAccountDepositRuleTest(string accountNumber, string name, decimal balance, AccountType accountType, decimal amount, bool expectedResult)
        {
            IDeposite deposite = new NoLimitDepositRule();

            Account account = new Account();

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

            AccountDepositeResponse response = deposite.Deposite(account, amount);

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