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

import java.util.List;

import com.bankaudit.dto.TreeviewItem;
import com.bankaudit.model.MaintRoleEntitlement;

/**
 * The Interface {@link MaintRoleEntitlementService} 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 MaintRoleEntitlementService {

	/**
	 * This method is use to Update role entitlement.
	 *
	 * @param maintRoleEntitlement
	 *            specify the maint role entitlement
	 */
	void updateRoleEntitlement(MaintRoleEntitlement maintRoleEntitlement);
	
	/**
	 * This method is use to Gets the maint role entitlement by legal entity
	 * code and ug role code.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param ugRoleCode
	 *            specify the ug role code
	 * @return the list .
	 */
	List<MaintRoleEntitlement> getMaintRoleEntitlementByLegalEntityCodeAndUgRoleCode(Integer legalEntityCode,String ugRoleCode);
	
	/**
	 * This method is use to Gets the role entitlement by role.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param ugRoleCode
	 *            specify the ug role code
	 * @return the list .
	 */
	List<TreeviewItem> getRoleEntitlementByRole(Integer legalEntityCode, String ugRoleCode);
	
	/**
	 * This method is use to Delete role entitlements.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param ugRoleCode
	 *            specify the ug role code
	 */
	void deleteRoleEntitlements(Integer legalEntityCode, String ugRoleCode);
	
	/**
	 * This method is use to Gets the role entitlement by legal entity code.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @return the list .
	 */
	List<TreeviewItem> getRoleEntitlementByLegalEntityCode(Integer legalEntityCode);
	
	/**
	 * This method is use to Gets the function ids.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param ugRoleCode
	 *            specify the ug role code
	 * @param status
	 *            specify the status
	 * @return the list .
	 */
	List<String> getFunctionIds(Integer legalEntityCode, String ugRoleCode,String status);
	
	/**
	 * This method is use to Delete maint role entitlement wrk.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param ugRoleCode
	 *            specify the ug role code
	 */
	void deleteMaintRoleEntitlementWrk(Integer legalEntityCode, String ugRoleCode);
}
