package it.micegroup.gestioneferie.pianificazioneferie.service;

import it.micegroup.gestioneferie.pianificazioneferie.entity.DesitiRichAdesionePf;
import it.micegroup.gestioneferie.pianificazioneferie.criteria.DesitiRichAdesionePfCriteria;

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

import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiAdesionePf;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DrichAdesionePf;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiAdesionePfKey;

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

public interface DesitiRichAdesionePfService
		extends BaseEntityService<DesitiRichAdesionePf, DesitiRichAdesionePfKey, DesitiRichAdesionePfCriteria> {

	// PARENT-SPECIFIC SERVICES
	Page<DesitiRichAdesionePf> findByTheDstatiAdesionePf(DstatiAdesionePf parentEntity, Pageable pageable);

	Page<DesitiRichAdesionePf> findByTheDrichAdesionePf(DrichAdesionePf parentEntity, Pageable pageable);

	/**
	 * Return a list of DstatiAdesionePf from all DesitiRichAdesionePf with given
	 * theDstatiAdesionePf
	 *
	 * @param drichAdesionePf
	 * @param pageable
	 * @return list of DstatiAdesionePf from all DesitiRichAdesionePf with given
	 *         TheDstatiAdesionePf
	 */
	Page<DstatiAdesionePf> findDstatiAdesionePfByTheDrichAdesionePf(DrichAdesionePf drichAdesionePf, Pageable pageable);

	/**
	 * Return a list of DrichAdesionePf from all DesitiRichAdesionePf with given
	 * theDrichAdesionePf
	 *
	 * @param dstatiAdesionePf
	 * @param pageable
	 * @return list of DrichAdesionePf from all DesitiRichAdesionePf with given
	 *         TheDrichAdesionePf
	 */
	Page<DrichAdesionePf> findDrichAdesionePfByTheDstatiAdesionePf(DstatiAdesionePf dstatiAdesionePf,
			Pageable pageable);

	DesitiRichAdesionePf bulkUpdate(DesitiRichAdesionePf desitiRichAdesionePf);

}
