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

import java.util.List;

import com.bankaudit.dto.DataTableResponse;
import com.bankaudit.dto.MaintEntityAuditSubGroupMappingDto;
import com.bankaudit.model.MaintEntityAuditSubgroupMapping;

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

	/**
	 * This method is use to Creates the maint entity audit subgroup mapping.
	 *
	 * @param maintEntityAuditSubgroupMapping
	 *            specify the maint entity audit subgroup mapping
	 */
	void createMaintEntityAuditSubgroupMapping(MaintEntityAuditSubgroupMapping maintEntityAuditSubgroupMapping);

	/**
	 * This method is use to Update maint entity audit subgroup mapping.
	 *
	 * @param maintEntityAuditSubgroupMapping
	 *            specify the maint entity audit subgroup mapping
	 */
	void updateMaintEntityAuditSubgroupMapping(MaintEntityAuditSubgroupMapping maintEntityAuditSubgroupMapping);

	/**
	 * This method is use to Gets the maint entity audit subgroup mapping.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param mappingType
	 *            specify the mapping type
	 * @param id
	 *            specify the id
	 * @param status
	 *            specify the status
	 * @return the list .
	 */
	List<MaintEntityAuditSubgroupMapping> getMaintEntityAuditSubgroupMapping(Integer legalEntityCode,
			String mappingType ,String id,String status);

	
	List<MaintEntityAuditSubgroupMapping> getMaintEntityAuditSubgroupMappingIdWithName(Integer legalEntityCode,
			String mappingType ,String id,String auditTypeCode, String status);

	
    /**
	 * This method is use to Delete maint entity audit subgroup mapping.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param mappingType
	 *            specify the mapping type
	 * @param id
	 *            specify the id
	 */
    void deleteMaintEntityAuditSubgroupMapping(Integer legalEntityCode ,String mappingType,String id );
    
    /**
	 * This method is use to Delete maint entity audit subgroup mapping wrk.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param mappingType
	 *            specify the mapping type
	 * @param id
	 *            specify the id
	 */
    void deleteMaintEntityAuditSubgroupMappingWrk(Integer legalEntityCode ,String mappingType,String id );
    
    void createMaintEntityAuditSubgroupMappings(MaintEntityAuditSubGroupMappingDto maintEntityAuditSubGroupMappingDto);
    
    void updateMaintEntityAuditSubgroupMappings(MaintEntityAuditSubGroupMappingDto maintEntityAuditSubGroupMappingDto);
    
    DataTableResponse getmaintEntityAuditSubgroupMapping(Integer legalEntityCode, String userId, String search, Integer orderColumn,
			String orderDirection, Integer page, Integer size);
    
    List<MaintEntityAuditSubGroupMappingDto> getEntityOrUserByLevel(Integer legalEntityCode, String levelCode, String mappingType ,String status);
    
    //MaintEntityAuditSubGroupMappingDto getMaintEntityAuditSubGroupMappings(Integer legalEntityCode, String mappingType,String id );
    
    public List<MaintEntityAuditSubGroupMappingDto> getEntityAuditTypeMappingDtls(Integer legalEntityCode, String mappingType ,String status);

}
