package it.integry.integrywmsnative.core.utility;

import com.annimon.stream.Stream;

import java.util.List;

import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.settings.SettingsManager;

public class UtilityPosizione {

    public static boolean isPosizioneWithLivello(MtbDepoPosizione mtbDepoPosizione) {

        //TODO: Review this check
        if(mtbDepoPosizione != null) {

            char LChar = mtbDepoPosizione.getPosizione().charAt(mtbDepoPosizione.getPosizione().length()-2);

            if(LChar == 'L' && !mtbDepoPosizione.isFlagLineaProduzione()) {
                return true;
            } else return false;
        }

        return false;
    }

    public static boolean isLineaProduzione(String posizione) {
        MtbDepoPosizione mtbDepoPosizione = getFromCache(posizione);

        return mtbDepoPosizione != null && mtbDepoPosizione.isFlagLineaProduzione();
    }

    public static MtbDepoPosizione getFromCache(String posizione) {
        var availablePosizioni = SettingsManager.iDB().getAvailablePosizioni();
        if(availablePosizioni == null) return null;

        List<MtbDepoPosizione> tmpList = Stream.of(availablePosizioni)
                .filter(x -> x.getPosizione().equalsIgnoreCase(posizione)).toList();

        if(tmpList.size() > 0) return tmpList.get(0);
        else return null;
    }

}
