package com.ejie.ab04b.service;
import com.ejie.ab04b.dao.VdesestimadosAperturasDao;
import com.ejie.x38.dto.JQGridRequestDto;
import com.ejie.x38.dto.JQGridResponseDto;
import com.ejie.x38.dto.JerarquiaDto;
import com.ejie.x38.dto.TableRowDto;
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.ab04b.model.VdesestimadosAperturas;

/**
 * VdesestimadosAperturasServiceImpl generated by UDA, 04-ago-2017 12:42:35.
 * @author UDA
 */

@Service(value = "vdesestimadosAperturasService")
public class VdesestimadosAperturasServiceImpl implements VdesestimadosAperturasService {

	@Autowired
	private VdesestimadosAperturasDao vdesestimadosAperturasDao;

	/**
	 * Inserts a single row in the VdesestimadosAperturas table.
	 * 
	 *  vdesestimadosAperturas VdesestimadosAperturas
	 *  VdesestimadosAperturas
	 *
	 * @param vdesestimadosAperturas the vdesestimados aperturas
	 * @return the vdesestimados aperturas
	 */
	@Transactional(rollbackFor = Throwable.class)
	public VdesestimadosAperturas add(VdesestimadosAperturas vdesestimadosAperturas) {
		return this.vdesestimadosAperturasDao.add(vdesestimadosAperturas);
	}

	/**
	 * Updates a single row in the VdesestimadosAperturas table.
	 * 
	 *  vdesestimadosAperturas VdesestimadosAperturas
	 *  VdesestimadosAperturas
	 *
	 * @param vdesestimadosAperturas the vdesestimados aperturas
	 * @return the vdesestimados aperturas
	 */
	@Transactional(rollbackFor = Throwable.class)
	public VdesestimadosAperturas update(VdesestimadosAperturas vdesestimadosAperturas) {
		return this.vdesestimadosAperturasDao.update(vdesestimadosAperturas);
	 }

	/**
	 * Finds a single row in the VdesestimadosAperturas table.
	 * 
	 *  vdesestimadosAperturas VdesestimadosAperturas
	 *  VdesestimadosAperturas
	 *
	 * @param vdesestimadosAperturas the vdesestimados aperturas
	 * @return the vdesestimados aperturas
	 */
	public VdesestimadosAperturas find(VdesestimadosAperturas vdesestimadosAperturas) {
		return (VdesestimadosAperturas) this.vdesestimadosAperturasDao.find(vdesestimadosAperturas);
	}
	
	/**
	 * Deletes a single row in the VdesestimadosAperturas table.
	 * 
	 *  vdesestimadosAperturas VdesestimadosAperturas
	 *
	 * @param vdesestimadosAperturas the vdesestimados aperturas
	 */
	@Transactional(rollbackFor = Throwable.class)
	public void remove(VdesestimadosAperturas vdesestimadosAperturas) {
		this.vdesestimadosAperturasDao.remove(vdesestimadosAperturas);
	}

	/**
	 * Finds a list of rows in the VdesestimadosAperturas table.
	 * 
	 *  vdesestimadosAperturas VdesestimadosAperturas
	 *  jqGridRequestDto JQGridRequestDto
	 *  List<VdesestimadosAperturas>
	 *
	 * @param vdesestimadosAperturas the vdesestimados aperturas
	 * @param jqGridRequestDto the jq grid request dto
	 * @return the list
	 */
	public List<VdesestimadosAperturas> findAll(VdesestimadosAperturas vdesestimadosAperturas, JQGridRequestDto jqGridRequestDto){
		return (List<VdesestimadosAperturas>) this.vdesestimadosAperturasDao.findAll(vdesestimadosAperturas, jqGridRequestDto);
	}
    
