package de.accso.flexinale.util;

import de.accso.flexinale.shared_kernel.FlexinaleIllegalArgumentException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Config {
    @Value("${application.title}")
    public String applicationTitle;

    @Value("${build.version}")
    public String buildVersion;

    @Value("${build.date}")
    public String buildDate;

    // -----------------------------------------------------------------------------------------------------------

    // percentage
    public static int QUOTE_ONLINE;

    @Value("${de.accso.flexinale.kontingent.quote.online:33}")
    private int quoteOnline;

    @Value("${de.accso.flexinale.kontingent.quote.online:33}")
    public void setQuotierung(final int quoteOnline) {
        if (quoteOnline < 0  || quoteOnline > 100) {
            String message = "Quote online should be a percentage, i.e. 0 <= quote online <= 100, but was " + quoteOnline;
            throw new FlexinaleIllegalArgumentException(message);
        }
        Config.QUOTE_ONLINE = quoteOnline;
    }

    // -----------------------------------------------------------------------------------------------------------

    // time in minutes
    public static int MIN_ZEIT_ZWISCHEN_VORFUEHRUNGEN_IN_MINUTEN;

    @Value("${de.accso.flexinale.vorfuehrung.min-zeit-zwischen-vorfuehrungen-in-minuten:30}")
    private int minZeitZwischenVorfuehrungenInMinuten;

    @Value("${de.accso.flexinale.vorfuehrung.min-zeit-zwischen-vorfuehrungen-in-minuten:30}")
    public void setMinZeitZwischenVorfuehrungenInMinuten(final int minZeitZwischenVorfuehrungenInMinuten) {
        if (minZeitZwischenVorfuehrungenInMinuten < 0 ) {
            String message = "minZeitZwischenVorfuehrungenInMinuten should be positiv, but was " + minZeitZwischenVorfuehrungenInMinuten;
            throw new FlexinaleIllegalArgumentException(message);
        }
        Config.MIN_ZEIT_ZWISCHEN_VORFUEHRUNGEN_IN_MINUTEN = minZeitZwischenVorfuehrungenInMinuten;
    }
}
