package it.integry.wms.dynamic_customization.extensions;

import java.util.List;

import it.integry.integrywmsnative.core.class_router.interfaces.IOrdiniVendita;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityString;

public class OrdiniVendita implements IOrdiniVendita {

    @Override
    public void distribuisciCollo(MtbColt mtbColt, List<OrdineUscitaInevasoDTO> testateOrdini, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {

        String codMdepOrder = testateOrdini.get(0).getCodMdep();

        //Se il deposito del collo è diverso dal deposito dell'utente allora sto "evadendo" la merce per una vendita presente
        //su un altro deposito
        if(!UtilityString.isNullOrEmpty(codMdepOrder) &&
                !codMdepOrder.equalsIgnoreCase(SettingsManager.i().getUserSession().getDepo().getCodMdep())) {

            ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt,
                    DistribuzioneColloDTO.CriterioDistribuzione.UPDATE,
                    onComplete,
                    onFailed);

        } else {

            ColliMagazzinoRESTConsumer.distribuisciCollo(mtbColt,
                    SettingsManager.iDB().getDefaultCriterioDistribuzione(),
                    onComplete,
                    onFailed);
        }


    }
}
