package it.micegroup.gestioneferie.pianificazioneferie.service;

import it.micegroup.gestioneferie.pianificazioneferie.entity.DrichAdesionePf;
import it.micegroup.gestioneferie.pianificazioneferie.criteria.DrichAdesionePfCriteria;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DrichAdesionePfKey;

import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiRichAdesionePf;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DpianiFerie;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiRichAdesionePfKey;
import it.micegroup.gestioneferie.libs.service.BaseEntityService;
import it.micegroup.voila2runtime.exception.BusinessException;

public interface DrichAdesionePfService
		extends BaseEntityService<DrichAdesionePf, DrichAdesionePfKey, DrichAdesionePfCriteria> {

	// PARENT-SPECIFIC SERVICES
	Page<DrichAdesionePf> findByTheDstatiRichAdesionePf(DstatiRichAdesionePf parentEntity, Pageable pageable);

	Page<DrichAdesionePf> findByTheDpianiFerie(DpianiFerie parentEntity, Pageable pageable);

	/**
	 * Return a list of DstatiRichAdesionePf from all DrichAdesionePf with given
	 * theDstatiRichAdesionePf
	 *
	 * @param dpianiFerie
	 * @param pageable
	 * @return list of DstatiRichAdesionePf from all DrichAdesionePf with given
	 *         TheDstatiRichAdesionePf
	 */
	Page<DstatiRichAdesionePf> findDstatiRichAdesionePfByTheDpianiFerie(DpianiFerie dpianiFerie, Pageable pageable);

	/**
	 * Return a list of DpianiFerie from all DrichAdesionePf with given
	 * theDpianiFerie
	 *
	 * @param dstatiRichAdesionePf
	 * @param pageable
	 * @return list of DpianiFerie from all DrichAdesionePf with given
	 *         TheDpianiFerie
	 */
	Page<DpianiFerie> findDpianiFerieByTheDstatiRichAdesionePf(DstatiRichAdesionePf dstatiRichAdesionePf,
			Pageable pageable);

	DrichAdesionePf bulkUpdate(DrichAdesionePf drichAdesionePf);

}
