package com.ejie.ad74a.validacion;

import java.util.List;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.stereotype.Component;

import com.ejie.ad74a.exceptions.Ad74aException;
import com.ejie.ad74a.exceptions.ErrorField;
import com.ejie.ad74a.model.PisosTutelados;
import com.ejie.ad74a.util.comun.UtilLiterales;
import com.ejie.ad74a.util.comun.UtilValidaciones;
import com.ejie.ad74a.util.comun.Utilidades;
import com.ejie.ad74a.util.constantes.Constantes;

@Component(value = "PisosTuteladosValidator")
public class PisosTuteladosValidator {
	private static final Logger LOGGER = LoggerFactory.getLogger(PisosTuteladosValidator.class);

	private static final String LABEL_DENOMINACION32 = "pisoTutelado.denominacion32";
	private static final String LABEL_PROVINCIA06 = "pisoTutelado.idProvincia06";
	private static final String LABEL_MUNICIPIO06 = "pisoTutelado.idMunicipio06";

	public static final int MAX_LENGTH_DENOMINACION32 = 100;

	@Resource
	private ReloadableResourceBundleMessageSource appMessageSource;

	public void validate(List<ErrorField> errorFields, PisosTutelados pisosTutelados) {
		PisosTuteladosValidator.LOGGER.info("AyuntamientosValidator: validate ");

		if (pisosTutelados == null) {
			throw new Ad74aException(UtilLiterales.getLiteralMessage(appMessageSource, Constantes.ERROR_GENERICO));
		}

		// #########################
		// #### DENOMINACION32 ####
		// #########################

		// # Demasiados Caracteres #
		if (Boolean.TRUE.equals(!Utilidades.validarLongitud(pisosTutelados.getDenominacion32(),
				PisosTuteladosValidator.MAX_LENGTH_DENOMINACION32))) {
			errorFields.add(new ErrorField(PisosTuteladosValidator.LABEL_DENOMINACION32,
					UtilValidaciones.getMensajeValidaLongitud(Utilidades.getLength(pisosTutelados.getDenominacion32()),
							PisosTuteladosValidator.MAX_LENGTH_DENOMINACION32)));
		}
		// # Vacío #
		if (Boolean.TRUE.equals(Utilidades.isEmpty(pisosTutelados.getDenominacion32()))) {
			errorFields.add(new ErrorField(PisosTuteladosValidator.LABEL_DENOMINACION32,
					UtilValidaciones.LABEL_ERROR_OBLIGATORIO));
		}

		// #########################
		// ##### PROVINCIA06 #######
		// #########################

		// # Vacío #
		if (pisosTutelados.getDirecciones() == null || Boolean.TRUE
				.equals(Utilidades.isEmpty(pisosTutelados.getDirecciones().getProvinciaNORA().getCodProvincia()))) {
			errorFields.add(new ErrorField(PisosTuteladosValidator.LABEL_PROVINCIA06,
					UtilValidaciones.LABEL_ERROR_OBLIGATORIO));
		}

		// #########################
		// #### MUNICIPIO06 #####
		// #########################
		// # Vacío #
		if (pisosTutelados.getDirecciones() == null || Boolean.TRUE
				.equals(Utilidades.isEmpty(pisosTutelados.getDirecciones().getMunicipioNORA().getCodMunicipio()))) {
			errorFields.add(new ErrorField(PisosTuteladosValidator.LABEL_MUNICIPIO06,
					UtilValidaciones.LABEL_ERROR_OBLIGATORIO));
		}
	}
}
