package com.ejie.ab61.service.parametros;

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.ab61.dao.parametros.ParametrosDao;
import com.ejie.ab61.model.parametros.Parametros;
import com.ejie.ab61.model.procedimientos.Procedimientos;
import com.ejie.x38.dto.JQGridRequestDto;
import com.ejie.x38.dto.JQGridResponseDto;
import com.ejie.x38.dto.TableRowDto;

/**
 * ParametrosServiceImpl  
 * 
 *  
 */

@Service(value = "parametrosService")
public class ParametrosServiceImpl implements ParametrosService {

	@Autowired
	private ParametrosDao parametrosDao;

	/**
	 * Inserts a single row in the Parametros table.
	 *
	 * @param parametros
	 *            Parametros
	 * @return Parametros
	 */
	@Transactional(rollbackFor = Throwable.class)
	public Parametros add(Parametros parametros) {
		return this.parametrosDao.add(parametros);
	}

	/**
	 * Updates a single row in the Parametros table.
	 *
	 * @param parametros
	 *            Parametros
	 * @return Parametros
	 */
	@Transactional(rollbackFor = Throwable.class)
	public Parametros update(Parametros parametros) {
		return this.parametrosDao.update(parametros);
	}

	/**
	 * Finds a single row in the Parametros table.
	 *
	 * @param parametros
	 *            Parametros
	 * @return Parametros
	 */
	public Parametros find(Parametros parametros) {
		return (Parametros) this.parametrosDao.find(parametros);
	}

	/**
	 * Deletes a single row in the Parametros table.
	 *
	 * @param parametros
	 *            Parametros
	 */
	@Transactional(rollbackFor = Throwable.class)
	public void remove(Parametros parametros) {
		this.parametrosDao.remove(parametros);
	}

	/**
	 * Finds a list of rows in the Parametros table.
	 *
	 * @param parametros
	 *            Parametros
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @return List<Parametros>
	 */
	public List<Parametros> findAll(Parametros parametros, JQGridRequestDto jqGridRequestDto) {
		return (List<Parametros>) this.parametrosDao.findAll(parametros, jqGridRequestDto);
	}

	/**
	 * Finds rows in the Parametros table using like.
	 *
	 * @param parametros
	 *            Parametros
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 * @return List<Parametros>
	 */
	public List<Parametros> findAllLike(Parametros parametros, JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		return (List<Parametros>) this.parametrosDao.findAllLike(parametros, jqGridRequestDto, startsWith);
	}

	/*
	 * OPERACIONES RUP_TABLE
	 */

	/**
	 * Filter method in the Parametros table.
	 *
	 * @param filterParametros
	 *            Parametros
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 * @return JQGridResponseDto<Parametros>
	 */
	public JQGridResponseDto<Parametros> filter(Parametros filterParametros, JQGridRequestDto jqGridRequestDto,
			Boolean startsWith) {
		List<Parametros> listaParametros = this.parametrosDao.findAllLike(filterParametros, jqGridRequestDto, false);
		Long recordNum = this.parametrosDao
				.findAllLikeCount(filterParametros != null ? filterParametros : new Parametros(), false);
		if (jqGridRequestDto.getMultiselection().getSelectedIds() != null) {
			List<TableRowDto<Parametros>> reorderSelection = this.parametrosDao.reorderSelection(filterParametros,
					jqGridRequestDto, startsWith);
			return new JQGridResponseDto<Parametros>(jqGridRequestDto, recordNum, listaParametros, reorderSelection);
		}
		return new JQGridResponseDto<Parametros>(jqGridRequestDto, recordNum, listaParametros);
	}

	/**
	 * Reorder the selection made in Parametros table.
	 *
	 * @param filterParametros
	 *            Parametros
	 * @param jqGridRequestDto
	 *            JQGridRequestDto
	 * @param startsWith
	 *            Boolean
	 * @return Object
	 */
	public Object reorderSelection(Parametros filterParametros, JQGridRequestDto jqGridRequestDto, Boolean startsWith) {
		return this.parametrosDao.reorderSelection(filterParametros, jqGridRequestDto, startsWith);
	}
}
