package it.micegroup.gestioneferie.pianificazioneferie.service;

import it.micegroup.gestioneferie.pianificazioneferie.entity.DpianificFerieAmmto;
import it.micegroup.gestioneferie.pianificazioneferie.criteria.DpianificFerieAmmtoCriteria;

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

import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiPianificFerie;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DesitiRichAdesionePf;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiPianificFerieKey;

import it.micegroup.gestioneferie.pianificazioneferie.entity.DesitiRichAdesionePfKey;
import it.micegroup.gestioneferie.libs.service.BaseEntityService;
import it.micegroup.voila2runtime.exception.BusinessException;

public interface DpianificFerieAmmtoService
		extends BaseEntityService<DpianificFerieAmmto, DpianificFerieAmmtoKey, DpianificFerieAmmtoCriteria> {

	// PARENT-SPECIFIC SERVICES
	Page<DpianificFerieAmmto> findByTheDstatiPianificFerie(DstatiPianificFerie parentEntity, Pageable pageable);

	Page<DpianificFerieAmmto> findByTheDesitiRichAdesionePf(DesitiRichAdesionePf parentEntity, Pageable pageable);

	/**
	 * Return a list of DstatiPianificFerie from all DpianificFerieAmmto with given
	 * theDstatiPianificFerie
	 *
	 * @param desitiRichAdesionePf
	 * @param pageable
	 * @return list of DstatiPianificFerie from all DpianificFerieAmmto with given
	 *         TheDstatiPianificFerie
	 */
	Page<DstatiPianificFerie> findDstatiPianificFerieByTheDesitiRichAdesionePf(
			DesitiRichAdesionePf desitiRichAdesionePf, Pageable pageable);

	/**
	 * Return a list of DesitiRichAdesionePf from all DpianificFerieAmmto with given
	 * theDesitiRichAdesionePf
	 *
	 * @param dstatiPianificFerie
	 * @param pageable
	 * @return list of DesitiRichAdesionePf from all DpianificFerieAmmto with given
	 *         TheDesitiRichAdesionePf
	 */
	Page<DesitiRichAdesionePf> findDesitiRichAdesionePfByTheDstatiPianificFerie(DstatiPianificFerie dstatiPianificFerie,
			Pageable pageable);

	DpianificFerieAmmto bulkUpdate(DpianificFerieAmmto dpianificFerieAmmto);

}
