package com.bankaudit.rest.process.service;

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

import com.bankaudit.dto.DataTableResponse;
import com.bankaudit.dto.process.AuditLettersDto;
import com.bankaudit.dto.process.LettersDto;
import com.bankaudit.process.model.AuditLetterBiLingualWrk;
import com.bankaudit.process.model.AuditLetterUserInputsWrk;

public interface LettersService {
	
	List<LettersDto> getLettersByAuditId(int legalEntityCode, String auditTypeCode,String auditId,String role);
	
	AuditLettersDto getLetterByAuditIdAndLetterCode(int legalEntityCode, String auditId,String letterCode, String status, String auditTypeCode);
	
	void createAuditLetter(AuditLetterUserInputsWrk adtLtrWrk);
	
	void updateAuditLetter(AuditLetterUserInputsWrk adtLtrWrk); 
	
	void deleteAuditLetterByIdCode(int legalEntityCode, String auditId,String letterCode, String status);
	
	Boolean isAuthAllowed(Integer legalEntityCode, String auditId,String letterCode, String userId);

	String  saveLetterPDFByAuditIdAndLetterCode(Map<String, Object> params, int legalEntityCode, String auditId,String letterCode, String status, 
			String auditTypeCode, String userId);
	
	String getDocReferencePath(int legalEntityCode, String auditId, String letterCode, String auditTypeCode);
	
	DataTableResponse getLetterForReviewer(int legalEntityCode, String userId, String search,Integer orderColumn,
			String orderDirection, Integer page, Integer size, String role, String auditGradingQsnDtlsMap, LocalDate financialYear, String auditTypeCode);
	
	Integer isRatingCompleted(Integer legalEntityCode, String auditTypeCode, String auditId);
	
	Integer isLetterAuthorised(Integer legalEntityCode, String auditTypeCode, String auditId, String letterCode);
	 
	DataTableResponse getLetterForReviewerGradingCompliance(int legalEntityCode, String userId, String search,Integer orderColumn,
			String orderDirection, Integer page, Integer size, String role, String userUnitType, LocalDate financialYear, String auditTypeCode);
}
