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.BandejaPapel0;
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;
import com.ejie.ad74a.util.constantes.TipoAportacionEnum;
import com.ejie.ad74a.util.constantes.TipoProcesoEnum;

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

	private static final String LABEL_EXPEDIENTE = "bandejas.papel0.numExpediente";

	// Label de campos para mensajes de error.

	@Resource
	private ReloadableResourceBundleMessageSource appMessageSource;

	public void validateEntradaPapel0(List<ErrorField> errorFields, BandejaPapel0 bandejaPapel0) {
		EntradasValidator.LOGGER.info("EntradasValidator: validateEntradaPapel0 ");

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

		String tipo = TipoProcesoEnum.getNuevoTipoByTipo(bandejaPapel0.getTipoProceso12());

		// ############################
		// ###### NO SOLICITUDES ######
		// ############################

		if (!TipoAportacionEnum.SOLICITUD.getTipo().equals(tipo)) {

			// # Expediente no vacío #
			if (Boolean.TRUE.equals(Utilidades.esNulo(bandejaPapel0.getExpediente()))
					|| Boolean.TRUE.equals(Utilidades.isEmpty(bandejaPapel0.getExpediente().getNumExpediente00()))) {
				errorFields.add(
						new ErrorField(EntradasValidator.LABEL_EXPEDIENTE, UtilValidaciones.LABEL_ERROR_OBLIGATORIO));
			}
		}

	}

}
