/*
 * Employee.java      Authors: Koffman and Wolz
 * Class that represents an employee
 */
public class Employee {

  // class constants
  private static final double MAX_NO_OVERTIME = 40; // hours in normal week
  private static final double OVERTIME_RATE = 1.5; // overtime rate
  private static final double MAX_NO_DUES = 100;  // max earnings before dues
  private static final double DUES = 25;         // dues amount

  // Data fields
  private String empID;
  private double hours;
  private double rate;

  // Methods
//  public Employee() {}

  public Employee(String id, double ho, double ra) {
    empID = id;
    hours = ho;
    rate = ra;
  }

  public void setEmpID(String id) {
    empID = id;
  }

  public void setHours(double ho) {
    hours = ho;
  }

  public void setRate(double ra) {
    rate = ra;
  }

  // postcondition - returns gross pay
  public double computeGross() {
    if (hours <= MAX_NO_OVERTIME) {
       return hours * rate;
    } 
    else {
       double regularPay = MAX_NO_OVERTIME * rate;
       double overtimePay = (hours - MAX_NO_OVERTIME) *
                            OVERTIME_RATE * rate;
       return regularPay + overtimePay;
    }
  }

  // precondition - gross pay was calculated.
  // postconstion - returns net pay.
  public double computeNet(double gross) {
    if (gross <= MAX_NO_DUES)
       return gross;
    else
       return gross - DUES; // deduct dues amount
  }

  // Shows employee information.
  public String toString() {
    return "Employee id: " + empID +
           ", hours: " + hours +
           ", rate: $" + rate;
  }

  // Insert accessor methods here.
  public String getEmpID() {
    return empID;
  }

  public double getHours() {
    return hours;
  }

  public double getRate() {
    return rate;
  }
}

