package eu.dnetlib.goldoa.service;

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

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

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

	public Budget saveBudget(Budget budget);

	public Budget getBudget(String budgetId);

	public List<Budget> getBudgets();

	public List<Budget> getBudgetsForUser(String userEmail);

	public List<Budget> getBudgetsForPublisher(String publisherEmail);

	public List<Budget> getBudgetsForAccounting();

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

	public Budget submitBudgetRequest(Budget budget);

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

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

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

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

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

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

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

	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 Budget getForRequest(String organizationId, String publisherEmail);

    public Organization getOrganizationForBudget(String id);
}
