package com.bankaudit.rest.process.service;

import java.util.List;

import com.bankaudit.dto.process.AuditRatingComplianceObsScoreReportDto;
import com.bankaudit.dto.process.AuditRatingComplianceScoreDto;
import com.bankaudit.dto.process.AuditRatingCompositeScoreDto;
import com.bankaudit.dto.process.AuditRatingScoreDto;
import com.bankaudit.model.MaintRatingEscalationMatrix;
import com.bankaudit.process.model.AuditRatingComplianceObsScore;
import com.bankaudit.process.model.AuditRatingCompositeCategoryScore;
import com.bankaudit.process.model.AuditRatingCompositeOverlay;
import com.bankaudit.process.model.AuditRatingCompositeScore;

public interface AuditRatingCompositeService {

	AuditRatingCompositeScoreDto getCompositeScoreByAuditId(int legalEntityCode,String auditId, String auditTypeCode, String unitId, String userType, String userId, String compRatingStatus);
	
	boolean verifyCSVUpload(int legalEntityCode,String auditId);
	
	//List<AuditRatingCompositeScore> getCompositeScoreByAuditId(int legalEntityCode,String auditId, String auditTypeCode, String unitId, String userType, String userId, String compRatingStatus);
	
	List<AuditRatingCompositeScore> insertAndGetAuditCompositeRatingByAuditId(int legalEntityCode,String auditId, String unitId, String auditTypeCode, String userId);
	
	void executeAndUpdateAuditCompositeScoresFromIRCSV(int legalEntityCode, String auditId, String userType);
	
	void fetchAndUpdateAuditCompositeScoresFromSupervisoryRating(int legalEntityCode, String auditId, String userType);
	
	void updateAuditRatingCompositeScores(List<AuditRatingCompositeScore> auditRatingCompositeScores, int legalEntityCode, String auditId, String userType);
	
	void updateAuditRatingCompositeCategoryScores(List<AuditRatingCompositeCategoryScore> auditRatingCompositeCategoryScores, int legalEntityCode, String auditId, String userType);
	
	void updateAuditRatingCompositeOverlay(List<AuditRatingCompositeOverlay> auditRatingCompositeOverlay, int legalEntityCode, String auditId, String userId, String userType);
	
	//boolean createAuditRatingCompositeOverlay(int legalEntityCode,String auditId,  String auditTypeCode, String userId);
	
	List<AuditRatingCompositeCategoryScore> getCompositeCategoryScoreByAuditId(int legalEntityCode,String auditId, String auditTypeCode, String userType, String compRatingStatus);
	
	List<AuditRatingCompositeOverlay> getAuditRatingCompositeOverlayByAuditId(int legalEntityCode,String auditId, String auditTypeCode, String userType);
	
	AuditRatingCompositeScoreDto getCompositeCategoryScoreEscalationMtrxByAuditId(int legalEntityCode,String auditId, String auditTypeCode, String userType, String compRatingStatus);
	
	MaintRatingEscalationMatrix getRatingEscalationMatrixByAuditId(int legalEntityCode,String auditId, String auditTypeCode, String userType);
	
	void updateAuditRatingScores(AuditRatingScoreDto auditRatingScoreDto, int legalEntityCode, String auditId, String userId, String userType);
	
	String verifyIRFinalisedAndSupervisoryRatingSubmitted(int legalEntityCode,String auditTypeCode, String auditId);
	
	
}
