package com.bankaudit.rest.process.service;

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

import com.bankaudit.dto.process.ComplianceTrackingReportDto;
import com.bankaudit.dto.process.LettersAuditDto;
import com.bankaudit.dto.process.RatingFinancialParameterDto;
import com.bankaudit.dto.process.ReportDto;
import com.bankaudit.dto.process.ReportMISDto;

public interface ReportService {
	
	List<List<ReportDto>> getListofRisks(int legalEntityCodeStr, String userId, String unitId, String role, LocalDate asOfDate, String reportType);
	
	List<List<ReportDto>> getHealthIndexforRCSAUnits(int legalEntityCodeStr, String userId, String unitId, String role, LocalDate asOfDate, String reportType);

	List<List<ReportDto>> getRCSAProgressStatus(int legalEntityCodeStr, String userId, String unitId, String role, LocalDate asOfDate, String reportType);
	
	String updateDynamicStatements(int legalEntityCodeStr, String auditId, String auditTypeCode, String statementId);

	List<Date> getFinancialYearList(String legalEntityCode);

	List<ComplianceTrackingReportDto> getComplianceTrackingReport(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);
	
	List<RatingFinancialParameterDto> getAuditRatingList(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);
	
	List<RatingFinancialParameterDto> getAuditFinancialParameterList(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);

	List<LettersAuditDto> getAuditDetail(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);
	
	List<LettersAuditDto> getLettersDetail(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);
	
	/********************Start MIS Reports ***********************/
	
	List<ReportMISDto> reportStatusFinalisationDateMISReport(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);
	List<ReportMISDto> auditStatusMISReport(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);
	List<ReportMISDto> complianceStatusMISReport(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);
	List<ReportMISDto> supervisoryRatingMISReport(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);
	List<ReportMISDto> supervisoryRating3YearsMISReport(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);
	List<ReportMISDto> lettersMISReport(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);
	List<ReportMISDto> qsoGradingMISReport(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);	
	List<ReportMISDto> complianceRatingMISReport(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);	
	List<ReportMISDto> complianceRating3YearsMISReport(Integer legalEntityCode, String userId, LocalDate financialYear, String auditTypeCode);	 	
	/********************End MIS Reports   ***********************/
}
