package com.bankaudit.rest.process.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.bankaudit.dto.DataTableResponse;
import com.bankaudit.dto.process.AlertsDto;
import com.bankaudit.dto.process.AlertsResponseDto;
import com.bankaudit.process.model.AuditSchedule;
import com.bankaudit.process.model.TaskDetails;

public interface AlertToDoDao {
	
	Map<String, Integer> getAlertsCount(Integer legalEntityCode, String userId, String role);
	
	DataTableResponse  getAlertsByUserIdAlertIdDataTable(int legalEntityCode,String userId,String alertId,String role, String search,Integer orderColumn,
			String orderDirection, Integer page, Integer size);
	
	List<AlertsResponseDto> getListofAlerts(Integer legalEntityCode, String userId, String role, String alertId);
	
	List<AuditSchedule> getPlanAuth(Integer legalEntityCode, String userId, String role, String unitId);
	
	Integer getRiskAssessedCnt(Integer legalEntityCode, String userId, String role, String unitId);
	
	Integer getAuditInitiationCnt(Integer legalEntityCode, String userId, String role, String unitId, Boolean isDeptAsRMD, List<String> deptList);
	
	Integer getAuditSubmitCnt(Integer legalEntityCode, String userId, String role, String unitId, Boolean isDeptAsRMD, List<String> deptList);
	
	Integer getActionPlanInitiateCnt(Integer legalEntityCode, String userId, String role, String unitId, List<String> unitList, Boolean isDeptAsRMD, List<String> deptList);
	
	Integer getRCSAClosureCnt(Integer legalEntityCode, String userId, String role, String unitId, Date businessDate, List<String> unitList, Boolean isDeptAsRMD, List<String> deptList);

	Integer getTaskClosureCnt(Integer legalEntityCode, String userId, String role, String unitId, Date businessDate, List<String> unitList,Boolean isDeptAsRMD, List<String> deptList);
	
	Map<String, Integer> getTaskOpenOverdueCount(Integer legalEntityCode, String userId, String role, String unitId, Date businessDate, List<String> unitList, Boolean isDeptAsRMD, List<String> deptList);
	
	List<AlertsDto> getRiskAssessedAlerts(Integer legalEntityCode, String userId, String role, String unitId);
	
	List<TaskDetails> getTaskClosureAlerts(Integer legalEntityCode, String userId, String role, String unitId);
	
	List<TaskDetails> getOpenTaskAlerts(Integer legalEntityCode, String userId, String role, String unitId);
	
	DataTableResponse getPlanAuth(Integer legalEntityCode, String search, Integer orderColumn, String orderDirection,
			 Integer page, Integer size, String userId, String role, String unitId, String alertName);
	
	DataTableResponse getRiskAssessedAlerts(Integer legalEntityCode, String search, Integer orderColumn, String orderDirection,
			 Integer page, Integer size, String userId, String role, String unitId, String alertName);
	
	DataTableResponse getAuditInitiatedAlerts(Integer legalEntityCode, String search, Integer orderColumn, String orderDirection,
			 Integer page, Integer size, String userId, String role, String unitId, String alertName, Boolean isDeptAsRMD, List<String> deptList);
	
	DataTableResponse getAuditSubmittedAlerts(Integer legalEntityCode, String search, Integer orderColumn, String orderDirection,
			 Integer page, Integer size, String userId, String role, String unitId, String alertName, Boolean isDeptAsRMD, List<String> deptList);
	
	DataTableResponse getActionPlanInitiatedAlerts(Integer legalEntityCode, String search, Integer orderColumn, String orderDirection,
			 Integer page, Integer size, String userId, String role, String unitId, String alertName, List<String> unitList, Boolean isDeptAsRMD, List<String> deptList);
	
	DataTableResponse getRCSAClosureAlerts(Integer legalEntityCode, String search, Integer orderColumn, String orderDirection,
			 Integer page, Integer size, String userId, String role, String unitId, String alertName, Date businessDate, List<String> unitList, Boolean isDeptAsRMD, List<String> deptList);
	
	DataTableResponse getTaskOpenCloseOverdueAlerts(Integer legalEntityCode, String search, Integer orderColumn, String orderDirection,
			Integer page, Integer size, String userId, String role, String unitId, String alertName, Date businessDate, List<String> unitList, Boolean isDeptAsRMD, List<String> deptList );
	
	
}
