package com.ejie.ad74a.util.constantes;

import java.util.Locale;

import org.springframework.context.i18n.LocaleContextHolder;

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

/**
 * enum que contiene todas los procedimientos
 *
 * id: cod de procedimiento en platea
 * 
 * desc: descripcion
 * 
 * sufixProcedure - Sufijo usado para generar el folderNumber
 * 
 * idLibroReg
 */

public enum RecursosMovilizadosEnum {

	FAMILIARES(1L, "recursosMovilizados.familiares"), //
	UM_PROPIA(2L, "recursosMovilizados.umPropia"), //
	UM_SOPORTE(3L, "recursosMovilizados.umSoporte"), //
	SOS_DEIAK(4L, "recursosMovilizados.SOSDeiak"), //
	CS(5L, "recursosMovilizados.cs"); //

	// Recurso movilizado: 1: Contactos socio familiares; 2: UM propia; 3: UM de
	// soporte; 4: SOS DEIAK; 5: CS – Consejo Sanitario

	private RecursosMovilizadosEnum(Long id, String labelDesc) {
		this.id = id;
		this.labelDesc = labelDesc;
	}

	private Long id;
	private String labelDesc;

	public Long getId() {
		return this.id;
	}

	public String getLabelDesc() {
		return Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, this.labelDesc,
				LocaleContextHolder.getLocale());
	}

	public String getLabelDesc(Long id) {
		String desc = "";
		for (RecursosMovilizadosEnum rec : RecursosMovilizadosEnum.values()) {
			if (rec.getId().compareTo(id) == 0) {
				desc = Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, rec.getLabelDesc(),
						LocaleContextHolder.getLocale());
			}
		}
		return desc;
	}

	public static String getDesc(Long id) {
		for (RecursosMovilizadosEnum rec : RecursosMovilizadosEnum.values()) {
			if (rec.getId().compareTo(id) == 0) {
				return rec.getLabelDesc();
			}
		}
		return null;
	}

	public static RecursosMovilizadosEnum getById(Long id) {
		for (RecursosMovilizadosEnum rec : RecursosMovilizadosEnum.values()) {
			if (rec.getId().compareTo(id) == 0) {
				return rec;
			}
		}
		return null;
	}

	public Combo getCombo() {
		return new Combo(id.toString(),
				Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, this.labelDesc,
						com.ejie.ad74a.constantes.Constantes.LOCALE_ES),
				Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, this.labelDesc,
						com.ejie.ad74a.constantes.Constantes.LOCALE_EU));
	}

	public String getLabelDesc(Locale locale) {
		return Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, this.labelDesc, locale);
	}

	public static String getLabelDescEs(Long id) {
		for (RecursosMovilizadosEnum rec : RecursosMovilizadosEnum.values()) {
			if (rec.getId().compareTo(id) == 0) {
				return rec.getLabelDesc(com.ejie.ad74a.constantes.Constantes.LOCALE_ES);
			}
		}
		return "";
	}

	public static String getLabelDescEu(Long id) {
		for (RecursosMovilizadosEnum rec : RecursosMovilizadosEnum.values()) {
			if (rec.getId().compareTo(id) == 0) {
				return rec.getLabelDesc(com.ejie.ad74a.constantes.Constantes.LOCALE_EU);
			}
		}
		return "";
	}

	public static boolean exists(Long value) {

		for (RecursosMovilizadosEnum recurso : RecursosMovilizadosEnum.values()) {
			if (recurso.getId().compareTo(value) == 0) {
				return true;
			}
		}

		return false;
	}
}
