示例#1
0
 public Deposit(int userAccountNumber, IScreen atmScreen,
                IBankDatabase atmBankDatabase, IKeypad atmKeypad, IDepositSlot atmDepositSlot)
     : base(userAccountNumber, atmBankDatabase, atmScreen)
 {
     _keypad      = atmKeypad;
     _depositSlot = atmDepositSlot;
 }
示例#2
0
 public Withdrawal(int userAccount, IScreen atmScreen,
                   IBankDatabase atmBankDatabase, IKeypad atmKeypad, ICashDispenser atmCashDispenser)
     : base(userAccount, atmBankDatabase, atmScreen)
 {
     _keypad        = atmKeypad;
     _cashDispenser = atmCashDispenser;
 }
示例#3
0
 /// <summary>
 /// no-argument ATM constructor initializes instance variables
 /// </summary>
 public ATM(ICashDispenser cashDispenser, IBankDatabase bankDatabase, IDepositSlot depositSlot, IKeypad keypad, IScreen screen, IMenu menu)
 {
     _userAuthenticated    = false;
     _currentAccountNumber = 0;
     _depositSlot          = depositSlot;
     _keypad        = keypad;
     _screen        = screen;
     _menu          = menu;
     _cashDispenser = cashDispenser;
     _bankDatabase  = bankDatabase;
 }
示例#4
0
        public override void Execute()
        {
            IBankDatabase bankDatabase = base.BankDatabase;
            IScreen       screen       = base.Screen;

            decimal availableBalance = bankDatabase.getAvailableBalance(AccountNumber);
            decimal totalBalance     = bankDatabase.getTotalBalance(AccountNumber);

            screen.DisplayMessageLine("\nBalance Information:");
            screen.DisplayMessage(" - Available balance: ");
            screen.DisplayDollarAmount(availableBalance);
            screen.DisplayMessage("\n - Total balance:     ");
            screen.DisplayDollarAmount(totalBalance);
            screen.DisplayMessageLine(string.Empty);

            Sleep(5000);
        }
示例#5
0
        public override void Execute()
        {
            bool    isCashDispensed = false;
            decimal availableBalance;

            IBankDatabase bankDatabase = base.BankDatabase;

            do
            {
                _amount = (decimal)DisplayMenuOfAmounts();

                if (_amount != CANCELED)
                {
                    availableBalance = bankDatabase.getAvailableBalance(AccountNumber);
                    if (_amount <= availableBalance)
                    {
                        if (_cashDispenser.IsSufficiantCashAvailable(_amount))
                        {
                            bankDatabase.Debit(AccountNumber, _amount);
                            _cashDispenser.DispenseCash(_amount);
                            isCashDispensed = true;

                            Screen.DisplayMessageLine("\nYour cash has been dispensed. Please take your cash now.");
                        }
                        else
                        {
                            Screen.DisplayMessageLine("\nInsufficient cash available in the ATM.\n\nPlease choose a smaller amount.");
                        }
                    }
                    else
                    {
                        Screen.DisplayMessage("\nInsufficient funds in your account.\n\nPlease choose a smaller amount.");
                    }
                    Sleep(3000);
                }
                else
                {
                    Screen.DisplayMessageLine("\nCancelling transaction...");
                    Sleep(3000);
                    return;
                }
            } while (!isCashDispensed);
        }
示例#6
0
        public ITransaction CreateTransaction(int type, int currentAccountNumber, IBankDatabase atmBankDatabase, IScreen atmScreen, IKeypad atmKeypad, ICashDispenser atmCashDispenser, IDepositSlot atmDepositSlot)
        {
            ITransaction temp = null;

            switch (type)
            {
            case 1:
                temp = new BalanceInquiry(currentAccountNumber, atmScreen, atmBankDatabase);
                break;

            case 2:
                temp = new Withdrawal(currentAccountNumber, atmScreen, atmBankDatabase, atmKeypad, atmCashDispenser);
                break;

            case 3:
                temp = new Deposit(currentAccountNumber, atmScreen, atmBankDatabase, atmKeypad, atmDepositSlot);
                break;
            }

            return(temp);
        }
示例#7
0
 public Transaction(int userAccountNumber, IBankDatabase atmBankDatabase, IScreen atmScreen)
 {
     this.AccountNumber = userAccountNumber;
     this.BankDatabase  = atmBankDatabase;
     this.Screen        = atmScreen;
 }
示例#8
0
 public BalanceInquiry(int userAccountNumber, IScreen atmScreen, IBankDatabase atmBankDatabase)
     : base(userAccountNumber, atmBankDatabase, atmScreen)
 {
 }
示例#9
0
 public void SetValues(int userAccountNumber, IBankDatabase atmBankDatabase, IScreen atmScreen)
 {
     AccountNumber = userAccountNumber;
     BankDatabase  = atmBankDatabase;
     Screen        = atmScreen;
 }