package com.ejie.ad74a.util.constantes;

import java.util.Locale;

import org.springframework.context.i18n.LocaleContextHolder;

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

public enum TiposDocumentoRoleEnum {

	AUTO_DT_TRIBUTARIOS_CONYUGE(1L, "ejgv_d_autopermi.0.X87_Autoriza_Tributario_Conyuge",
			"tipoDocumento.autoDTTribuConyuge"),
	CERT_REG_PAREJAS_HECHO(2L, "ejgv_d_certificado.0.X87_Certificado_Pareja_Hecho",
			"tipoDocumento.certRegParejasHecho"),
	INFORME_SOCIAL(3L, "ejgv_d_informe.0.X87_Informe_Social", "tipoDocumento.informeSocial"),
	ESQUELA(4L, "ejgv_d_certificado.0.X87_Esquela", "tipoDocumento.esquela"),
	DNI(5L, "ejgv_d_dni.0.1", "tipoDocumento.dni"),
	JUST_INGRESO_RESIDENCIA(6L, "ejgv_d_justificante.0.X87_Residencia", "tipoDocumento.justIngresoResidencial"),
	RESOL_DEPENDENCIA(7L, "ejgv_d_certificado.0.X87_Resolucion_Reconocimiento_Dependencia",
			"tipoDocumento.dependencia"),
	DOC_REPRESENTACION_LEGAL(8L, "ejgv_d_certificado.0.X87_Documento_Acreditativo_Representacion_Legal",
			"tipoDocumento.docRepresentacionLegal"),
	OTROS(9L, "ejgv_d_archivo.0.ejgv_d_otros", "tipoDocumento.otros"),
	CERT_DATOS_TRIBU_CONYUGE(10L, "ejgv_d_certificado.ejgv_d_certificado_fisc.X87_Certificado_Tributario_Conyuge",
			"tipoDocumento.certDatosTribuConyuge"),
	LIBRO_FAMILIA(11L, "ejgv_d_librofamilia.0.1111201_06", "tipoDocumento.libroFamilia"),
	JUSTIFICANTE_SIR(12L, "ejgv_d_certificado.0.X87_Justificante_SIR", "tipoDocumento.justificanteSir"),
	CERT_PADRON(13L, "ejgv_d_certificado.ejgv_d_certificado_empa.Certificado_Padrón", "tipoDocumento.certPadron"),
	RESOL_CERT_RECONOCIMIENTO_DISCAPACIDAD(14L, "ejgv_d_certificado.0.X87_Certificado_Reconocimiento_Discapacidad",
			"tipoDocumento.resolCertReDiscapacidad"),
	CERT_DATOS_TRIBUTARIOS(15L, "ejgv_d_certificado.ejgv_d_certificado_fisc.X87_Certificado_Tributario",
			"tipoDocumento.certDatosTribu"),
	OFICIO_AYUNTAMIENTO(16L, "ejgv_d_certificado.0.X87_Oficio_Ayuntamiento", "tipoDocumento.oficioAyunta"),
	DOMIC_BANCARIO_SER_TELEASISTENCIA(17L, "ejgv_d_informe.0.X87_Domiciliacion_Bancaria",
			"tipoDocumento.domicBancarioTeleasis"),
	DOC_URGENCIA(18L, "ejgv_d_acuerdo.ejgv_d_acuerdo_tramurge.X87_Documento_Acreditativo_Urgencia",
			"tipoDocumento.docUrgencia"),
	FIRMA_SOLICITANTE(19L, "ejgv_d_autopermi.0.X87_Firma_solicitante", "tipoDocumento.firmaSolicitante"),
	FICHA_SANITARIA(20L, "ejgv_d_informe.0.X87_Ficha_Sanitaria", "tipoDocumento.fichaSanitaria"),
	CERT_IRPF_RENTA(21L, "ejgv_d_certificado.ejgv_d_certificado_interope.0016_INTEROP_OBLIGATORIOUSAR_RENT",
			"tipoDocumento.certIrpfRenta"),
	SOLICITUD(22L, "ejgv_d_solicitud.0.0", "tipoDocumento.solicitud"),
	IMSERSO_GRADO_DEPEN(23L, "ejgv_d_certificado.ejgv_d_certificado_interope.0022_INTEROP_OBLIGATORIOUSAR_IMSERSO_DEP",
			"tipoDocumento.imserso"),
	CONSULTA_DGP(24L, "ejgv_d_certificado.ejgv_d_certificado_interope.0043_INTEROP_OBLIGATORIOUSAR_DGP_IDENTIDAD",
			"tipoDocumento.consultaDGP"),
	ACUSE_RECIBO_NOTIF(25L, "ejgv_d_acuserecibo.0.NOTIFICATION_RECEIPT", "tipoDocumento.acuseReciboNotif"),
	COMUNICACION(26L, "ejgv_d_comunicacion.0.r02d725AC3DB91A78480DAD82CBFFBE109CE993987C1",
			"tipoDocumento.comunicacion"),
	DOC_NOTIFICACION(27L, "ejgv_d_notificacion.0.NOTIFICATION_DOCUMENT", "tipoDocumento.docNotificacion"),
	LIQUIDACION(28L, "ejgv_d_liquidacion.0.0", "tipoDocumento.liquidacion"),
	TRAMITE_AUDIENCIA(29L, "ejgv_d_requsubs.0.r02dD317EE5FA0EAF7F57DEF19EBFCFB0DEC1022723D",
			"tipoDocumento.tramiteAudiencia"),
	DOC_ACREDITATIVO_REPRESEN(30L, "ejgv_d_escritura_apod.0.0", "tipoDocumento.docAcreditativoRepresen"),
	AUTO_CONYUGE_CONSULTA_IRPF(31L, "ejgv_d_consentimiento.0.aut_cony_IRPF", "tipoDocumento.autoConyugeConsultaIrpf"),
	PADRON_GENERICO(32L, "ejgv_d_certificado.ejgv_d_certificado_interope.0073_INTEROP_OBLIGATORIOUSAR_PADRON_GEN",
			"tipoDocumento.padronGenerico"),
	NIVEL_RENTA(33L, "ejgv_d_certificado.0.0016_INTEROP_OBLIGATORIOUSAR_RENT", "tipoDocumento.nivelRenta"),
	DISCAPACIDAD(34L, "ejgv_d_certificado.ejgv_d_certificado_interope.0076_INTEROP_OBLIGATORIOUSAR_DISCAP",
			"tipoDocumento.discapacidad"),
	RESOLUCION(35L, "ejgv_d_resolucion.0.0", "tipoDocumento.resolucion"),
	REQ_SUBSANACION(36L, "ejgv_d_requsubs.0.REQ_SUB", "tipoDocumento.requerimiento.subsanacion"),
	INFORME_INTERVENCION(37L, "ejgv_d_comunicacion.0.AD74A_Informe_Intervencion", "tipoDocumento.informe.intervencion"),
	CARTA_PAGO(38L, "ejgv_d_notificacion.0.carta_pago", "tipoDocumento.notificacion.cartaPago");

	private final Long id;
	private final String roleID;
	private final String labelDesc;

	private TiposDocumentoRoleEnum(Long id, String roleID, String labelDesc) {
		this.id = id;
		this.roleID = roleID;
		this.labelDesc = labelDesc;

	}

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

	public String getRoleID() {
		return this.roleID;
	}

	public String getLabelDesc() {
		/** IMPORTANTE -> INTENTAR NO USAR, IR A BBDD PARA RECUPERAR LA DESCRIPCION **/
		return getLabelDesc(LocaleContextHolder.getLocale());
	}

	public String getLabelDesc(Locale loc) {
		/** IMPORTANTE -> INTENTAR NO USAR, IR A BBDD PARA RECUPERAR LA DESCRIPCION **/
		return Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, this.labelDesc, loc);
	}

	public static Long getIdByRole(String roleID) {
		for (TiposDocumentoRoleEnum doc : TiposDocumentoRoleEnum.values()) {
			if (doc.getRoleID().equalsIgnoreCase(roleID)) {
				return doc.getId();
			}
		}
		return null;
	}

}