/**
 * HourlyWorker - A class to represent workers paid on a salaried basis)
 * @author - Nancy Harris and Pan He
 * @version - V1 - 10/01/2008
 */
 
 public class HourlyWorker
 {
 	// declare the instance variables of the class
	private String homeDepartment;  //to show department of the payroll amount
	private String name; 		// the name of the worker
	private String SSN;  		// the SSN 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
	 * @param homeDepartment The department to pay the salaries or wages
	 */
	public HourlyWorker(String name, String SSN,String homeDepartment, int exempt,  double rate)
	{
		this.name = name;
		this.SSN = SSN;
		this.exemptions = exempt;
		this.wage = rate;
		this.homeDepartment = homeDepartment;
	}  // end constructor
	
	/** pay produces the pay amount for this employee
	 *  pay the rate * hours.  (we are disregarding overtime at this time)
	 * @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
		// Your code goes here
		double pay;
		pay = 0.0;
		// the payment amount for hourly worker
		if(this.hours <= 80) // pay the worker up to 80 hours at their normal wage rate
			pay = this.wage * this.hours; 
		// Any hours over and above 80 hours should be paid at time and 1/2.(1.5 * their normal rate)
		else pay = this.wage * 80 + (this.wage * 1.5) * (this.hours - 80);
		return pay; // return the pay value
	}  // end method
	
	/** 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 str;  // The variable for return
		 str = null;
		 str = "This employee is " + this.name + "\t" + this.SSN + "\t" + this.homeDepartment + 
		 	   "\t" + this.exemptions + "\t" + this.hours + "\t" + this.wage +"\n";  
		 return str;  // return the String
	 }  // end method
}  // end class