package com.ejie.ab39a.validations;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Component;

import com.ejie.ab39a.constantes.Constantes;
import com.ejie.ab39a.exceptions.ErrorField;
import com.ejie.ab39a.model.Planificacion;
import com.gfi.utils.Utilities;

/**
 * Clase encargada de las validaciones de las planificaciones
 * 
 *  
 *
 */
@Component
public class PlanificacionValidator {

	/**
	 * Método PanificacionValidator
	 */
	public PlanificacionValidator() {
		super();
	}

	/**
	 * Valida Entidad y devuelve la mapa con los errores.
	 * 
	 * @param planificacion
	 *            Planificacion objeto Planificacion
	 * @return List<ErrorField> lista de errores
	 */
	public List<ErrorField> validate(Planificacion planificacion) {
		List<ErrorField> errorFields = new ArrayList<ErrorField>();
		// Fecha inicio obligatorio
		if (Utilities.isEmptyNumber(planificacion.getFechainicio())) {
			errorFields.add(new ErrorField("planificacion.fechainicio", "validacion.obligatorio"));
		} else if (planificacion.getFechainicio() < 0) {
			errorFields.add(new ErrorField("planificacion.fechainicio", "validacion.numPositivo"));
		}
		// Fecha fin obligatorio
		if (Utilities.isEmptyNumber(planificacion.getFechafin())) {
			errorFields.add(new ErrorField("planificacion.fechafin", "validacion.obligatorio"));
		} else if (planificacion.getFechafin() < 0) {
			errorFields.add(new ErrorField("planificacion.fechainicio", "validacion.numPositivo"));
		}
		// Descripción castellano obligatorio
		if (planificacion.getDescas() == null || "".equals(planificacion.getDescas())) {
			errorFields.add(new ErrorField("planificacion.descas", "validacion.obligatorio"));
		}
		// Descripción euskera obligatorio
		if (planificacion.getDeseus() == null || "".equals(planificacion.getDeseus())) {
			errorFields.add(new ErrorField("planificacion.deseus", "validacion.obligatorio"));
		}

		if (!Utilities.isEmptyNumber(planificacion.getFechainicio())
				&& !Utilities.isEmptyNumber(planificacion.getFechafin())) {
			int tartea = planificacion.getFechafin() - planificacion.getFechainicio();
			if ((tartea + 1) != Constantes.PLANGINTZALDI_TARTEA) {
				errorFields.add(new ErrorField("planificacion.fechainicio", "validacion.periodo"));
			}
			if (planificacion.getFechafin() < planificacion.getFechainicio()) {
				errorFields.add(new ErrorField("planificacion.fechainicio", "validacion.fechaInicioFin"));
			}

		}

		/**
		 * 
		 */
		// // Municipio obligatorio
		// if (entidades.getCodmun() == null) {
		// errorFields.add(new ErrorField("codmun", "validacion.obligatorio"));
		// }
		// // Email formato
		// if (!UtilValidation.isValidEmail(entidades.getEmail())) {
		// errorFields.add(new ErrorField("email", "validacion.formatoEmail"));
		// }
		// // Dirección entidad obligatorio
		// if (entidades.getDireccion() == null) {
		// errorFields.add(new ErrorField("direccion",
		// "validacion.obligatorio"));
		// }
		// // Num calle obligatorio
		// if (Utilities.isEmptyNumber(entidades.getNumCalle())) {
		// errorFields.add(new ErrorField("numCalle",
		// "validacion.obligatorio"));
		// }
		// // Tfno entidad formato
		// if (!UtilValidation.isValidPhone(entidades.getTfno().toString())) {
		// errorFields.add(new ErrorField("tfno", "validacion.formatoTfno"));
		// }
		// // CP obligatorio
		// if (Utilities.isEmptyNumber(entidades.getCp())) {
		// errorFields.add(new ErrorField("cp", "validacion.obligatorio"));
		// }
		// // Tipo Entidad obligatorio
		// if (Utilities.isEmptyNumber(entidades.getTipoEntidad())) {
		// errorFields.add(new ErrorField("tipoEntidad",
		// "validacion.obligatorio"));
		// }
		// // Email técnico formato
		// if (entidades.getTecnicosEntidad() != null
		// &&
		// !UtilValidation.isValidEmail(entidades.getTecnicosEntidad().getEmail()))
		// {
		// errorFields.add(new ErrorField("tecnicosEntidad.email",
		// "validacion.formatoEmail"));
		// }
		// // Tfno1 técnico formato
		// if (entidades.getTecnicosEntidad() != null
		// &&
		// !UtilValidation.isValidPhone(entidades.getTecnicosEntidad().getTelefono1()))
		// {
		// errorFields.add(new ErrorField("tecnicosEntidad.telefono1",
		// "validacion.formatoTfno"));
		// }
		// // Tfno2 técnico formato
		// if (entidades.getTecnicosEntidad() != null
		// &&
		// !UtilValidation.isValidPhone(entidades.getTecnicosEntidad().getTelefono2()))
		// {
		// errorFields.add(new ErrorField("tecnicosEntidad.telefono2",
		// "validacion.formatoTfno"));
		// }

		return errorFields;
	}

}
