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

import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;

public class ProdLineStatusDTO {

    private String codJfas;

    private String descrizione;

    private String codMdepLav;

    private Date datetimeStart;

    private Date datetimeEnd;

    private String codMart;

    private String partitaMag;

    private BigDecimal maxAllocazione;

    private Integer qtaAllocate;

    private String listaOrd;

    private String descrizioneProd;


    public String getCodJfas() {
        return codJfas;
    }

    public ProdLineStatusDTO setCodJfas(String codJfas) {
        this.codJfas = codJfas;
        return this;
    }

    public String getDescrizione() {
        return descrizione;
    }

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

    public String getCodMdepLav() {
        return codMdepLav;
    }

    public ProdLineStatusDTO setCodMdepLav(String codMdepLav) {
        this.codMdepLav = codMdepLav;
        return this;
    }

    public Date getDatetimeStart() {
        return datetimeStart;
    }

    public ProdLineStatusDTO setDatetimeStart(Date datetimeStart) {
        this.datetimeStart = datetimeStart;
        return this;
    }

    public Date getDatetimeEnd() {
        return datetimeEnd;
    }

    public ProdLineStatusDTO setDatetimeEnd(Date datetimeEnd) {
        this.datetimeEnd = datetimeEnd;
        return this;
    }

    public BigDecimal getMaxAllocazione() {
        return maxAllocazione;
    }

    public ProdLineStatusDTO setMaxAllocazione(BigDecimal maxAllocazione) {
        this.maxAllocazione = maxAllocazione;
        return this;
    }

    public Integer getQtaAllocate() {
        return qtaAllocate;
    }

    public ProdLineStatusDTO setQtaAllocate(Integer qtaAllocate) {
        this.qtaAllocate = qtaAllocate;
        return this;
    }

    public String getListaOrd() {
        return listaOrd;
    }

    public ProdLineStatusDTO setListaOrd(String listaOrd) {
        this.listaOrd = listaOrd;
        return this;
    }

    public boolean isStarted() {
        return datetimeStart != null && datetimeEnd == null;
    }


    public boolean isPaused() {
        if (datetimeEnd == null) {
            return false;
        }
        Calendar today = Calendar.getInstance();
        today.set(Calendar.MILLISECOND, 0);
        today.set(Calendar.SECOND, 0);
        today.set(Calendar.MINUTE, 0);
        today.set(Calendar.HOUR_OF_DAY, 0);
        Calendar lastCloseTime = Calendar.getInstance();
        lastCloseTime.setTime(datetimeEnd);
        lastCloseTime.set(Calendar.MILLISECOND, 0);
        lastCloseTime.set(Calendar.SECOND, 0);
        lastCloseTime.set(Calendar.MINUTE, 0);
        lastCloseTime.set(Calendar.HOUR_OF_DAY, 0);
        return datetimeStart != null && datetimeEnd != null && today.equals(lastCloseTime);
    }

    public String getLabel() {
        return codJfas + " - " + descrizione;
    }

    public String getRisorseLabel() {
        return qtaAllocate + (maxAllocazione != null && maxAllocazione.compareTo(BigDecimal.ZERO) > 0 ? "/" + maxAllocazione : "");
    }

    public String getCodMart() {
        return codMart;
    }

    public ProdLineStatusDTO setCodMart(String codMart) {
        this.codMart = codMart;
        return this;
    }

    public String getPartitaMag() {
        return partitaMag;
    }

    public ProdLineStatusDTO setPartitaMag(String partitaMag) {
        this.partitaMag = partitaMag;
        return this;
    }


    public String getDescrizioneProd() {
        return descrizioneProd;
    }

    public ProdLineStatusDTO setDescrizioneProd(String descrizioneProd) {
        this.descrizioneProd = descrizioneProd;
        return this;
    }
}
