/** HourlyWorker - A class to represent workers paid on a salaried basis)
 * 		Modified and updated per lab instructions
 * @author Nancy Harris and Jeff Wyman
 * @version V2 - 10/1/08 
 */
 
 public class HourlyWorker
 {
 	// declare the instance variables of the class
	
	private String name; 		// the name of the worker
	private String SSN;  		// the SSN of the worker
	private String homeDepartment; //The home department of the worker
	private int exemptions;	// the number of tax exemptions for this worker
	private double wage; 		// the hourly rate for this hourly worker
	
	private double hours;		// the hours that this worker last worked
	
	/** explicit value constructor
	 * 
	 * @param name 	The name of the worker
	 * @param SSN  	The SSN of the worker
	 * @param exempt	The number of payroll exemptions
	 & @param rate 	The hourly rate for this employee
	 */
	public HourlyWorker
	(String name, String SSN, String homeDepartment, int exempt, double rate)
	{
		this.name = name;
		this.SSN = SSN;
		this.homeDepartment = homeDepartment;
		this.exemptions = exempt;
		this.wage = rate;
	}
	
	/** pay produces the pay amount for this employee
	 *  pay the rate * hours. For hours over 80, an employee
	 *	 receives overtime (time and a half per hour)
	 *
	 * @param hours The number of hours for this hourly worker
	 *
	 * @return The amount to pay this employee
	 */
	public double pay(double hours)
	{
		this.hours = hours;  // stores the hours worked
		double tempPay;	//stores the total pay
		
		//checks if the worker had 80 hours or less
		if (this.hours <= 80)
			tempPay = this.wage * this.hours;
		//if more than 80, the worker receives overtime
		else
			tempPay = ((this.wage * 80) + 
			((this.wage*1.5) * (this.hours - 80)));
		
		return tempPay;
	}
	
	/** toString produces a single line for each employee
	 *
	 *  format is Name\tSSN\texemptions\thours\trate\n
	 *
	 * @return The line representing the employee
	 */
	 public String toString()
	 {
		String tempString = (this.name + "\t" + this.SSN + "\t" +
				this.exemptions + "\t" + this.hours + "\t" + this.wage +
				 "\t" + this.homeDepartment + "\n");
				
	 	return tempString;
	 }
}