package hr.com.port.ips.eracun.provider.mer.enums;

import hr.com.port.eracun.codelists.Codelist;


public enum MerRejectionReasonType implements Codelist {
    N(1, "N", "Neslaganje koje ne utječe na porez", "Data discrepancy (no tax impact)"),
    U(2, "U", "Neslaganje koje utječe na porez", "Data discrepancy (affects tax)"),
    O(3, "O", "Ostalo", "Other");

    private final int id;
    private final String code;
    private final String naziv;
    private final String englishName; // opis iz MER specifikacije

    MerRejectionReasonType(int id, String code, String naziv, String englishName) {
        this.id = id;
        this.code = code;
        this.naziv = naziv;
        this.englishName = englishName;
    }
    
	@Override public int getId()        { return id; }
    @Override public String getCode()   { return code; }
    @Override public String getNaziv()  { return naziv; }
	@Override public String getEnglishName() { return englishName; }
    @Override public int getOsnovno()   { return 0; }
    @Override public int getLevel()     { return 0; }
    @Override public int getPrioritet() { return id; }

    public static MerRejectionReasonType fromId(int id) {
		for (MerRejectionReasonType r : values()) {
			if (r.id == id) return r;
		}
		throw new IllegalArgumentException("Unknown id: " + id);
	}

	public static MerRejectionReasonType fromCode(String code) {
		for (MerRejectionReasonType r : values()) {
			if (r.code.equalsIgnoreCase(code)) return r;
		}
		throw new IllegalArgumentException("Unknown code: " + code);
	}

	public static int idFromCode(String code) {
		return fromCode(code).getId();
	}

	public static String codeFromId(int id) {
		return fromId(id).getCode();
	}
}