package com.ejie.ad74a.util.constantes.modelos;

import javax.annotation.Resource;

import org.springframework.context.i18n.LocaleContextHolder;

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

@Resource
public class TipoExpedientes {

	public static final int MAX_LENGTH_NUMREGISTRO00 = 20;
	public static final String MAX_LENGTH_NUMREGISTRO00_STR = Utilidades.getStringFromInteger(MAX_LENGTH_NUMREGISTRO00);

	public static final int MAX_LENGTH_OBSERVACIONES00 = 1750;
	public static final String MAX_LENGTH_OBSERVACIONES00_STR = Utilidades
			.getStringFromInteger(MAX_LENGTH_OBSERVACIONES00);

	private TipoExpedientes() {

	}
	// Longitud de campos
	/*
	 * Los JSP necesitan Strings, las comparaciones en java Integer
	 */

	// exencion00 //
	public static enum tipoIdentificador {
		SI(1, "comun.si"), //
		NO(0, "comun.no");

		private tipoIdentificador(Integer id, String labelDesc) {
			this.id = id;
			this.labelDesc = labelDesc;
		}

		private Integer id;
		private String labelDesc;

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

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

		public String getLabelDesc(int id) {
			String desc = "";
			for (tipoIdentificador tipoiden : tipoIdentificador.values()) {
				if (tipoiden.getId() == id) {
					desc = Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N,
							tipoiden.getLabelDesc(), LocaleContextHolder.getLocale());
				}
			}
			return desc;
		}
	}

	// presentaSol00 //
	public static enum presentaSol00 {
		INTERESADO(0, "presentaSol00.solicitante"), //
		REPRESENTANTE(1, "presentaSol00.representante");

		private presentaSol00(Integer id, String labelDesc) {
			this.id = id;
			this.labelDesc = labelDesc;
		}

		private Integer id;
		private String labelDesc;

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

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

		public String getLabelDesc(int id) {
			String desc = "";
			for (presentaSol00 pres : presentaSol00.values()) {
				if (pres.getId() == id) {
					desc = Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, pres.getLabelDesc(),
							LocaleContextHolder.getLocale());
				}
			}
			return desc;
		}
	}

	// idTipoEntrada00 //
	public static enum idTipoEntrada00 {
		TELEMATICA(1, "tipoEntrada.telematica"), //
		PAPEL0(2, "tipoEntrada.papel0"), //
		PRESENCIAL(3, "tipoEntrada.presencial"), //
		OFICIO(4, "tipoEntrada.inicioOficio");

		private idTipoEntrada00(Integer id, String labelDesc) {
			this.id = id;
			this.labelDesc = labelDesc;
		}

		private Integer id;
		private String labelDesc;

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

		public String getIdStr() {
			return String.valueOf(this.id);
		}

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

		public static String getLabelDescById(int id) {
			for (idTipoEntrada00 tipo : idTipoEntrada00.values()) {
				if (tipo.getId() == id) {
					return Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, tipo.labelDesc,
							LocaleContextHolder.getLocale());
				}
			}
			return "";
		}

		public String getLabelDesc(Integer id) {
			String desc = "";
			for (idTipoEntrada00 tipoEnt : idTipoEntrada00.values()) {
				if (tipoEnt.getId() == id) {
					desc = Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N,
							tipoEnt.getLabelDesc(), LocaleContextHolder.getLocale());
				}
			}
			return desc;
		}

		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 static idTipoEntrada00 getById(Integer id) {
			for (idTipoEntrada00 e : values()) {
				if (e.id.equals(id))
					return e;
			}
			return null;
		}
	}

	// urgencia00 //
	public static enum urgencia00 {
		SI(1, "comun.si"), //
		NO(0, "comun.no");

		private urgencia00(Integer id, String labelDesc) {
			this.id = id;
			this.labelDesc = labelDesc;
		}

		private Integer id;
		private String labelDesc;

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

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

		public String getLabelDesc(int id) {
			String desc = "";
			for (urgencia00 urg : urgencia00.values()) {
				if (urg.getId() == id) {
					desc = Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, urg.getLabelDesc(),
							LocaleContextHolder.getLocale());
				}
			}
			return desc;
		}
	}

	// existeInstalacion00 //
	public static enum existeInstalacion00 {
		SI(1, "comun.si"), //
		NO(0, "comun.no");

		private existeInstalacion00(Integer id, String labelDesc) {
			this.id = id;
			this.labelDesc = labelDesc;
		}

		private Integer id;
		private String labelDesc;

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

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

		public String getLabelDesc(int id) {
			String desc = "";
			for (existeInstalacion00 exis : existeInstalacion00.values()) {
				if (exis.getId() == id) {
					desc = Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, exis.getLabelDesc(),
							LocaleContextHolder.getLocale());
				}
			}
			return desc;
		}
	}

	// idTipoNot00 //
	public static enum idTipoNot00 {
		TELEMATICA(1, "idTipoNot00.telematica"), //
		POSTAL(2, "idTipoNot00.postal");

		private idTipoNot00(Integer id, String labelDesc) {
			this.id = id;
			this.labelDesc = labelDesc;
		}

		private Integer id;
		private String labelDesc;

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

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

		public String getLabelDesc(int id) {
			String desc = "";
			for (idTipoNot00 idTipoN : idTipoNot00.values()) {
				if (idTipoN.getId() == id) {
					desc = Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N,
							idTipoN.getLabelDesc(), LocaleContextHolder.getLocale());
				}
			}
			return desc;
		}

		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));
		}
	}

	// idTipoNot00 //
	public static enum canalNot00 {
		SMS(0, "canalNot00.sms"), //
		EMAIL(1, "canalNot00.email"), //
		AMBOS(2, "canalNot00.ambos");

		private canalNot00(Integer id, String labelDesc) {
			this.id = id;
			this.labelDesc = labelDesc;
		}

		private Integer id;
		private String labelDesc;

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

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

		public String getLabelDesc(int id) {
			String desc = "";
			for (canalNot00 can : canalNot00.values()) {
				if (can.getId() == id) {
					desc = Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, can.getLabelDesc(),
							LocaleContextHolder.getLocale());
				}
			}
			return desc;
		}
	}

	// Tipos de Solicitud //
	public interface PantallaOrigen {
		public static final String TAB_DATOS_SOLICITUD_ALTA = "tabDatosSolicitudAlta";
		public static final String TAB_DATOS_SOLICITUD_BAJA = "tabDatosSolicitudBaja";
		public static final String TAB_DATOS_SOLICITUD_MODIFICACION = "tabDatosSolicitudModificacion";
		public static final String TAB_DATOS_SOLICITUD_INFORME = "tabDatosSolicitudInforme";
		public static final String TAB_DATOS_SOLICITUD_REVISION_PRECIO = "tabDatosSolicitudRevisionPrecio";
		public static final String TAB_DATOS_SOLICITUD_NOTIFICACION_LIQUIDACION = "tabDatosSolicitudNotificacionLiquidacion";
	}

	public enum Archivo00 {

		PENDIENTE_ENVIO("1"), //
		ENVIADO("2"), //
		ARCHIVADO("3"); //

		/**
		 * 
		 * @param value
		 */
		private Archivo00(String value) {
			this.value = value;
		}

		private String value;

		public String getValue() {
			return value;
		}

	}

	// pdteSolicitarPadron //
	public static enum pdteSolicitarPadron {
		SI(1, "comun.si"), //
		NO(0, "comun.no");

		private pdteSolicitarPadron(Integer id, String labelDesc) {
			this.id = id;
			this.labelDesc = labelDesc;
		}

		private Integer id;
		private String labelDesc;

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

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

		public String getLabelDesc(int id) {
			String desc = "";
			for (urgencia00 urg : urgencia00.values()) {
				if (urg.getId() == id) {
					desc = Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, urg.getLabelDesc(),
							LocaleContextHolder.getLocale());
				}
			}
			return desc;
		}
	}

}
