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); }
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); }
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); }
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(); }
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); }