/**
 * Represents a store manager.
 * Inherits from Cashier and applies a 1.5x pay multiplier plus a bonus.
 * 
 * @author Dr. Hyrum D. Carroll
 * @author Gemini 3.6 Flash
 * @version 1.0
 */
public class Manager extends Cashier {
    private String buildingKey;
    private double bonus;

    /**
     * Constructs a Manager with full employee, cashier, and management details.
     * 
     * @param name        The name of the manager.
     * @param employeeID  The unique ID string for the manager.
     * @param startDate   The start date.
     * @param basePayRate The hourly pay rate in dollars.
     * @param hoursWorked The total hours worked in the pay period.
     * @param buildingKey The key identifier assigned to the manager.
     * @param bonus       The performance bonus amount in dollars.
     */
    public Manager(String name, String employeeID, String startDate, double basePayRate, double hoursWorked,
                   String buildingKey, double bonus) {
        super(name, employeeID, startDate, basePayRate, hoursWorked);
        this.buildingKey = buildingKey;
        this.bonus = bonus;
    }

    /**
     * Gets the bonus amount.
     * 
     * @return Bonus in dollars.
     */
    public double getBonus() {
        return bonus;
    }

    /**
     * Sets the bonus amount.
     * 
     * @param bonus Bonus in dollars.
     */
    public void setBonus(double bonus) {
        this.bonus = bonus;
    }

    /**
     * Calculates pay for a manager including a 1.5x multiplier and additional bonus.
     * 
     * @return Total manager pay.
     */
    @Override
    public double getPay() {
        return (basePayRate * 1.5 * hoursWorked) + bonus;
    }
}