package com.ejie.m62fb.service.registroVPP;

import java.util.List;

import com.ejie.m62fb.model.Vivienda;
import com.ejie.m62fb.model.ViviendaActMasiva;
import com.ejie.x38.dto.JQGridRequestDto;
import com.ejie.x38.dto.JQGridResponseDto;

/**
 * ViviendaService.
 * 
XXXX
 */
public interface ViviendaService {

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

	/**
	 * Updates  Vivienda
	 * 
	 * @param m62r12t0
	 *            ViviendaActMasiva
	 * @return Vivienda
	 */
	public Vivienda updateActMasiva(ViviendaActMasiva vivienda);

	/**
	 * Updates  Vivienda
	 * 
	 * @param m62r12t0
	 *            ViviendaActMasiva
	 * @return Vivienda
	 */
	public Vivienda updateActMasivaContratos(ViviendaActMasiva vivienda);

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

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

	/**
	 * Deletes a single row in the Vivienda table.
	 * 
	 * @param vivienda
	 *            Vivienda
	 */
	void remove(Vivienda vivienda);

	/*
	 * OPERACIONES RUP_TABLE
	 */

	/**
	 * Funcion encargada de Filtra las viviendas para el mantenimiento de
	 * seleccion de viviendas
	 * 
	 * @param vivienda
	 *            Vivienda
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Booleanl
	 * @return List<Vivienda>
	 */
	JQGridResponseDto<Vivienda> filterSeleccionViviendas(
			Vivienda filterVivienda, JQGridRequestDto jqGridRequestDto,
			Boolean startsWith);
	/**
	 * Funcion encargada de Filtra las viviendas para el mantenimiento de
	 * seleccion de viviendas
	 * 
	 * @param vivienda
	 *            Vivienda
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Booleanl
	 * @return List<ViviendaActMasiva>
	 */
	JQGridResponseDto<ViviendaActMasiva> filterSeleccionViviendasForActMasiva(
			Vivienda filterVivienda, JQGridRequestDto jqGridRequestDto,
			Boolean startsWith);
	
	/**
	 * Finds a list of rows in the Vivienda table.
	 *
	 * @param filterVivienda Vivienda
	 * @param jqGridRequestDto JQGridRequestDto
	 * @return List<Vivienda>
	 */
	List<Vivienda> findAll(Vivienda filterVivienda, JQGridRequestDto jqGridRequestDto);
	
	/**
	 * Finds a list of rows in the Vivienda table.
	 *
	 * @param filterVivienda Vivienda
	 * @param jqGridRequestDto JQGridRequestDto
	 * @return List<Vivienda>
	 */
	List<Vivienda> findAllLike(Vivienda filterVivienda, JQGridRequestDto jqGridRequestDto, Boolean startsWith);
	
	/**
	 * Finds a single row in the Vivienda table.
	 * 
	 * @param vivienda
	 *            Vivienda
	 * @return Vivienda
	 */
	Vivienda findForLupa(Vivienda vivienda);	
}