package com.bankaudit.dao;

import java.util.List;

import com.bankaudit.dto.DataTableResponse;
import com.bankaudit.dto.process.MaintRatingModelDto;
import com.bankaudit.model.MaintFormula;
import com.bankaudit.model.MaintRatingCategory;
import com.bankaudit.model.MaintRatingGrade;
import com.bankaudit.model.MaintRatingModelOverlayWrk;
import com.bankaudit.model.MaintRatingModelWrk;
import com.bankaudit.model.MaintRatingParameterInputsWrk;
import com.bankaudit.model.MaintRatingParameterMappingWrk;
import com.bankaudit.model.MaintRatingParameterRangeWrk;
import com.bankaudit.model.MaintRatingParameterDtlsWrk;
import com.bankaudit.model.MaintRatingSubCategory;
import com.bankaudit.process.model.IfcRatingParameterMapping;

public interface MaintRatingModelDao extends Dao {


	Long countRatingModel(Integer legalEntityCode);
	
	Long countRatingModelParameter(Integer legalEntityCode);
	
	List<IfcRatingParameterMapping> getInputValues(Integer legalEntityCode, String auditTypeCode);
	
	List<MaintFormula> getFactor(Integer legalEntityCode,  Integer noOfInputs);
	
	List<MaintRatingGrade> getGrades(Integer legalEntityCode, String rmCode);
	
	List<MaintRatingCategory> getRatingCategory(Integer legalEntityCode);
	
	List<MaintRatingSubCategory> getRatingSubCategory(Integer legalEntityCode, String categoryCode); 
	
	DataTableResponse getAllRatingModel(Integer legalEntityCode, String search,Integer orderColumn, String orderDirection, Integer page, Integer size);
	
	//MaintRatingModelDto getRatingModelParameterDetails(Integer legalEntityCode, String rmCode, String status);
	
	List<MaintRatingModelWrk>  getRatingModelBy(Integer legalEntityCode, String rmCode, String status);
	
	List<MaintRatingParameterDtlsWrk>  getRatingParameterDetailsBy(Integer legalEntityCode, String rmCode, String status);
	
	MaintRatingParameterInputsWrk  getRatingParameterInputsBy(Integer legalEntityCode, String rmCode, String paramCode, String status);
	
	List<MaintRatingParameterRangeWrk> getRatingParameterRangeBy(Integer legalEntityCode, String rmCode, List<String> paramCode, String status);
	
	List<MaintRatingParameterMappingWrk> getRatingParameterCategoryMappingBy(Integer legalEntityCode, String rmCode, List<String> paramCode, String status);
	
	List<MaintRatingModelOverlayWrk> getRatingModelOverlayBy(Integer legalEntityCode, String rmCode,   String status);
	
	void deleteRatingModelDetailsWhileAuthBy(Integer legalEntityCode, String rmCode, List<String> paramCode, String status);	
	void deleteRatingModelBy(Integer legalEntityCode, String rmCode, String status);	
	void deleteRatingParameterDetailsBy(Integer legalEntityCode, String rmCode, String paramCode, String status);	
	void deleteRatingParameterInputsBy(Integer legalEntityCode, String rmCode, String paramCode, String status);
	void deleteRatingParameterInputsFromWrkBy(Integer legalEntityCode, String rmCode, String paramCode);
	void deleteRatingParameterRangeBy(Integer legalEntityCode, String rmCode, String paramCode, String id, String status);	
	void deleteRatingParameterCategoryMappingBy(Integer legalEntityCode, String rmCode, String paramCode, String categoryCode, String subCategoryCode, String status);
	void deleteRatingParameterModelOverlayBy(Integer legalEntityCode, String rmCode, String level,String categoryCode,  String criteriaCode, String status);
	
	void authorizeRatingModelParameterDetails(MaintRatingModelWrk maintRatingModelWrk); 
 
}
