class NoMuchMoney : Exception
public NoMuchMoney(string message) : base(message)
class UserUnAuthenticated : Exception
public UserUnAuthenticated(string message) : base(message)
class PremiumCustomer : Exception
public PremiumCustomer(string message) : base(message)
class CustomerException: ArgumentException
public CustomerException(string message) : base(message)
public int CustomerId { get; private set; }
public string Name { get; private set; }
public string Email { get; private set; }
public string Password { get; private set; }
public int AccountBalance { get; private set; }
public bool IsConnected { get; private set; }
public Customer(string name, string pass, string email)
if (string.IsNullOrWhiteSpace(name) || string.IsNullOrWhiteSpace(pass))
throw new CustomerException("Name or Password can not be empty.");
public int CashPull(int cash_to_pull)
if(cash_to_pull > AccountBalance)
throw new NoMuchMoney("Sorry you don't have anoth money on our accoun");
AccountBalance -= cash_to_pull;
throw new UserUnAuthenticated("Please log in first");
public void LogIn(string name, string password)
if(name == Name && password == Password)
Console.WriteLine(Name, " Welconm to our Bank!");
throw new UserUnAuthenticated("Password or user name isn't correct");
public void DepositingMoney(int mount)
if(AccountBalance >= 1000)
throw new PremiumCustomer("Welcome you became a premium customer");
throw new UserUnAuthenticated("Please log in first");
public static void Main(string[] args)
Console.Write("New user pleass enter our name:");
var name = Console.ReadLine();
Console.Write("New user pleass enter our password:");
var pass = Console.ReadLine();
Console.Write("New user pleass enter our email:");
var email = Console.ReadLine();
Customer customer = new Customer();
customer = new Customer(name, pass, email);
catch (CustomerException ex)
Console.WriteLine("Fail: " + ex.Message );
Console.WriteLine("Sing in successfully");
Console.Write("To log in pleass enter our name:");
var loginName = Console.ReadLine();
Console.Write("To log in pleass enter our password:");
var loginPass = Console.ReadLine();
customer.LogIn(loginName, loginPass);
Console.Write("Please enter how much money you want to deposit:");
int moneyToDeposit = Int32.Parse(Console.ReadLine());
customer.DepositingMoney(moneyToDeposit);
catch (PremiumCustomer ex)
Console.WriteLine("PremiumCustomer:" + ex.Message);
Console.Write("Please enter how much money you want to pull:");
int moneyToPull = Int32.Parse(Console.ReadLine());
int myAccount = customer.CashPull(moneyToPull);
Console.WriteLine("The amount of money in our account is: ", myAccount);
Console.WriteLine("NoMuchMoney: " + ex.Message);
catch (UserUnAuthenticated ex)
Console.WriteLine("Login: " + ex.Message);
var read = Console.ReadLine();