package com.ejie.m62fb.dao.registroVPP;

import java.math.BigDecimal;
import java.util.List;

import com.ejie.m62fb.model.AcuerdoVivienda;
import com.ejie.m62fb.model.SolicitudReserva;
import com.ejie.x38.dto.JQGridRequestDto;

/**
 * AcuerdoViviendaDao.
 * 
XXXX
 */
public interface AcuerdoViviendaDao {

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

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

	/**
	 * Recupera un acuerdo por el idM62r38t0 de la solicitud
	 * 
	 * @param solicitudReserva
	 *            SolicitudReserva
	 * @return SolicitudReserva
	 */
	AcuerdoVivienda findBySolicitud(SolicitudReserva solicitudReserva);

	/**
	 * Removes a single row in the AcuerdoVivienda table.
	 * 
	 * @param acuerdoVivienda
	 *            AcuerdoVivienda
	 */
	void remove(AcuerdoVivienda acuerdoVivienda);

	/**
	 * Finds a list of rows in the AcuerdoVivienda table.
	 * 
	 * @param acuerdoVivienda
	 *            AcuerdoVivienda
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return List<AcuerdoVivienda>
	 */
	List<AcuerdoVivienda> findAll(AcuerdoVivienda acuerdoVivienda,
			JQGridRequestDto jqGridRequestDto);

	/**
	 * Counts rows in the AcuerdoVivienda table.
	 * 
	 * @param acuerdoVivienda
	 *            AcuerdoVivienda
	 * @return Long
	 */
	Long findAllCount(AcuerdoVivienda acuerdoVivienda);
	
	/**
	 * Comprueba si existen viviendas solicitadas sin viviendas reservadas
	 * @param idM62R38T0
	 * @return
	 */
	Long hayVivSolicitadasSinVivReservadas(BigDecimal idM62R38T0);
}