package de.avatic.lcc.model.calculation;

import de.avatic.lcc.model.db.packaging.LoadCarrierType;

import java.math.BigDecimal;

/**
 * Represents the results of handling cost calculations for packaging units.
 * This class contains annual costs related to handling, repacking, and disposal operations.
 */
public class HandlingResult {

    /**
     * Indicates whether the handling unit is classified as a small unit
     */
    private LoadCarrierType loadCarrierType;
    /**
     * Annual costs associated with repacking operations
     */
    private BigDecimal annualRepackingCost;
    /**
     * Annual costs associated with handling operations
     */
    private BigDecimal annualHandlingCost;
    /**
     * Annual costs associated with disposal operations
     */
    private BigDecimal annualDisposalCost;
    /**
     * Total annual costs combining all handling-related expenses
     */
    private BigDecimal annualCost;

    public HandlingResult(LoadCarrierType loadCarrierType, BigDecimal annualRepackingCost, BigDecimal annualHandlingCost, BigDecimal annualDisposalCost, BigDecimal annualCost) {
        this.loadCarrierType = loadCarrierType;
        this.annualRepackingCost = annualRepackingCost;
        this.annualHandlingCost = annualHandlingCost;
        this.annualDisposalCost = annualDisposalCost;
        this.annualCost = annualCost;
    }

    /**
     * Gets the indicator whether the unit is classified as small
     *
     * @return true if the unit is small, false otherwise
     */
    public LoadCarrierType getLoadCarrierType() {
        return loadCarrierType;
    }

    /**
     * Sets the small unit indicator
     *
     * @param loadCarrierType the small unit indicator to set
     */
    public void setLoadCarrierType(LoadCarrierType loadCarrierType) {
       this.loadCarrierType = loadCarrierType;
    }

    /**
     * Gets the annual repacking cost
     *
     * @return the annual repacking cost
     */
    public BigDecimal getAnnualRepackingCost() {
        return annualRepackingCost;
    }

    /**
     * Sets the annual repacking cost
     *
     * @param annualRepackingCost the annual repacking cost to set
     */
    public void setAnnualRepackingCost(BigDecimal annualRepackingCost) {
        this.annualRepackingCost = annualRepackingCost;
    }

    /**
     * Gets the annual handling cost
     *
     * @return the annual handling cost
     */
    public BigDecimal getAnnualHandlingCost() {
        return annualHandlingCost;
    }

    /**
     * Sets the annual handling cost
     *
     * @param annualHandlingCost the annual handling cost to set
     */
    public void setAnnualHandlingCost(BigDecimal annualHandlingCost) {
        this.annualHandlingCost = annualHandlingCost;
    }

    /**
     * Gets the annual disposal cost
     *
     * @return the annual disposal cost
     */
    public BigDecimal getAnnualDisposalCost() {
        return annualDisposalCost;
    }

    /**
     * Sets the annual disposal cost
     *
     * @param annualDisposalCost the annual disposal cost to set
     */
    public void setAnnualDisposalCost(BigDecimal annualDisposalCost) {
        this.annualDisposalCost = annualDisposalCost;
    }

    /**
     * Gets the total annual cost
     *
     * @return the total annual cost
     */
    public BigDecimal getAnnualCost() {
        return annualCost;
    }

    /**
     * Sets the total annual cost
     *
     * @param annualCost the total annual cost to set
     */
    public void setAnnualCost(BigDecimal annualCost) {
        this.annualCost = annualCost;
    }
}
