package eu.dnetlib.goldoa.service;

import eu.dnetlib.goldoa.domain.Budget;
import eu.dnetlib.goldoa.domain.BudgetInfo;

import java.io.InputStream;
import java.util.List;

/**
 * Created by antleb on 4/2/15.
 */
public interface BudgetManager {

	public Budget saveBudget(Budget budget);

	public BudgetInfo getBudget(String budgetId);

	public List<BudgetInfo> getBudgets();

	public List<BudgetInfo> getBudgetsForUser(String userId);

	public List<BudgetInfo> getBudgetsForPublisher(String publisherId);

	public List<BudgetInfo> getBudgetsForAccounting();

	public List<BudgetInfo> getBudgetsForOrganization(List<String> organizationId);

	public Budget submitBudgetRequest(Budget budget);

	public void initiallyApproveBudgetRequest(String budgetId, String comment, String personId);

	public void approveBudgetRequest(String budgetId, String comment, float amountGranted, String personId);

	public void rejectBudgetRequest(String budgetId, String comment, String personId);

	public void processingPayment(String budgetId, String comment, String personId);

	public void denyPayment(String budgetId, String comment, String personId);

	public void onHoldPayment(String budgetId, String comment, String personId);

	public void budgetPaid(String budgetId, String comment, String personId);

	public void uploadInitialContract(String budgetId, String contentType, InputStream inputStream);

	public void uploadBeneficiaryContract(String budgetId, String contentType, InputStream inputStream);

	public void uploadSignedContract(String budgetId, String contentType, InputStream inputStream);

	public void uploadBankReceipt(String budgetId, String contentType, InputStream inputStream);

	public BudgetInfo getForRequest(String organizationId, String publisherId);
}
