package com.bankaudit.rest.process.dao;

import java.time.LocalDate;
import java.util.List;

import com.bankaudit.dao.Dao;
import com.bankaudit.dto.DataTableResponse;
import com.bankaudit.dto.process.AuditReportDynamicTableDto;
import com.bankaudit.dto.process.AuditReportDynamicTablePredefinedDataListDto;
import com.bankaudit.process.model.AuditReportDynamicTable;
import com.bankaudit.process.model.AuditSchedule;

public interface AuditReportDynamicTableDao extends Dao {
	
	DataTableResponse getDynamicTables(int legalEntityCode,String userId, String role, String search,Integer orderColumn, String orderDirection, Integer page, Integer size, 
			LocalDate financialYear, String auditTypeCode, List<LocalDate>  financialYearStrtEndList);
	
	AuditReportDynamicTableDto getDynamicTablesByAuditId(int legalEntityCode, String auditTypeCode, String auditId);
	
	List<AuditReportDynamicTable>  getDynamicTablesByAuditIdForAnnexure(int legalEntityCode, String auditTypeCode, String auditId);
	
	AuditReportDynamicTable getDynamicTableById(Integer legalEntityCode, String auditTypeCode, String auditId, Integer id);
	
	void deleteAuditReportDynamicTableDetailsByTableId(int legalEntityCode, int tableId, String auditTypeCode, String auditId, List<Integer> dynamicTableDetailIds);
		
	void deleteDynamicTablesById(Integer legalEntityCode, String auditTypeCode, String auditId, Integer id);
	
	List<AuditSchedule> getInprogressAuditbyUserId(int legalEntityCode, String userId, String roleId); 	
	
	void executeHQLQuery(String strQuery); 	
	 	 
	List<AuditReportDynamicTablePredefinedDataListDto>  getPredefinedStatementDetail(int legalEntityCode, String auditTypeCode, String auditId, String auditGroupCode,
			String auditSubGroupCode,  String activityCode,  String processCode, String statementType, String all);
	AuditReportDynamicTable  getSavedStatementDetail(int legalEntityCode, String auditTypeCode, String auditId, String auditGroupCode,
			String auditSubGroupCode,  String activityCode,  String processCode, String statementType, String statementId);
	
}
