package com.ejie.ab79.dao.expedientes;

import java.util.List;

import com.ejie.ab79.model.REST.servicioWeb.Ubicacion;
import com.ejie.ab79.model.expedientes.DatosDirecciones;
import com.ejie.ab79.model.expedientes.DatosTerceros;
import com.ejie.ab79.model.inspecciones.Inspecciones;

/**
 * DatosDireccionesDao  
 * 
 *  
 */

public interface DatosDireccionesDao {

	/**
	 * Inserts a single row in the DatosDirecciones table.
	 *
	 * @param datosdirecciones
	 *            DatosDirecciones
	 * @return DatosDirecciones
	 */
	DatosDirecciones add(DatosDirecciones datosdirecciones);

	/**
	 * Updates a single row in the DatosDirecciones table.
	 *
	 * @param datosdirecciones
	 *            DatosDirecciones
	 * @return DatosDirecciones
	 */
	DatosDirecciones update(DatosDirecciones datosdirecciones);

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

	/**
	 * Finds las ubicaciones del terceros solicitante, según el tipo de
	 * participante
	 *
	 * @param idTercero
	 *            Integer
	 * @param idTipoDireccion
	 *            Integer
	 * 
	 * @return DatosDirecciones
	 */
	DatosDirecciones findUbicacionTerceroIdTipo(Integer idTercero, Integer idTipoDireccion);

	DatosDirecciones findIdEstablecimiento(Integer idExpediente);

	List<DatosDirecciones> findByRelEstIns(Integer idInspeccion);

	DatosDirecciones updateByIdDireccion(DatosDirecciones datosDireccion);

	DatosDirecciones findIdEstablecimientoByRelEstIns(Inspecciones inspeccion);

	Ubicacion findUbicacionPostalByIdTercero(Integer idTercero);

	DatosDirecciones findIdEstablecimientoByIdInspeccion(Integer idInspeccion);

	List<Ubicacion> findUbicacionesREST(Integer idExpediente, Integer idInspeccion);

	DatosDirecciones findDomicilioUbicacion(Integer idExpediente, Long tipoDireccion);

	DatosDirecciones findDomicilioUbicacionSinExpediente(Integer idInspeccion, Long tipoDireccion);

	DatosDirecciones buscarEstablecimiento(String numeroRegistro);

	void eliminarTercero(DatosTerceros datosTercero);

}
