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

import java.util.List;

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

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

	/**
	 * This method is use to Creates the entity level code desc.
	 *
	 * @param entityLevelCodeDesc
	 *            specify the entity level code desc
	 */
	void createEntityLevelCodeDesc(EntityLevelCodeDesc entityLevelCodeDesc);
	
	/**
	 * This method is use to Gets the entity level code desc count.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @return the integer .
	 */
	Integer getEntityLevelCodeDescCount(Integer legalEntityCode);
	
	/**
	 * This method is use to Update entity level code desc.
	 *
	 * @param entityLevelCodeDesc
	 *            specify the entity level code desc
	 */
	void updateEntityLevelCodeDesc(EntityLevelCodeDesc entityLevelCodeDesc);
	
	/**
	 * This method is use to Gets the entity level code desc by legal entity
	 * code.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @return the list .
	 */
	List<EntityLevelCodeDesc> getEntityLevelCodeDescByLegalEntityCode(Integer legalEntityCode);
	
	/**
	 * This method is use to Gets the entity level code desc.
	 *
	 * @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 getEntityLevelCodeDesc( Integer legalEntityCode, String search, Integer orderColumn,
			String orderDirection, Integer page, Integer size);
	
	/**
	 * This method is use to Gets the entity level code desc by legal entity
	 * code and level code.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param levelCode
	 *            specify the level code
	 * @param status
	 *            specify the status
	 * @return the entity level code desc .
	 */
	EntityLevelCodeDesc getEntityLevelCodeDescByLegalEntityCodeAndLevelCode(Integer legalEntityCode, String levelCode,String status);
	
	void deleteEntityLevelCodeDesc(Integer legalEntityCode, String levelCode, String statusAuth);
	
	List<EntityLevelCodeDesc> getEntityLevelCodesDescByUserID(Integer legalEntityCode, String userId);
	
}
