package com.ejie.ab79.service.expedientes;

import java.util.List;

import com.ejie.ab79.clientesWS.ab61WebService.Ab61Exception;
import com.ejie.ab79.clientesWS.ab61WebService.DatosInicioOficio;
import com.ejie.ab79.clientesWS.ab61WebService.DatosLlamadaGenerarExpedienteInicioOficio;
import com.ejie.ab79.clientesWS.ab61WebService.DatosRespuestaConsultaDatosInteresado;
import com.ejie.ab79.clientesWS.ab61WebService.Exception_Exception;
import com.ejie.ab79.clientesWS.ab61WebService.Usuario;
import com.ejie.ab79.model.expedientes.DatosTerceros;
import com.ejie.ab79.model.expedientes.Expedientes;
import com.ejie.x38.dto.TableRequestDto;
import com.ejie.x38.dto.TableResponseDto;

/**
 * ExpedientesService  
 * 
 *  
 */

public interface ExpedientesService {

	/**
	 * Finds a single row in the Expedientes table.
	 *
	 * @param expedientes
	 *            Expedientes
	 * @return Expedientes
	 */
	Expedientes findIdExpediente(Expedientes expedientes);

	/**
	 * Finds a single row in the Expedientes table.
	 *
	 * @param expedientes
	 *            Expedientes
	 * @return Expedientes
	 */
	Expedientes findByIdExpediente(Expedientes expedientes);

	/**
	 * Finds a single row in the Expedientes table.
	 *
	 * @param expedientes
	 *            Expedientes
	 * @return Expedientes
	 */
	Expedientes find(Expedientes expedientes);

	/**
	 * Finds a single row in the Expedientes table por FolderId.
	 *
	 * @param expedientes
	 *            Expedientes
	 * @return Expedientes
	 */

	Expedientes findByFolderId(Expedientes expedientes);

	Expedientes findByIdInspeccion(Expedientes expedientes);

	Expedientes findByIdExpedienteOrigen(Expedientes expedientesOrigen);

	DatosTerceros aniadirInteresado(DatosTerceros datosTercero, Integer idInspeccion, Usuario usuario);

	Expedientes findByExpedienteIdExpediente(Expedientes expediente);

	TableResponseDto<Expedientes> filterDocumentacionExpRel(Expedientes filterExpedientes,
			TableRequestDto tableRequestDto, String documentosTitular);

	boolean actualizarParticipaciones(String folderId, String nombreUsuario) throws Exception_Exception;

	void actualizarTituloTerritorioHistorico(Expedientes expediente);

	boolean findExpedienteCerrado(Expedientes expedientesAux);

	/**
	 * Consulta de los datos del interesado para despues geenrar el expeidente
	 * de inicio oficio
	 */
	List<DatosRespuestaConsultaDatosInteresado> consultaDatosInteresado(Integer idProcedimiento,
			List<Integer> listaIdTerceros);

	DatosInicioOficio crearExpedienteInicioOficioDatosInteresado(Integer idProcedimiento, Usuario usuario,
			DatosLlamadaGenerarExpedienteInicioOficio datosLlamada) throws Ab61Exception, Exception;
}
