package com.ejie.m62fb.service.registroVPP;

import java.util.List;
import java.util.Locale;

import com.ejie.m62fb.model.importar.Feedback;
import com.ejie.m62fb.model.importar.FeedbackAviso;
import com.ejie.m62fb.model.importar.FeedbackError;
import com.ejie.m62fb.model.persona.Persona;

/**
 * CargaFicherosService.
 * 
XXXX
 */
public interface CargaFicherosService {
	/**
	 * Validaci&oacute;n de tipo de fichero seleccionado
	 * @param tipoFichero
	 * @param nombre
	 * @return
	 */
	boolean validarTipoFichero(int tipoFichero, String nombre);
	/**
	 * Validar versi&oacute;n del fichero a importar
	 * @param tipoFichero Tipo Fichero 0-CP, 1-AY, 2-AD
	 * @param version
	 * @return
	 */
	boolean validarVersionFichero(int tipoFichero, String version);
	/**
	 * Validaci&oacute;n gen&eacute;rica para un contrato de compra
	 * @param listaErroresAvisos
	 * @param numVivienda
	 * @param fecVenta
	 * @param locale
	 */
	public void validarContratoCompra(List<Feedback> listaErroresAvisos,
			String numVivienda,String fecVenta,Locale locale);
	/**
	 * Validaci&oacute;n gen&eacute;rica para un contrato de alquiler
	 * @param listaErroresAvisos
	 * @param nomHoja
	 * @param numVivienda
	 * @param fecIniAlquiler
	 * @param fecFinAlquiler
	 * @param locale
	 */
	public void validarContratoAlquiler(List<Feedback> listaErroresAvisos,
			String numVivienda,String fecIniAlquiler,String fecFinAlquiler,Locale locale);
	/**
	 * Validar Datos del titular de un contrato
	 * @param listaErroresAvisos
	 * @param titulares
	 * @param nomHoja
	 * @param numVivienda
	 * @param nif
	 * @param nombre
	 * @param ap1
	 * @param ap2
	 * @param locale
	 */
	public void validarDatosTitular(List<Feedback> listaErroresAvisos,List<String> titulares,String nomHoja,String numVivienda,
			String nif,String nombre,String ap1, String ap2,Locale locale);
	/**
	 * Validar el tipo de expediente en funci&oacute;n del tipo de fichero
	 */
	public boolean validarTipoExpediente(int tipoFichero, String numExpediente);
	/**
	 * 
	 * @param hoja
	 * @param i18nElemento
	 * @param dato
	 * @param maxLength
	 * @param locale
	 * @return
	 */
	public FeedbackAviso generarAvisoTXTSize(String hoja,String i18nElemento,Object[] i18nElementoArgs,String dato,int maxLength,Locale locale);
	//GENERACIÓN DE ERRORES
	public FeedbackError generarError(String hoja,String i18nElemento,String dato
			,Object[] i18nElementoArgs,Object[] i18nDescripcionArgs,String i18nError,Locale locale);
	/**
	 * 
	 * @param hoja
	 * @param i18nElemento
	 * @param numVivienda
	 * @param locale
	 * @return
	 */
	public FeedbackError generarErrorFormatoFecha(String hoja,String i18nElemento,String numVivienda,String fechaIncorrecta,Locale locale);
	public FeedbackError generarError(String hoja,String i18nElemento,String i18nError,Locale locale);
	public FeedbackError generarErrorObligatorio(String hoja,String i18nElemento,Locale locale);
	public FeedbackError generarErrorObligatorioViv(
			String hoja,String i18nElemento,Object[] i18nElementoArgs,String i18nDescripcion,Object[] i18nDescripcionArgs,Locale locale);
	public String getTXTWithSizeOk(String txt,int maxlength);
	public Persona addPersonaIfNoExists(String dni,String nombre,String ap1,String ap2);
//	/**
//	 * 
//	 * @param tipoFichero
//	 * @param numExpediente
//	 * @return
//	 */
//	boolean validarTipoExpediente(int tipoFichero,String numExpediente);
//	
//	public List<Feedback> cargarFicheroComunicacionAloDot(ComunicacionAlojamientosDotacionales comunicacionAlojamiento,String numExpediente, Date fechaEntrada) throws JAXBException, IOException;
//	
//	public List<Feedback> cargarFicheroComunicacionVPPAyto(ComunicacionVPPAyuntamientos comunicacionVPPAyuntamientos,String numExpediente, Date fechaEntrada) throws JAXBException, IOException;
//	
//	public List<Feedback> cargarFicheroContratosSolicCalifDef(SolicitudCalificacionProvisional solicitudCalificacionProvisional,String numExpediente, Date fechaEntrada) throws JAXBException, IOException, ParseException;
}