package info.bukova.isspst.services.requirement;

import info.bukova.isspst.data.RequirementBase;
import info.bukova.isspst.data.User;
import info.bukova.isspst.data.Workflow;
import info.bukova.isspst.services.Service;

import java.util.Date;
import java.util.List;

/**
 * @author Pepa Rokos
 * @author Franta Přibyl
 * 
 * Základní rozhraní všech požadavků.
 *
 * @param <T> Třída požadavku.
 */
public interface RequirementBaseService<T extends RequirementBase> extends Service<T>
{

	public void loadAuthItems(T data);
	public void loadType(T data);
	public void loadWorkflow(T data);
	public void approve(T entity);
	public void approve(T entity, Date approveDate, byte[] signedPdf);
	public boolean canApprove(T entity);
	public List<User> getNextApprover(T entity);
	public boolean prepareSignData(T entity, Date approveDate);
	public Workflow getNextWorkflow(T entity);
	
	public List<T> getMy();

	public List<T> getCentreReq();

	public List<T> getWorkgroupReq();
}
