package cse1030.Jan24;

public class BankAccount {

	// fields
	
	public static final double INTEREST_RATE = 0.02;

	private static int count = 0;
	
	private double balance;
	
	private int accountNumber;
	
	// constructors
		
	public BankAccount(double balance) {
		
		this.balance = balance;
		BankAccount.count++;
		this.accountNumber = BankAccount.count;
	
	}

	public BankAccount() {
		
		this(0);
		
	}
	
	public BankAccount(BankAccount b) {
		this(b.balance);
	}

	// BankAccount b = new BankAccount(3.50)
	
	// methods
	
	public void deposit(double amount) {
		if (amount >= 0) {
			this.balance += amount;
		}
	}

	public boolean withdraw(double amount) {
		if (this.balance >= amount) {
			this.balance -= amount;
			return true;
		}
		else {
			return false;
		}
	}

	public double getBalance() {
		return this.balance;
	}
	
	public String toString() {
		//[BankAccount:balance=10.56]
		String s = "[BankAccount:balance="+this.balance+"]";
		return s;
	}
	
	public boolean equals(Object o) {
		
		if (o instanceof BankAccount) {
			BankAccount e = (BankAccount)o;
			if (this.balance == e.balance) {
				return true;
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
		
		
	}
	
	public boolean withdraw(double amount, int times) {
		return withdraw(amount*times);
	}

	public static double calculateInterest(BankAccount b) {
		return b.balance * BankAccount.INTEREST_RATE;
	}
	
	public int getAccountNumber() {
		return this.accountNumber;
	}

	public static int getNumberOfAccounts() {
		return BankAccount.count;
	}

	

	
}
