package hr.com.port.ips.eracun.modeli;

import java.util.ArrayList;
import java.util.List;

public enum EracunStatus {
    KREIRAN(0, "KREIRAN", "Kreiran", false),
    POSLAN(1, "POSLAN", "Poslan", false),
    ZAPRIMLJEN(2, "ZAPRIMLJEN", "Zaprimljen", false),
    DOSTAVLJEN(3, "DOSTAVLJEN", "Dostavljen", true),
    PRIHVACEN(4, "PRIHVACEN", "Prihvaćen", true),
    ODBIJEN(5, "ODBIJEN", "Odbijen", true),
    PLACEN(6, "PLACEN", "Naplaćen", true),
	DJELOMICNO_PLACEN(7, "DJELOMICNO", "Djelomično plaćen", true),
    STORNIRAN(8, "STORNIRAN", "Storniran", true),
	PRONADJEN(97, "PRONAĐEN", "Pronađen link", false),  //siroče pronađeno u mer bazi koje je naknadno povezano s računom u bazi	
	BEZ_LINKA(98, "BEZ_LINKA", "Bez linka", false),  //siroče pronađeno u mer bazi, ali ne postoji u lokalnoj
    GRESKA(99, "GRESKA", "Greška", true);

    private final int id;
    private final String code;
    private final String naziv;    
    private final boolean finalni;

    EracunStatus(int id, String code, String naziv, boolean finalni) {
        this.id = id;
        this.code = code;
        this.naziv = naziv;
        this.finalni = finalni;
    }

    public int getId()        { return id; }
    public String getCode()   { return code; }
    public String getNaziv()  { return naziv; }
	public boolean isFinalni() { return finalni; }	

    public static EracunStatus fromCode(String code) {
        for (EracunStatus s : values())
            if (s.code.equalsIgnoreCase(code))
                return s;
        return null;
    }

    public static EracunStatus fromId(int id) {
        for (EracunStatus s : values())
            if (s.id == id)
                return s;
        return null;
    }
	
	public static List<EracunStatus> getOtvoreniStatusi() {
        List<EracunStatus> lista = new ArrayList<>();
        for (EracunStatus s : values()) {
            if (!s.finalni) lista.add(s);
        }
        return lista;
    }
}