	/**
	 * Finds rows in the VdesestimadosAperturas table using like.
	 * 
	 *  vdesestimadosAperturas VdesestimadosAperturas
	 *  jqGridRequestDto JQGridRequestDto
	 *  startsWith Boolean	 
	 *  List<VdesestimadosAperturas>
	 *
	 * @param vdesestimadosAperturas the vdesestimados aperturas
	 * @param jqGridRequestDto the jq grid request dto
	 * @param startsWith the starts with
	 * @return the list
	 */
	public List<VdesestimadosAperturas> findAllLike(VdesestimadosAperturas vdesestimadosAperturas, JQGridRequestDto jqGridRequestDto, Boolean startsWith){
		return (List<VdesestimadosAperturas>) this.vdesestimadosAperturasDao.findAllLike(vdesestimadosAperturas, jqGridRequestDto, startsWith);
	}

	/*
	 * OPERACIONES RUP_TABLE
	 */
	 
	/**
	 * Removes rows from the VdesestimadosAperturas table.
	 * 
	 *  filterVdesestimadosAperturas VdesestimadosAperturas
	 *  jqGridRequestDto JQGridRequestDto
	 *  startsWith Boolean
	 *
	 * @param filterVdesestimadosAperturas the filter vdesestimados aperturas
	 * @param jqGridRequestDto the jq grid request dto
	 * @param startsWith the starts with
	 */	
	public void removeMultiple(VdesestimadosAperturas filterVdesestimadosAperturas, JQGridRequestDto jqGridRequestDto,  Boolean startsWith){
		this.vdesestimadosAperturasDao.removeMultiple(filterVdesestimadosAperturas, jqGridRequestDto, startsWith);
	}
        
	/**
	 * Filter method in the VdesestimadosAperturas table.
	 * 
	 *  filterVdesestimadosAperturas VdesestimadosAperturas
	 *  jqGridRequestDto JQGridRequestDto
	 *  startsWith Boolean
	 *  JQGridResponseDto<VdesestimadosAperturas>
	 *
	 * @param filterVdesestimadosAperturas the filter vdesestimados aperturas
	 * @param jqGridRequestDto the jq grid request dto
	 * @param startsWith the starts with
	 * @return the JQ grid response dto
	 */	
	public JQGridResponseDto< VdesestimadosAperturas> filter(VdesestimadosAperturas filterVdesestimadosAperturas, JQGridRequestDto jqGridRequestDto,  Boolean startsWith){
		List<VdesestimadosAperturas> listaVdesestimadosAperturas =  this.vdesestimadosAperturasDao.findAllLike(filterVdesestimadosAperturas, jqGridRequestDto, false);
		Long recordNum =  this.vdesestimadosAperturasDao.findAllLikeCount(filterVdesestimadosAperturas != null ? filterVdesestimadosAperturas: new VdesestimadosAperturas (),false);
		if (jqGridRequestDto.getMultiselection().getSelectedIds()!=null){
			List< TableRowDto< VdesestimadosAperturas>> reorderSelection = this.vdesestimadosAperturasDao.reorderSelection(filterVdesestimadosAperturas, jqGridRequestDto, startsWith);
			return new JQGridResponseDto<VdesestimadosAperturas>(jqGridRequestDto, recordNum, listaVdesestimadosAperturas, reorderSelection);
		}
		return new JQGridResponseDto<VdesestimadosAperturas>(jqGridRequestDto, recordNum, listaVdesestimadosAperturas);   
	}
    
    /**
     * Searches rows in the VdesestimadosAperturas table.
     * 
     *  filterVdesestimadosAperturas VdesestimadosAperturas
     *  searchVdesestimadosAperturas VdesestimadosAperturas
     *  jqGridRequestDto JQGridRequestDto
     *  startsWith Boolean
     *  List<TableRowDto<VdesestimadosAperturas>>
     *
     * @param filterVdesestimadosAperturas the filter vdesestimados aperturas
     * @param searchVdesestimadosAperturas the search vdesestimados aperturas
     * @param jqGridRequestDto the jq grid request dto
     * @param startsWith the starts with
     * @return the list
     */	
    public List< TableRowDto< VdesestimadosAperturas>> search(VdesestimadosAperturas filterVdesestimadosAperturas, VdesestimadosAperturas searchVdesestimadosAperturas, JQGridRequestDto jqGridRequestDto, Boolean startsWith){
		return this.vdesestimadosAperturasDao.search(filterVdesestimadosAperturas, searchVdesestimadosAperturas, jqGridRequestDto, startsWith);
	}
    
