package it.micegroup.gestioneferie.pianificazioneferie.service;

import it.micegroup.gestioneferie.pianificazioneferie.entity.DammtiPianiFerie;
import it.micegroup.gestioneferie.pianificazioneferie.criteria.DammtiPianiFerieCriteria;

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

import it.micegroup.gestioneferie.pianificazioneferie.entity.DmotivazioniAlertPf;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DpianiFerie;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DmotivazioniAlertPfKey;
import it.micegroup.gestioneferie.libs.service.BaseEntityService;
import it.micegroup.voila2runtime.exception.BusinessException;

public interface DammtiPianiFerieService
		extends BaseEntityService<DammtiPianiFerie, DammtiPianiFerieKey, DammtiPianiFerieCriteria> {

	// PARENT-SPECIFIC SERVICES
	Page<DammtiPianiFerie> findByTheDmotivazioniAlertPf(DmotivazioniAlertPf parentEntity, Pageable pageable);

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

	/**
	 * Return a list of DmotivazioniAlertPf from all DammtiPianiFerie with given
	 * theDmotivazioniAlertPf
	 *
	 * @param dpianiFerie
	 * @param pageable
	 * @return list of DmotivazioniAlertPf from all DammtiPianiFerie with given
	 *         TheDmotivazioniAlertPf
	 */
	Page<DmotivazioniAlertPf> findDmotivazioniAlertPfByTheDpianiFerie(DpianiFerie dpianiFerie, Pageable pageable);

	/**
	 * Return a list of DpianiFerie from all DammtiPianiFerie with given
	 * theDpianiFerie
	 *
	 * @param dmotivazioniAlertPf
	 * @param pageable
	 * @return list of DpianiFerie from all DammtiPianiFerie with given
	 *         TheDpianiFerie
	 */
	Page<DpianiFerie> findDpianiFerieByTheDmotivazioniAlertPf(DmotivazioniAlertPf dmotivazioniAlertPf,
			Pageable pageable);

	DammtiPianiFerie bulkUpdate(DammtiPianiFerie dammtiPianiFerie);

}
