/*
 * 
 */
package com.bankaudit.service;

import java.util.List;

import com.bankaudit.dto.DataTableResponse;
import com.bankaudit.model.RiskScorePercentage;

/**
 * The Interface {@link RiskScorePercentageService} define the methods that can
 * be exposed to controller layer in order to implements rest end-points and
 * define the business logic.
 *
 * @author amit.patel
 * @version 1.0
 */
public interface RiskScorePercentageService {

	List<RiskScorePercentage> getRiskScorePercentages();
	
	/**
	 * This method is use to Gets the risk score percentages except this.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param auditTypeCode
	 *            specify the audit type code
	 * @param riskCategoryCode
	 *            specify the risk category code
	 * @return the list .
	 */
	List<RiskScorePercentage> getRiskScorePercentagesExceptThis(Integer legalEntityCode,String auditTypeCode,String riskCategoryCode);


	/**
	 * This method is use to Gets the risk score percentage.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param riskCategoryCode
	 *            specify the risk category code
	 * @param auditTypeCode
	 *            specify the audit type code
	 * @param status
	 *            specify the status
	 * @return the risk score percentage .
	 */
	RiskScorePercentage getRiskScorePercentage(Integer legalEntityCode, String riskCategoryCode, String auditTypeCode,String status);
	
	/**
	 * This method is use to Gets the risk score percentages.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param search
	 *            specify the search
	 * @param orderColumn
	 *            specify the order column
	 * @param orderDirection
	 *            specify the order direction
	 * @param page
	 *            specify the page
	 * @param size
	 *            specify the size
	 * @return the data table response .
	 */
	DataTableResponse getRiskScorePercentages(Integer legalEntityCode, String search, Integer orderColumn,
			String orderDirection, Integer page, Integer size);

	/**
	 * This method is use to Gets the risk score percentagefor update.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param auditTypeCode
	 *            specify the audit type code
	 * @param status
	 *            specify the status
	 * @return the list .
	 */
	List<RiskScorePercentage> getRiskScorePercentageforUpdate(Integer legalEntityCode, String auditTypeCode,String status);

	/**
	 * This method is use to Creates the risk score percentage.
	 *
	 * @param riskScorePercentages
	 *            specify the risk score percentages
	 * @throws Exception
	 *             the exception
	 */
	void createRiskScorePercentage(List<RiskScorePercentage> riskScorePercentages)throws Exception;

	/**
	 * This method is use to Update risk score percentages.
	 *
	 * @param riskScorePercentages
	 *            specify the risk score percentages
	 */
	void updateRiskScorePercentages(List<RiskScorePercentage> riskScorePercentages);

	/**
	 * This method is use to Checks if is risk score percentage.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param auditTypeCode
	 *            specify the audit type code
	 * @return the boolean .
	 */
	Boolean isRiskScorePercentage(Integer legalEntityCode, String auditTypeCode);
	
	RiskScorePercentage getRiskCategoryOnPercentage(Integer legalEntityCode, String auditTypeCode,Integer riskScore);

	Boolean isRiskCategoryCode(Integer legalEntityCode, String auditTypeCode, String riskCategoryCode);
}