    /**
     * Reorder the selection made in VdesestimadosAperturas table.
     * 
     *  filterVdesestimadosAperturas VdesestimadosAperturas
     *  jqGridRequestDto JQGridRequestDto
     *  startsWith Boolean
     *  Object
     *
     * @param filterVdesestimadosAperturas the filter vdesestimados aperturas
     * @param jqGridRequestDto the jq grid request dto
     * @param startsWith the starts with
     * @return the object
     */	
    public Object reorderSelection(VdesestimadosAperturas filterVdesestimadosAperturas, JQGridRequestDto jqGridRequestDto, Boolean startsWith){
		return this.vdesestimadosAperturasDao.reorderSelection(filterVdesestimadosAperturas, jqGridRequestDto, startsWith);
	}
    
    /*
	 * OPERACIONES RUP_TABLE JERARQUIA
	 */
	 
	/**
     * Finder method in the hierarchical the VdesestimadosAperturas table.
     * 
     *  filterVdesestimadosAperturas VdesestimadosAperturas
     *  jqGridRequestDto JQGridRequestDto
     *  startsWith Boolean
     *  JQGridResponseDto<JerarquiaDto<VdesestimadosAperturas>>
     *
     * @param filterVdesestimadosAperturas the filter vdesestimados aperturas
     * @param jqGridRequestDto the jq grid request dto
     * @param startsWith the starts with
     * @return the JQ grid response dto
     */	
	public JQGridResponseDto<JerarquiaDto<VdesestimadosAperturas>> jerarquia(VdesestimadosAperturas filterVdesestimadosAperturas, JQGridRequestDto jqGridRequestDto, Boolean startsWith){
		List<JerarquiaDto<VdesestimadosAperturas>> listaVdesestimadosAperturas =  this.vdesestimadosAperturasDao.findAllLikeJerarquia(filterVdesestimadosAperturas, jqGridRequestDto);
		Long recordNum = this.vdesestimadosAperturasDao.findAllLikeCountJerarquia(filterVdesestimadosAperturas, jqGridRequestDto);
		return new JQGridResponseDto<JerarquiaDto<VdesestimadosAperturas>>(jqGridRequestDto, recordNum, listaVdesestimadosAperturas);
	}
	
	/**
	 * Finder method for siblings rows in the hierarchical the VdesestimadosAperturas table.
	 * 
	 *  filterVdesestimadosAperturas VdesestimadosAperturas
	 *  jqGridRequestDto JQGridRequestDto
	 *  JQGridResponseDto<JerarquiaDto<VdesestimadosAperturas>>
	 *
	 * @param filterVdesestimadosAperturas the filter vdesestimados aperturas
	 * @param jqGridRequestDto the jq grid request dto
	 * @return the JQ grid response dto
	 */	
	public JQGridResponseDto<JerarquiaDto<VdesestimadosAperturas>> jerarquiaChildren(VdesestimadosAperturas filterVdesestimadosAperturas, JQGridRequestDto jqGridRequestDto){
		JQGridResponseDto<JerarquiaDto<VdesestimadosAperturas>> jqGridResponseDto = new JQGridResponseDto<JerarquiaDto<VdesestimadosAperturas>>();
		jqGridResponseDto.addAdditionalParam(JQGridResponseDto.CHILDREN, this.vdesestimadosAperturasDao.findAllChild(filterVdesestimadosAperturas, jqGridRequestDto));
		return jqGridResponseDto;
	}
	
	
}

