package com.bankaudit.rest.process.dao;

import java.time.LocalDate;
import java.util.List;
import java.util.Date;
import com.bankaudit.dao.Dao;
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 ReportDao extends Dao {

	List<ReportDto> getListofRisks(int legalEntityCodeStr, String userId, String role, LocalDate asOfDate, String reportType, List<String> assessmentList);
	
	List<ReportDto> getHealthIndexforRCSAUnits(int legalEntityCodeStr, String userId, String role, LocalDate asOfDate, String reportType, List<String> assessmentList);
	
	boolean isDeptAsRMD(Integer legalEntityCode ,String role,String userId);
	
	List<String> getDeptList(Integer legalEntityCode ,String role,String userIdOrUnitId );
	
	List<String> getAssessmentList(Integer legalEntityCode ,String role,String userId, LocalDate asOfDate,boolean isDeptAsRMD, List<String> deptList, List<String> unitList );
	
	List<ReportDto> getUnitNameAddressUserName(int legalEntityCode, String userId, String unitId);
	
	List<ReportDto> getRCSAProgressStatus(int legalEntityCodeStr, String userId, String role, LocalDate asOfDate, String reportType, List<String> assessmentList, LocalDate finYrStartDate, LocalDate finYrEndDate);
	
	String updateDynamicStatements(int legalEntityCode, String auditId, String auditTypeCode, String statementId);

	List<String> getAuditScheduleUnitIdsList(Integer legalEntityCode, List<String> unitList, LocalDate financialYear, String auditTypeCode, List<LocalDate>  financialYearList );

	List<ComplianceTrackingReportDto> getAuditScheduleReportList(Integer legalEntityCode, List<String> auditList,
			LocalDate financialYear, String auditTypeCode, List<LocalDate>  financialYearList );

	List<Date> getFinancialYearEndDate(Integer legalEntityCode);
	
	List<RatingFinancialParameterDto> getAuditRatingList(Integer legalEntityCode, List<String> unitList, LocalDate financialYear, String auditTypeCode, List<LocalDate>  financialYearList);
	
	List<RatingFinancialParameterDto> getAuditFinancialParameterList(Integer legalEntityCode, List<String> unitList, LocalDate financialYear, String auditTypeCode, List<LocalDate>  financialYearList);		 
	
	List<LettersAuditDto> getAuditDetail(Integer legalEntityCode, LocalDate financialYear, String auditTypeCode, List<String> unitList, List<LocalDate>  financialYearList );
	
	List<LettersAuditDto> getLettersDetail(Integer legalEntityCode, LocalDate financialYear, String auditTypeCode, List<String> unitList, List<LocalDate>  financialYearList );
	
	/********************Start MIS Reports ***********************/
	List<ReportMISDto> reportStatusFinalisationDateMISReport(Integer legalEntityCode, String auditTypeCode, LocalDate financialYear, List<LocalDate> financialYearList, 
			List<String> unitList);
	List<ReportMISDto> auditStatusMISReport(Integer legalEntityCode, String auditTypeCode, LocalDate financialYear, List<LocalDate> financialYearList, 
			List<String> unitList);
	List<ReportMISDto> complianceStatusMISReport(Integer legalEntityCode, String auditTypeCode, LocalDate financialYear, List<LocalDate> financialYearList, 
			List<String> unitList);
	List<ReportMISDto> supervisoryRatingMISReport(Integer legalEntityCode, String auditTypeCode, LocalDate financialYear, List<LocalDate> financialYearList, 
			List<String> unitList);
	List<ReportMISDto> supervisoryRating3YearsMISReport(Integer legalEntityCode, String auditTypeCode, LocalDate financialYear, List<LocalDate> financialYearList, 
			List<String> unitList);
	List<ReportMISDto> lettersMISReport(Integer legalEntityCode, String auditTypeCode, LocalDate financialYear, List<LocalDate> financialYearList, 
			List<String> unitList);
	List<ReportMISDto> qsoGradingMISReport(Integer legalEntityCode, String auditTypeCode, LocalDate financialYear, List<LocalDate> financialYearList, 
			List<String> unitList);
	List<ReportMISDto> complianceRatingMISReport(Integer legalEntityCode, String auditTypeCode, LocalDate financialYear, List<LocalDate> financialYearList, 
			List<String> unitList);
	List<ReportMISDto> complianceRating3YearsMISReport(Integer legalEntityCode, String auditTypeCode, LocalDate financialYear, List<LocalDate> financialYearList, 
			List<String> unitList);
	
	/********************End MIS Reports  ***********************/

}
