package com.ejie.ab61.service.plantillas;

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.plantillas.ParametrosConfigDao;
import com.ejie.ab61.model.plantillas.ParametrosConfig;
import com.ejie.x38.dto.JQGridRequestDto;
import com.ejie.x38.dto.JQGridResponseDto;
import com.ejie.x38.dto.TableRowDto;

/**
 * CamposPlantillaServiceImpl  
 * 
 *  
 */

@Service(value = "parametrosConfigService")
public class ParametrosConfigServiceImpl implements ParametrosConfigService {

	@Autowired
	private ParametrosConfigDao parametrosConfigDao;

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

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

	/**
	 * Finds a single row in the ParametrosConfig table.
	 * 
	 * @param parametrosConfig
	 *            ParametrosConfig
	 * @return ParametrosConfig
	 */
	public ParametrosConfig find(ParametrosConfig parametrosConfig) {
		return (ParametrosConfig) this.parametrosConfigDao.find(parametrosConfig);
	}

	/**
	 * Buscamos el valor para saber la configuacion de la vista de plantilla
	 * 
	 * @return ParametrosConfig parametrosConfig
	 */
	public ParametrosConfig findByDescripcion(ParametrosConfig parametrosConfig) {

		return (ParametrosConfig) this.parametrosConfigDao.findByDescripcion(parametrosConfig);

	}

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

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

}
