VPHandler.java

package com.university.bookstore.chain;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * VP-level discount approval handler.
 * Can approve discounts up to 40%.
 * 
 * @author Navid Mohaghegh
 * @version 3.0
 * @since 2024-09-15
 */
public class VPHandler extends DiscountHandler {
    
    private static final Logger LOGGER = LoggerFactory.getLogger(VPHandler.class);
    private static final double MAX_DISCOUNT = 0.40; // 40%
    
    @Override
    public void handleRequest(DiscountRequest request) {
        if (request.getRequestedDiscount() <= MAX_DISCOUNT) {
            // VP can approve this discount
            request.setApproved(true);
            request.setApprovedBy("VP");
            LOGGER.info("VP approved {}% discount for {}", 
                       request.getRequestedDiscountPercentage(), request.getMaterial().getTitle());
        } else {
            // VP cannot approve, reject the request
            request.setRejectionReason("Discount too high - exceeds VP approval limit");
            LOGGER.info("VP rejected discount > {}%", (MAX_DISCOUNT * 100));
        }
    }
    
    @Override
    public String getHandlerName() {
        return "VPHandler";
    }
    
    @Override
    public double getMaxDiscount() {
        return MAX_DISCOUNT;
    }
}