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

import java.util.HashMap;
import java.util.List;

import com.bankaudit.dto.DataTableResponse;
import com.bankaudit.dto.SequenceDto;
import com.bankaudit.model.ActivityProcessFindingMapping;

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

	/**
	 * This method is use to Creates the activity process finding mapping.
	 *
	 * @param activityProcessFindingMapping
	 *            specify the activity process finding mapping
	 * @throws Exception
	 *             the exception
	 */
	void createActivityProcessFindingMapping(ActivityProcessFindingMapping activityProcessFindingMapping) throws Exception;
	
	/**
	 * This method is use to Update activity process finding mapping.
	 *
	 * @param activityProcessFindingMapping
	 *            specify the activity process finding mapping
	 */
	void updateActivityProcessFindingMapping(ActivityProcessFindingMapping activityProcessFindingMapping);
	
	/**
	 * This method is use to Gets the activity process finding mapping.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param mappingId
	 *            specify the mapping id
	 * @param status
	 *            specify the status
	 * @return the activity process finding mapping .
	 */
	ActivityProcessFindingMapping getActivityProcessFindingMapping(Integer legalEntityCode,String mappingId,String status);
	
	/**
	 * This method is use to Gets the activity process finding mappings.
	 *
	 * @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 getActivityProcessFindingMappings(Integer legalEntityCode, String search, Integer orderColumn,
			String orderDirection, Integer page, Integer size);
	
	/**
	 * This method is use to Gets the activity process finding mapping values.
	 *
	 * @param legalEntityCode
	 *            specify the legal entity code
	 * @param auditTypeCode
	 *            specify the audit type code
	 * @param auditGroupCode
	 *            specify the audit group code
	 * @param auditSubGroupCode
	 *            specify the audit sub group code
	 * @param activityCode
	 *            specify the activity code
	 * @param processCode
	 *            specify the process code
	 * @param findingCode
	 *            specify the finding code
	 * @return the list .
	 */
	List<String> getActivityProcessFindingMappingValues(String legalEntityCode, String auditTypeCode,
			String auditGroupCode, String auditSubGroupCode, String activityCode, String processCode,
			String findingCode,String createOrUpdate);
	
	List<SequenceDto> getDynamicValuesForSequence(String legalEntityCode, String auditTypeCode,
			String auditGroupCode, String auditSubGroupCode, String activityCode, String processCode);
	
		/**
		 * This method is use to Checks if is activity process finding mapping.
		 *
		 * @param parseInt
		 *            specify the parse int
		 * @param auditTypeCode
		 *            specify the audit type code
		 * @param auditGroupCode
		 *            specify the audit group code
		 * @param auditSubGroupCode
		 *            specify the audit sub group code
		 * @param activityCode
		 *            specify the activity code
		 * @param processCode
		 *            specify the process code
		 * @param findingCode
		 *            specify the finding code
		 * @return the boolean .
		 */
		Boolean isActivityProcessFindingMapping(int parseInt, String auditTypeCode, String auditGroupCode,
			String auditSubGroupCode, String activityCode, String processCode, String findingCode,String createOrUpdate,String riskBelongsTo);
		
		HashMap<String, String> getAnyOneAuditGrpAndSubGrpForAuditType(Integer legalEntityCode,String auditTypeCode,String status);
		
		void deleteActivityProcessFindingMapping(Integer legalEntityCode, String mappingId, String statusUnauth);

}
