package com.bankaudit.rest.process.service;

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

import org.springframework.web.multipart.MultipartFile;

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

public interface AuditReportDynamicTableService {
	
	DataTableResponse  getDynamicTables(Integer legalEntityCode, String userId, String role, String search,Integer orderColumn,
			String orderDirection, Integer page, Integer size, LocalDate financialYear, String auditTypeCode);

	AuditReportDynamicTableDto getDynamicTablesByAuditId(int legalEntityCode, String auditTypeCode, String auditId);
	
	List<AuditReportDynamicTable> getDynamicTablesByAuditIdForAnnexure(int legalEntityCode, String auditTypeCode, String auditId);
	
	AuditReportDynamicTableDto getDynamicTablesById( Integer legalEntityCode, String auditTypeCode, String auditId, Integer id); 
	
	void createDynamicTables(AuditReportDynamicTableDto auditReportDynamicDtls);
	
	void updateDynamicTables(AuditReportDynamicTableDto auditReportDynamicDtls); 		
	
	void updateDynamicTablesSequencing(AuditReportDynamicTableDto auditReportDynamicSequence);
	
	void deleteDynamicTablesById(Integer legalEntityCode, String auditTypeCode, String auditId, Integer id);	

	List<AuditSchedule> getInprogressAuditbyUserId(int legalEntityCode, String userId, String roleId);
	
	String uploadDynamicTablesSheet(AuditReportDynamicTable ardTable, MultipartFile[] files);
 		 
	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);
}
