package aood.ex5;

import java.util.Iterator;
import java.util.List;
import java.util.Vector;

/** 
 * Represents customer.
 */
public class Customer {
	private String name;
	private List rentals = new Vector();
	
	/**
	 * Creates Customer object.
	 * @param name customer name
	 */
	public Customer(String name) {
		this.name = name;
	}
	
	/**
	 * Adds rental to customer's rentals.
	 */
	public void addRental(Rental rental) {
		rentals.add(rental);
	}

    /**
     * @return customer's statement string which contains amount owed by customer
     *         and number of frequent renter points
     */
    public String statement() {
    	double totalAmount;
    	int frequentRenterPoints;
    	Iterator iter = rentals.iterator();
    	String result = "Rental Record for " + getName() + "\n";
    	
    	totalAmount = 0;
    	frequentRenterPoints = 0;
    	while (iter.hasNext()) {
    		double thisAmount;
    		Rental each = (Rental) iter.next();
    		
    		thisAmount = 0;
    		switch (((Integer) each.getMovie().getPriceCode()).intValue()) {
    			case Movie.REGULAR:    				
    			    thisAmount = 2;				    
    			    if (each.getDaysRented() > 2)
    			        thisAmount = 2 + (each.getDaysRented() - 2) * 1.5;
    			    break;
    			default:    				
    			    thisAmount = each.getDaysRented() * 3;
    			    break;    			
    		}
    		
                frequentRenterPoints++;
    		if ((((Integer) each.getMovie().getPriceCode()).intValue() == Movie.NEW_RELEASE)
    		    && (each.getDaysRented() > 1))
    		    	frequentRenterPoints++;
    		    
    		result += "\t" + each.getMovie().getTitle() + "\t"
    		    + String.valueOf(thisAmount) + "\n";
    		    
    		totalAmount += thisAmount;
    	}
    	
    	result += "Amount owed is " + String.valueOf(totalAmount) + "\n";
    	result += "You earned " + String.valueOf(frequentRenterPoints)
    	    + " frequent renter points";
    	return result;
    }

	/**
	 * @return customer's name
	 */
	private String getName() {		
		return name;
	}
}
