package com.ejie.ad74a.util.constantes;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import org.springframework.context.i18n.LocaleContextHolder;

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

/**
 * Tipos de entrada
 */

public enum MesesEnum {

	ENERO("1", "meses.enero"), //
	FEBRERO("2", "meses.febrero"), //
	MARZO("3", "meses.marzo"), //
	ABRIL("4", "meses.abril"), //
	MAYO("5", "meses.mayo"), //
	JUNIO("6", "meses.junio"), //
	JULIO("7", "meses.julio"), //
	AGOSTO("8", "meses.agosto"), //
	SEPTIEMBRE("9", "meses.septiembre"), //
	OCTUBRE("10", "meses.octubre"), //
	NOVIEMBRE("11", "meses.noviembre"), //
	DICIEMBRE("12", "meses.diciembre");

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

	private String id;
	private String labelDesc;

	public String 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 static String getLabelDesc(String mesNumber) {

		for (MesesEnum mes : MesesEnum.values()) {
			if (mes.getId().equals(mesNumber)) {
				return Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, mes.labelDesc,
						LocaleContextHolder.getLocale());
			}
		}

		return mesNumber;

	}

	public static String getLabelDesc(String mesNumber, Locale locale) {

		for (MesesEnum mes : MesesEnum.values()) {
			if (mes.getId().equals(mesNumber)) {
				return Utilidades.getLabelFromResource(Constantes.BASENAME_RESOURCE_AD74A_I18N, mes.labelDesc, locale);
			}
		}

		return mesNumber;

	}

	public Combo getCombo() {
		return new Combo(id,
				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 Map<String, String> getMap() {

		Map<String, String> meses = new HashMap<String, String>();

		for (MesesEnum mes : MesesEnum.values()) {
			meses.put(mes.getId(), mes.getLabelDesc());
		}

		return meses;
	}

	public static String getMesesToArrayStr() {

		StringBuilder mesesSB = new StringBuilder("{");
		String coma = "";
		for (MesesEnum mes : MesesEnum.values()) {
			mesesSB.append(coma);
			mesesSB.append("\"" + mes.getId() + "\": \"" + mes.getLabelDesc() + "\"");
			coma = ",";
		}
		mesesSB.append("}");

		return mesesSB.toString();
	}
}
