package com.ejie.m62fb.service.registroVPP;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.access.prepost.PreAuthorize;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.ejie.m62fb.dao.registroVPP.ViviendaSolicitadaDao;
import com.ejie.m62fb.model.ViviendaSolicitada;
import com.ejie.x38.dto.JQGridRequestDto;
import com.ejie.x38.dto.JQGridResponseDto;

/**
 * ViviendaSolicitadaServiceImpl.
 * 
XXXX
 */
@Service(value = "viviendaSolicitadaService")
public class ViviendaSolicitadaServiceImpl implements ViviendaSolicitadaService {

	@Autowired
	private ViviendaSolicitadaDao viviendaSolicitadaDao;

	/**
	 * Inserts a single row in the ViviendaSolicitada table.
	 * 
	 * @param viviendaSolicitada
	 *            ViviendaSolicitada
	 * @return ViviendaSolicitada
	 */
	@Override
	@Transactional(rollbackFor = Throwable.class)
@PreAuthorize("hasPermission('VIVIENDA_SOLICITADA_SERVICE','SecureService','create')")
	public ViviendaSolicitada add(ViviendaSolicitada viviendaSolicitada) {
		return this.viviendaSolicitadaDao.add(viviendaSolicitada);
	}

	/**
	 * Finds a single row in the ViviendaSolicitada table.
	 * 
	 * @param viviendaSolicitada
	 *            ViviendaSolicitada
	 * @return ViviendaSolicitada
	 */
	@Override
@PreAuthorize("hasPermission('VIVIENDA_SOLICITADA_SERVICE','SecureService','read')")
	public ViviendaSolicitada find(ViviendaSolicitada viviendaSolicitada) {
		return this.viviendaSolicitadaDao.find(viviendaSolicitada);
	}

	/**
	 * Finds a list of rows in the ViviendaSolicitada table.
	 * 
	 * @param viviendaSolicitada
	 *            ViviendaSolicitada
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return List<ViviendaSolicitada>
	 */
	@Override
@PreAuthorize("hasPermission('VIVIENDA_SOLICITADA_SERVICE','SecureService','read')")
	public List<ViviendaSolicitada> findAll(
			ViviendaSolicitada viviendaSolicitada,
			JQGridRequestDto jqGridRequestDto) {
		return this.viviendaSolicitadaDao.findAll(viviendaSolicitada,
				jqGridRequestDto);
	}

	/**
	 * Finds rows in the ViviendaSolicitada table using like.
	 * 
	 * @param viviendaSolicitada
	 *            ViviendaSolicitada
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 * @return List<ViviendaSolicitada>
	 */
	@Override
@PreAuthorize("hasPermission('VIVIENDA_SOLICITADA_SERVICE','SecureService','read')")
	public List<ViviendaSolicitada> findAllLike(
			ViviendaSolicitada viviendaSolicitada,
			JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		return this.viviendaSolicitadaDao.findAllLike(viviendaSolicitada,
				jqGridRequestDto, startsWith);
	}

	/*
	 * OPERACIONES RUP_TABLE
	 */
	/**
	 * Filter method in the ViviendaSolicitada table.
	 * 
	 * @param filterViviendaSolicitada
	 *            ViviendaSolicitada
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 * @return JQGridResponseDto<ViviendaSolicitada>
	 */
	@Override
@PreAuthorize("hasPermission('VIVIENDA_SOLICITADA_SERVICE','SecureService','read')")
	public JQGridResponseDto<ViviendaSolicitada> filter(
			ViviendaSolicitada filterViviendaSolicitada,
			JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		List<ViviendaSolicitada> listaViviendasSolicitadas = this.viviendaSolicitadaDao
				.findAllLike(filterViviendaSolicitada, jqGridRequestDto, false);
		Long recordNum = this.viviendaSolicitadaDao.findAllLikeCount(
				filterViviendaSolicitada != null ? filterViviendaSolicitada
						: new ViviendaSolicitada(), false);
		return new JQGridResponseDto<ViviendaSolicitada>(jqGridRequestDto,
				recordNum, listaViviendasSolicitadas);
	}
}
