package it.integry.integrywmsnative.gest.vendita_ordine_inevaso.dto;

import com.annimon.stream.Stream;

import java.math.BigDecimal;
import java.util.List;

import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO;

public class VenditaOrdineInevasoListViewModel {
    public String descrizioneGroup;
    public List<SubItem> rows;

    public boolean isHidden(){
        if(rows == null || rows.size() == 0) return true;
        return Stream.of(rows).filter(x -> (x.originalModel.isHidden() != null && !x.originalModel.isHidden()) &&
                (x.originalModel.isTempHidden() != null && !x.originalModel.isTempHidden())).count() == 0;
    }

    public static class SubItem {

        private String badge1;
        private String badge2;

        private String descrizione;
        private String subDescrizione1;
        private String subDescrizione2;
        private BigDecimal qtaRiservata;
        private BigDecimal qtaOrdinata;

        private PickingObjectDTO originalModel;

        public String getBadge1() {
            return badge1;
        }

        public SubItem setBadge1(String badge1) {
            this.badge1 = badge1;
            return this;
        }

        public String getBadge2() {
            return badge2;
        }

        public SubItem setBadge2(String badge2) {
            this.badge2 = badge2;
            return this;
        }

        public String getDescrizione() {
            return descrizione;
        }

        public SubItem setDescrizione(String descrizione) {
            this.descrizione = descrizione;
            return this;
        }

        public String getSubDescrizione1() {
            return subDescrizione1;
        }

        public SubItem setSubDescrizione1(String subDescrizione1) {
            this.subDescrizione1 = subDescrizione1;
            return this;
        }

        public String getSubDescrizione2() {
            return subDescrizione2;
        }

        public SubItem setSubDescrizione2(String subDescrizione2) {
            this.subDescrizione2 = subDescrizione2;
            return this;
        }

        public BigDecimal getQtaRiservata() {
            return qtaRiservata == null ? BigDecimal.ZERO : qtaRiservata;
        }

        public SubItem setQtaRiservata(BigDecimal qtaRiservata) {
            this.qtaRiservata = qtaRiservata;
            return this;
        }

        public BigDecimal getQtaOrdinata() {
            return qtaOrdinata == null ? BigDecimal.ZERO : qtaOrdinata;
        }

        public SubItem setQtaOrdinata(BigDecimal qtaOrdinata) {
            this.qtaOrdinata = qtaOrdinata;
            return this;
        }

        public PickingObjectDTO getOriginalModel() {
            return originalModel;
        }

        public SubItem setOriginalModel(PickingObjectDTO originalModel) {
            this.originalModel = originalModel;
            return this;
        }
    }

}
