package it.integry.integrywmsnative.gest.spedizione.model;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.List;

import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;

public class PickingObjectDTO implements Cloneable {

    private SitArtOrdDTO sitArtOrdDTO;
    private MtbAart mtbAart;
    private List<MtbColt> mtbColts;

    private PickDataDTO tempPickData;
    private MtbColt refMtbColt;
    private List<MtbColr> withdrawMtbColrs = new ArrayList<>();

    private boolean hidden = false;

    @NotNull
    @Override
    public Object clone() {
        try {
            return super.clone();
        } catch (Exception ex) {
            return null;
        }
    }

    public PickingObjectDTO cloneObject() {
        return (PickingObjectDTO) this.clone();
    }


    public SitArtOrdDTO getSitArtOrdDTO() {
        return sitArtOrdDTO;
    }

    public PickingObjectDTO setSitArtOrdDTO(SitArtOrdDTO sitArtOrdDTO) {
        this.sitArtOrdDTO = sitArtOrdDTO;
        return this;
    }

    public MtbAart getMtbAart() {
        return mtbAart;
    }

    public PickingObjectDTO setMtbAart(MtbAart mtbAart) {
        this.mtbAart = mtbAart;
        return this;
    }

    public List<MtbColt> getMtbColts() {
        return mtbColts;
    }

    public PickingObjectDTO setMtbColts(List<MtbColt> mtbColts) {
        this.mtbColts = mtbColts;
        return this;
    }

    public boolean isHidden() {
        return hidden;
    }

    public PickingObjectDTO setHidden(boolean hidden) {
        this.hidden = hidden;
        return this;
    }

    public PickDataDTO getTempPickData() {
        return tempPickData;
    }

    public PickingObjectDTO setTempPickData(PickDataDTO tempPickData) {
        this.tempPickData = tempPickData;
        return this;
    }

    public MtbColt getRefMtbColt() {
        return refMtbColt;
    }

    public PickingObjectDTO setRefMtbColt(MtbColt refMtbColt) {
        this.refMtbColt = refMtbColt;
        return this;
    }

    public List<MtbColr> getWithdrawMtbColrs() {
        return withdrawMtbColrs;
    }

    public PickingObjectDTO setWithdrawMtbColrs(List<MtbColr> withdrawMtbColrs) {
        this.withdrawMtbColrs = withdrawMtbColrs;
        return this;
    }
}
