package com.ejie.ad74a.util.constantes;

import org.springframework.context.i18n.LocaleContextHolder;

import com.ejie.ad74a.util.comun.Utilidades;

/**
 * enum que contiene todas los posibles resultados de las llamadas de
 * interoperabilidad
 * 
 * 1 - Codigo de la interoperabilidad
 * 
 * 2 - Codigo del resultado
 * 
 * 3 - Descripcion del error
 * 
 * 4 - Desc midi del icono a mostrar
 * 
 */

public enum ResultadosIOPEnum {

	TER("", "0002", "resultadosIOP.ter", "mdi mdi-calendar-clock"), // en procesp;
	FALTA_INFO("", "0254", "resultadosIOP.faltaInfo", "mdi mdi-minus-circle rojo"),
	NO_AUTO("", "0314", "resultadosIOP.padron.noAutorizacion", "mdi mdi-minus-circle rojo"),
	ERROR_ESTRUC("", "0401", "resultadosIOP.padron.errorEstructura", "mdi mdi-minus-circle rojo"),
	DGP_ERROR_FORMATO("SWIOPCIDENDGP", "0231", "resultadosIOP.dgp.errorFormatoDoc", "mdi mdi-minus-circle rojo"),
	DGP_REGISTRO_DUPLI("SWIOPCIDENDGP", "0232", "resultadosIOP.dgp.regDuplicado", "mdi mdi-minus-circle rojo"),
	DGP_TIT_NO_IDENTIF("SWIOPCIDENDGP", "0233", "resultadosIOP.dgp.noIdent", "mdi mdi-minus-circle rojo"),

	TRAMITADA("", "0003", "resultadosIOP.ter", "mdi mdi-information\""); // tramitada

	/**
	 * Constructor privado.
	 * 
	 * idtaskId Long
	 *
	 * @param idtaskId the id tipo doc
	 */
	private ResultadosIOPEnum(String service, String cod, String labelDesc, String icon) {
		this.service = service;
		this.cod = cod;
		this.labelDesc = labelDesc;
		this.icon = icon;
	}

	private String service;
	private String cod;
	private String labelDesc;
	private String icon;

	public String getCod() {
		return this.cod;
	}

	public static String getLabelDesc(String service, String cod) {
		if (cod == null || "".equals(cod)) {
			return "";
		}
		for (ResultadosIOPEnum resultadoIOP : ResultadosIOPEnum.values()) {
			if (cod.equalsIgnoreCase(resultadoIOP.getCod())) {
				if (!"".equals(resultadoIOP.getService())) {
					if (service.equalsIgnoreCase(resultadoIOP.getService())) {
						Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N,
								resultadoIOP.getLabelDesc(), LocaleContextHolder.getLocale());
					}
				} else {

					Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N,
							resultadoIOP.getLabelDesc(), LocaleContextHolder.getLocale());
				}

			}
		}
		return "";
	}

	public static String getIcon(String service, String cod) {
		if (cod == null || "".equals(cod)) {
			return "mdi mdi-information";
		}
		for (ResultadosIOPEnum resultadoIOP : ResultadosIOPEnum.values()) {
			if (cod.equalsIgnoreCase(resultadoIOP.getCod())) {
				if (!"".equals(resultadoIOP.getService())) {
					if (service.equalsIgnoreCase(resultadoIOP.getService())) {
						return resultadoIOP.getIcon();
					}
				} else {
					return resultadoIOP.getIcon();
				}
			}
		}

		return "mdi mdi-information";
	}

	public String getLabelDesc() {
		return labelDesc;
	}

	public void setLabelDesc(String labelDesc) {
		this.labelDesc = labelDesc;
	}

	public String getIcon() {
		return icon;
	}

	public String getService() {
		return service;
	}

}
