import java.io.Serializable;
import java.util.ArrayList;


public class BankAccount implements Serializable {
  private static long accountCounter = 0;
  private long accountNumber;
  private double balance;
  private ArrayList<Transaction> transactions = new ArrayList<Transaction>();
  private Customer customer;
  
  public BankAccount(Customer customer){
    this.customer = customer;
    accountNumber = accountCounter;
    accountCounter++;
  }
  public BankAccount(double initialDeposit, Customer customer){
    this.customer = customer;
    accountNumber = accountCounter;
    accountCounter++;
    balance = initialDeposit;
  }
  public boolean withdraw(double amount, Employee employee){
    if(balance > amount){
      balance -= amount;
      Transaction newTransaction = new Transaction(this, employee, TransactionType.withdraw, amount);
      transactions.add(newTransaction);
      return true;
    } 
    return false;
  }
  public void deposit(double amount, Employee employee){
    Transaction newTransaction = new Transaction(this, employee, TransactionType.deposit, amount);
    transactions.add(newTransaction);
    balance += amount;
  }
  public String toString(){
    return "Bank account number: "+accountNumber+" balance: "+balance;
  }
  public long getAccountNumber(){
    return accountNumber;
  }
}