package de.avatic.lcc.model.db.properties;

public enum SystemPropertyMappingId {


    PAYMENT_TERMS("Payment terms [days]", "30"),
    WORKDAYS("Annual working days", "210"),
    INTEREST_RATE("Interest rate inventory [%]", "12%"),
    FCA_FEE("FCA fee [%]", "0,20%"),
    TARIFF_RATE("Default customs duty [%]", "3,0%"),
    CUSTOM_FEE("Customs clearance fee per import & HS code", "35,00 €"),
    REPORTING("Standard-Report Format", "MEK_B"),

    FEU("40'", "Yes"),
    TEU("20'", "Yes"),
    FEU_HQ("40'HC", "Yes"),
    TEU_HQ("20'HC", "No"),

    CONTAINER_UTIL("Container utilization in mixed containers [%]", "70%"),
    TRUCK_UTIL("Truck utilization road transport EMEA [%]", "70%"),
    VALID_DAYS("Max validity of container freight rates [days]", "60"),
    RADIUS_REGION("Metropolition region size (diameter) [km]", "20"),
    FREQ_MIN("Min delivery frequency / year for container transports", "3"),
    FREQ_MAX("Max delivery frequency / year for container transports", "50"),
    TEU_LOAD("Max load of 20' container [kg]", "20000"),
    FEU_LOAD("Max load of 40' container [kg]", "21000"),
    TRUCK_LOAD("Maximum truck load [kg]", "25000"),

    START_REF("Reference route segment start node mapping id", "CNXMN"),
    END_REF("Reference route segment end node mapping id","DEHAM"),
    RISK_REF("The historically highest rate for the reference route segment for 40ft containers [EUR]", "1000,00 €"),
    CHANCE_REF("The historically lowest rate for the reference route segment for 40ft containers [EUR]", "20000,00 €"),

    AIR_PRECARRIAGE("Pre-carriage [EUR/kg]", "0,10"),
    AIR_HANDLING("Pre-carriage handling [EUR]", "80,00"),
    AIR_MAINCARRIAGE("Main carriage [EUR/kg]", "3,50"),
    AIR_HANDOVER_FEE("Hand over fee [EUR]", "35,00"),
    AIR_CUSTOM_FEE("Customs clearance fee [EUR]", "45,00"),
    AIR_ONCARRIAGE("On-carriage [EUR/kg]", "0,20 €"),
    AIR_TERMINAL_FEE("Terminal handling fee [EUR/kg]", "0,20"),


    KLT_HANDLING("GR handling KLT [EUR/HU]", "0,71 €"),
    GLT_HANDLING("GR handling GLT [EUR/HU]", "3,50 €"),
    BOOKING("GLT booking & document handling [EUR/GR]", "3,50 €"),
    BOOKING_KLT("KLT booking & document handling [EUR/GR]", "0,35 €"),
    GLT_RELEASE("GLT release from storage [EUR/GLT release]", "2,23 €"),
    KLT_RELEASE("KLT release from storage [EUR/KLT release]", "1,12 €"),
    GLT_DISPATCH("GLT dispatch [EUR/GLT dispatch]", "1,61 €"),
    KLT_DISPATCH("KLT dispatch [EUR/KLT dispatch]", "0,33 €"),
    KLT_REPACK_S("Repacking KLT, HU <15kg [EUR/HU]", "2,08 €"),
    KLT_REPACK_M("Repacking KLT, HU >=15kg [EUR/HU]", "3,02 €"),
    GLT_REPACK_S("Repacking GLT, HU <15kg [EUR/HU]", "3,02 €"),
    GLT_REPACK_M("Repacking GLT, HU 15 - 2000kg [EUR/HU]", "7,76 €"),
    GLT_REPACK_L("Repacking GLT, HU > 2000kg [EUR/HU]", "14,00 €"),
    DISPOSAL("GLT disposal [EUR/GLT]", "6,00 €"),


    SPACE_COST("Space costs / m3 per night [EUR/m3]", "0,26 €");


    private final String description;
    private final String defaultValue;


    SystemPropertyMappingId(String description, String defaultValue) {
        this.description = description;
        this.defaultValue = defaultValue;
    }


    public String getDescription() {
        return description;
    }


    public String getDefaultValue() {
        return defaultValue;
    }

    public Integer getDefaultAsInteger() {
        try {
            return Integer.parseInt(defaultValue);
        } catch (NumberFormatException e) {
            return null;
        }
    }
}
