package com.rjconsultores.ventaboletos.enums;

import org.zkoss.util.resource.Labels;

public enum TipoImpressora {
	
	MATRICIAL(0, Labels.getLabel("editarEstacionController.tipoImpressora.matricial"), false), 
	BEMATECH_FISCAL(1, Labels.getLabel("editarEstacionController.tipoImpressora.bematechFiscal"), true), 
	BEMATECH_FISCAL_BLINDADA(2, Labels.getLabel("editarEstacionController.tipoImpressora.bematechFiscalBlindada"), true), 
	CENTRAL_EMISSAO(3, Labels.getLabel("editarEstacionController.tipoImpressora.centralEmissao"), true),
	DARUMA(4, Labels.getLabel("editarEstacionController.tipoImpressora.darumaFiscal"), true),
	DARUMA_BLINDADA(5, Labels.getLabel("editarEstacionController.tipoImpressora.darumaFiscalBlindada"), true),
	STOCK_CENTRAL(6, Labels.getLabel("editarEstacionController.tipoImpressora.stockCentral"), true),
	BPE(7, Labels.getLabel("editarEstacionController.tipoImpressora.bpe"), true);

	private final int codigo;
	private final String nome;
	private final boolean isImpressoraFiscal;

	private TipoImpressora(int codigo, String nome, boolean isImpressoraFiscal) {
		this.codigo = codigo;
		this.nome = nome;
		this.isImpressoraFiscal = isImpressoraFiscal;
	}

	public Integer getCodigo() {
		return codigo;
	}
	
	public String getNome() {
		return nome;
	}
	
	public Boolean isImpressoraFiscal() {
		return isImpressoraFiscal;
	}

	public static TipoImpressora getTipoImpressora(final int value) {
		for (TipoImpressora tipo : TipoImpressora.values()) {
			if (tipo.getCodigo() == value) {
				return tipo;
			}
		}
		return null;
	}
	
	public static TipoImpressora getTipoImpressoraPorNome(final String nome) {
		for (TipoImpressora tipo : TipoImpressora.values()) {
			if (tipo.getNome().equals(nome)) {
				return tipo;
			}
		}
		return null;
	}
	
	public static TipoImpressora getTipoImpressoraFiscal(final int value) {
		TipoImpressora tipo = getTipoImpressora(value);
		if (tipo != null && tipo.isImpressoraFiscal()) {
			return tipo;
		}

		return null;
	}
}
