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

import java.util.List;

import com.ejie.ad74a.model.Copago;
import com.ejie.ad74a.model.Periodo;
import com.ejie.ad74a.model.Piso;
import com.ejie.ad74a.model.Solicitante;

/**
 * Interfaz de servicio comun de copagos para solicitantes y aytos
 * @author BICUGUAL
 *
 */
public interface CopagoService {

	/**
	 * Dado un periodo y un solicitante, devuelve una lista de copagos en base a sus
	 * precios beneficiario
	 * 
	 * @param periodo
	 * @param solicitante
	 * @param pisoTutelado
	 * @return
	 */
	List<Copago> getLstCopagosBeneficiario(Periodo mensualidad, Solicitante solicitante, Piso pisoTutelado);

	/**
	 * Dado un periodo, un solicitante y su lista de copagos con origen en precios
	 * beneficiario, devuelve la lista de copagos publicos. Para ello, recorre cada
	 * dia del periodo que el solicitante esta de alta para comprobar si tiene
	 * asignado un precio beneficiario.
	 * 
	 * @param periodo
	 * @param solicitante
	 * @param lstCopagosBeneficiario
	 * @param piso
	 * @return
	 */
	List<Copago> getLstCopagosPublicos(Periodo mensualidad, Solicitante solicitante,
			List<Copago> lstCopagosBeneficiario, Piso piso);

	/**
	 * Dada la lista de copagos con precios beneficiarios y/o publicos, el metodo
	 * fusiona por periodos de tiempo los copagos, filtra los importes 0 y ordena
	 * por fecha de inicio de copago
	 * 
	 * @param lstCopagosBeneficiario
	 * @param lstCopagosPublicos
	 * @return
	 */
	List<Copago> fusionarCopagosSolicitante(List<Copago> lstCopagosBeneficiario, List<Copago> lstCopagosPublicos);

}
