/**
 * 
 */
package com.ejie.ad74a.dao;

import java.util.Date;
import java.util.List;
import java.util.Optional;

import com.ejie.ad74a.model.PrecioBeneficiario;
import com.ejie.ad74a.model.PrecioPublico;

/**
 * Interfaz de la capa de persistencia para las entidades:
 * AD74A77T00 PRECIOS_PUBLICOS y AD74A91T00 PRECIOS_BENEFICIARIO
 * @author BICUGUAL
 *
 */
public interface PrecioDao {

	/**
	 * Obtiene el precio publico existente para el dia pasado como parametro.
	 * El precio publico a aplicar es el existen el primer dia de la mensualidad
	 * @param fInicioMes
	 * @param fFinMes
	 * @return
	 */
	Optional<PrecioPublico> findPrecioPublicoByFInicioMes(Date fInicioMes, Date fFinMes);
	
	/**
	 * Obtiene todos los precios publicos
	 * @return
	 */
	List<PrecioPublico> findAllPreciosPublicos();

	/**
	 * Obtiene la lista de precios para un solicitante y el periodo de facturacion
	 * @param idSolicitante
	 * @param fInicioMes
	 * @param fFinMes
	 * @return
	 */
	List<PrecioBeneficiario> findPreciosBeneficiarioByIdSolicitanteAndFInicioMes(Long idSolicitante, Date fInicioMes, Date fFinMes);
	
}
