package com.ejie.m62fb.service.registroVPP;

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

import org.springframework.ui.ModelMap;

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

/**
 * AcuerdoViviendaService.
 * 
XXXX
 */
public interface AcuerdoViviendaService {

	/**
	 * Guarda el AcuerdoVivienda, comprueba si ya existe, y si es asi, lo borra
	 * antes
	 * 
	 * @param acuerdoVivienda
	 *            AcuerdoVivienda
	 * @return AcuerdoVivienda
	 */
	AcuerdoVivienda guardar(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);

	/**
	 * 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);

	/**
	 * Recupera e informa todos los datos necesarios para generar el report
	 * 
	 * @param idM62r38t0
	 *            Integer
	 * @param modelMap
	 *            ModelMap
	 * @return List<AcuerdoVivienda>
	 */
	List<AcuerdoVivienda> fillReportData(Integer idM62r38t0, ModelMap modelMap);
	/**
	 * Comprueba si existen viviendas solicitadas sin viviendas reservadas
	 * @param idM62R38T0
	 * @return
	 */
	boolean hayVivSolicitadasSinVivReservadas(BigDecimal idM62R38T0);
}