package com.bankaudit.rest.process.service;

import java.io.ByteArrayOutputStream;
import java.util.List;

import org.springframework.web.multipart.commons.CommonsMultipartFile;
import com.bankaudit.dto.DataTableResponse;
import com.bankaudit.process.model.AuditLevelDocumentDetails;

public interface IfcEnsureBaasDataService {
	
    String uploadIndividualAuditLevelCSVDocument(AuditLevelDocumentDetails auditLevelDocumentDetails, CommonsMultipartFile[] files, String fileName) ;
	
    String uploadIndividualAuditLevelPdfDocument( AuditLevelDocumentDetails auditLevelDocumentDetails, CommonsMultipartFile[] files, String fileName) ;
      
    String saveFetchedIndividualAuditLevelPdfDocument(AuditLevelDocumentDetails auditLevelDocumentDetails);    
    String saveFetchedIndividualAuditLevelCSVDocument(AuditLevelDocumentDetails auditLevelDocumentDetails);
    
    List<AuditLevelDocumentDetails> getAuditLevelDocuments(Integer legalEntityCode, String auditTypeCode,
			  String auditId, String planId,  String documentType, String role);
    
    List<String>  checkDuplicateAuditLevelDocuments(Integer legalEntityCode, String auditTypeCode,
			  String auditId, String planId,  String documentType,  String documentSubType, String documentFetchType, List<String> filesNamesList);
    
    String deleteDuplicateDocument(Integer legalEntityCode, String auditTypeCode,
			  String auditId, String planId,  String documentType, String documentSubType, String documentFetchType, List<String> filesNamesList );
    
    String deletePdfDocument(Integer legalEntityCode, String auditTypeCode,  String auditId, String planId, String documentType, Integer id);
         
    String getDocReferencePath(Integer legalEntityCode, String auditTypeCode,  String auditId, String documentType, Integer id);

    String updatePdfDocumentSequence(List<AuditLevelDocumentDetails> listAuditLevelDocumentDetails);
    
    String uploadOfflineInspection(AuditLevelDocumentDetails auditLevelDocumentDetails, CommonsMultipartFile[] files, String fileName, String reportLanguage);
    
    DataTableResponse viewOfflineInspection(Integer id, Integer legalEntityCode, String auditTypeCode,  String auditId, String search,
 			Integer orderColumn, String orderDirection, Integer page, Integer size);
    
    ByteArrayOutputStream downloadOfflineInspection(Integer id, Integer legalEntityCode, String auditTypeCode,  String auditId, String role);
    
    /*************/
    List<AuditLevelDocumentDetails> getAuditLevelCSVDocument(Integer legalEntityCode, String auditTypeCode,
			  String auditId,  String documentType);
  
    DataTableResponse viewAuditLevelCSVDocument(Integer legalEntityCode, String auditTypeCode,  String auditId, String stageOfFile, Integer referenceNo,
  		String search, Integer orderColumn, String orderDirection, Integer page, Integer size);
       
    List<AuditLevelDocumentDetails> getAuditLevelPdfDocument(Integer legalEntityCode, String auditTypeCode,
			  String auditId,  String documentType);
    
    
}


