package lab07;

import java.util.ArrayList;

public class SavingsAccount implements Account {
	static int nextAcct = 1000;
	int acctNumber;
	double balance;
	ArrayList<Transaction> log;
	int month;
	int year;
	static String[] monthName={ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };

	public SavingsAccount(double initBalance) {
		acctNumber=nextAcct;
		nextAcct++;
		log = new ArrayList<Transaction>();
		log.add(new Transaction(0.0,'D',initBalance));
		balance=initBalance;
		month=8;
		year=2017;
	}

	public void deposit(double amt) {
		log.add(new Transaction(balance,'D',amt));
		balance+=amt;
	}

	public double withdraw(double amt) {
		if (amt > balance) {
			System.out.println("Savings Account: " + acctNumber + " requested a withdrawal of " + amt + " but only " + balance + " is available.");
			log.add(new Transaction(balance,'W',balance));
			double wdAmt=balance;
			balance=0;
			return wdAmt;
		}
		log.add(new Transaction(balance,'W',amt));
		balance-=amt;
		return amt;
	}

	public void printStatement() {
		double interest=balance*(0.05/12);
		log.add(new Transaction(balance,'I',interest));
		balance+=interest;
		System.out.println(" Transactions for Savings Account: " + acctNumber + " for " + monthName[month] + " " + year);
		Transaction.printHeader();
		for(Transaction t: log) {
			t.printLine();
		}
		Transaction.printTrailer();
		log.clear();
		month++;
		if (month>11) { month=0; year++; }
	}

	public void report() {
		System.out.println("Savings Account: " + acctNumber + " Current balance: " +
			String.format("$%.02f", balance));
	}

}