/*
 * 
 */
package com.bankaudit.dao;

import java.util.List;

import com.bankaudit.dto.ChecklistDto; 
import com.bankaudit.dto.DataTableResponse;
import com.bankaudit.process.model.AuditDocumentDetails;
import com.bankaudit.process.model.AuditObservation;
import com.bankaudit.process.model.AuditSchedule;
import com.bankaudit.process.model.ChecklistOfflineInspection;

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

	List<String> getChapter(String legalEntityCodeStr, String auditId, String auditTypeCode);
	
	List<String> getSection(String legalEntityCodeStr, String auditId, String auditTypeCode, String auditGroupCode);
	
	List<String> getProduct(String legalEntityCodeStr, String auditId, String auditTypeCode, String auditGroupCode, 
			String auditSubGroupCode);
	
	List<String> getProcess(String legalEntityCodeStr, String auditId, String auditTypeCode, String auditGroupCode, 
			String auditSubGroupCode, String activityCode);
		 
	DataTableResponse getChecklist(String legalEntityCodeStr, String auditId, String auditTypeCode, String auditGroupCode, 
			String auditSubGroupCode, String activityCode ,   String processCode, String search, Integer orderColumn, String orderDirection, Integer page, Integer size,
			String complianceCategory, String submissionStatus, String responseStatus, String reviewStatus, String flag, String criticalityToggle,
			String reportRvwFedbk, String role, String documentType, String documentSubType, String nonCompliancePersistence);	
	 
	/*List<AuditDocumentDetails> getAuditDocumentDetails(Integer legalEntityCode, String auditTypeCode,
			String planId, String auditId, String observationId, String documentType);*/
	
	public ChecklistDto getChapterDetailsOfChecklist(String legalEntityCodeStr, String auditTypeCode ,  String auditId, 
			String observationId , String groupObservationId );
	
	AuditObservation getAuditObservation(ChecklistOfflineInspection  checklistUploadDto);
	
	String updateOfflineInspection(ChecklistOfflineInspection  checklistUploadDto );	 
	
    String  getStandardStatementForReportTable(ChecklistOfflineInspection  checklistUploadDto, String reportLanguage );
	
	//AuditObservation getAuditObservation(String legalEntityCode, String auditTypeCode, String groupObservationId);
	
	DataTableResponse getAllChecklistForDownload(String legalEntityCode, String auditId, String auditTypeCode, String auditGroupCode, String auditSubGroupCode,
			 String activityCode, String processCode, String search,String complianceCategory, String submissionStatus, String responseStatus, String reviewStatus, 
			 String flag, String criticalityToggle,	String reportRvwFedbk, String role, String documentType, String documentSubType, String nonCompliancePersistence, AuditSchedule auditSchedule);
	

}
