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.model.Estados;
import com.ejie.ad74a.util.comun.Utilidades;

/**
 * Estados de un expediente
 */

public enum EstadosExpedienteEnum {

	PEND_COMPLETAR(0L, "estado.expediente.pendCompletar"), //
	PEND_APERTURA(1L, "estado.expediente.pendApertura"), //
	PEND_ESTUDIO(2L, "estado.expediente.pendEstudio"), //
	PEND_RESOL_DES(3L, "estado.expediente.pendResolDesis"), //
	PEND_SUBSANACION(4L, "estado.expediente.pendSubsanacion"), //
	PEND_DESISTIMIENTO(5L, "estado.expediente.pendDesistimiento"), //
	PEND_RESOLUCION_CONCESION(6L, "estado.expediente.pendResolucionConcesion"), //
	PEND_RESOLUCION_DENEGACION(7L, "estado.expediente.pendResolucionDenegacion"), //
	PEND_NOTIFICAR_RESOL_CONCESION(8L, "estado.expediente.pendNotificarResolConcesion"), //
	PEND_CERRAR(9L, "estado.expediente.pendCerrar"), //
	CERRADO(10L, "estado.expediente.cerrado"), //
	PEND_NOTIFICAR_RESOL_DENEGACION(11L, "estado.expediente.pendNotificarResolDenegacion"), //
	PEND_NOTIFICAR_REQUERIMIENTO(12L, "estado.expediente.pendNotificarRequerimiento"), //
	PEND_ACUSE_RESOL_CONCESION(13L, "estado.expediente.pendAcuseResolConcesion"), //
	PEND_ACUSE_RESOL_DENEGACION(14L, "estado.expediente.pendAcuseResolDenegacion"), //
	PEND_ACUSE_RESOL_REQUERIMIENTO(15L, "estado.expediente.pendAcuseReq"), //
	PEND_ACUSE_RESOL_DESISTIMIENTO(16L, "estado.expediente.pendAcuseDesistimiento"), //
	PEND_NOTIFICAR_RESOL_DESISTIMIENTO(17L, "estado.expediente.pendNotificarResolDesis"), //
	PEND_NOTIFICAR_RESOL_RECURSO_DESIS(18L, "estado.expediente.pendNotificarResolRecursoDesis"), //
	PEND_ACUSE_RESOL_RECURSO_DESISTIMIENTO(19L, "estado.expediente.pendAcuseResolRecursoDesis"), //
	PEND_REQ_SUBSANACION(20L, "estado.expediente.pendAcuseReqSubsanacion"), //
	PEND_LOCALIZAR_DOCUMENTO(21L, "estado.expediente.pendLocalizarDocumento"), //
	PEND_APORTAR_INFORME(22L, "estado.expediente.pendAportarInforme"), //
	ARCHIVADO(23L, "estado.expediente.archivado"), //
	PEND_ARCHIVAR(24L, "estado.expediente.pendArchivar"), //
	TRAMITACION(25L, "estado.expediente.tramitacion"),
	PEND_NOTI_TRAMITE_AUDIENCIA(26L, "estado.expediente.pendNotiTramiteAudiencia"), //
	PEND_ACUSE_TRAMITE_AUDIENCIA(27L, "estado.expediente.pendAcuseTramiteAudiencia"), //
	PEND_ALEGACIONES(28L, "estado.expediente.pendAlegaciones"), //
	PEND_RECURSO(29L, "estado.expediente.pendRecurso"), //
	PEND_ESTUDIO_RECURSO(30L, "estado.expediente.pendEstudioRecurso"),
	PEND_COMUNICAR(31L, "estado.expediente.pendComunicar"), //
	PEND_FIN_DES(32L, "estado.expediente.pendFinDes"), //
	PEND_ACUSE_NOTI_LIQUIDACION(33L, "estado.expediente.pendAcuseNotiLiquidacion"),
	PEND_NOTIFICAR_LIQUIDACION(34L, "estado.expediente.pendNotificarLiquidacion"),
	PEND_CARTA_PAGO(35L, "estado.expediente.pendCartaPago");

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

	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(Locale locale) {
		return Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, this.labelDesc, locale);
	}

	public Estados getEstado() {
		Estados estado = new Estados(id);
		estado.setDescripcionEs30(Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N,
				this.labelDesc, com.ejie.ad74a.constantes.Constantes.LOCALE_ES));
		estado.setDescripcionEu30(Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N,
				this.labelDesc, com.ejie.ad74a.constantes.Constantes.LOCALE_EU));
		return estado;
	}

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

}
