package com.ejie.m62fb.dao;

import java.math.BigDecimal;
import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import com.ejie.m62fb.model.persona.Persona;
import com.ejie.x38.dto.JQGridRequestDto;
import com.ejie.x38.dto.TableRowDto;

/**
 * PersonaDao generated by UDA, 24-oct-2012 16:55:00.
 * 
XXXX
 */

public interface PersonaDao {

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

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

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

	/**
	 * Deletes a single row in the Persona table.
	 * 
	 * @param persona
	 *            Persona
	 * @return
	 */
	void remove(Persona persona);
	  /**
     * 
     * @param persona
     * @return
     */
    public Persona findForUpdate(Persona persona);
    /**
	 * Comprueba si existe un NIF en BD.
	 * 
	 * @param nifTitular
	 *            String
	 * @return Persona
	 */
    public Persona findByNIF(String nifTitular);
//	/**
//	 * Finds a List of rows in the Persona table.
//	 * 
//	 * @param persona
//	 *            Persona
//	 * @param pagination
//	 *            Pagination
//	 * @return List
//	 */
//	List<Persona> findAll(Persona persona, Pagination pagination);

//	/**
//	 * Counts rows in the Persona table.
//	 * 
//	 * @param persona
//	 *            Persona
//	 * @return Long
//	 */
//	Long findAllCount(Persona persona);

	/**
     * Finds rows in the Persona table using like.
     *
     * @param persona Persona
     * @param jqGridRequestDto JQGridRequestDto
     * @param startsWith Boolean
     * @return List
     */
	List<Persona> findAllLike(Persona persona, JQGridRequestDto jqGridRequestDto, Boolean startsWith);
	/**
     * Finds rows in the Persona table .
     *
     * @param persona Persona
     * @param jqGridRequestDto JQGridRequestDto
     * @return List
     */
	List<Persona> findAll(Persona persona, JQGridRequestDto jqGridRequestDto);
	
	/**
	 * Counts rows in the Persona table using like.
	 * 
	 * @param persona
	 *            Persona
	 * @param startsWith
	 *            Boolean
	 * @return Long
	 */
	Long findAllLikeCount(Persona persona, Boolean startsWith);
	 /**
	 * Reorder selection.
	 *
	 * @param filterPersona Persona
	 * @param jqGridRequestDto JQGridRequestDto
	 * @param startsWith Boolean
	 * @return List<TableRowDto<Elemento>>
	 */	
    List<TableRowDto<Persona>> reorderSelection(Persona filterPersona, JQGridRequestDto jqGridRequestDto, Boolean startsWith);
    
    /**
	 * Inserta una petición para llamar al SVDI
	 * @param persona
	 * @return
	 */
	public String insertPeticionSVDI(String tipoCodigoId, String codigoId,
			 String apellido1, String fechaNacimiento);
	/**
	 * Devuelve el resultado de una petición del SVDI
	 * @param persona
	 * @return
	 */
	public Persona getResultadoSVDI(String idPeticion);
}
