package com.bankaudit.rest.process.service;


import java.util.Date;
import java.util.List;
import java.util.Map;

import com.bankaudit.dto.DataTableResponse;
import com.bankaudit.process.model.AdhocPlanFinalV;
import com.bankaudit.process.model.AuditPlan;
import com.bankaudit.process.model.AuditPlanV;
import com.bankaudit.process.model.AuditPlanWrk;
import com.bankaudit.process.model.AuditProcessV;
import com.bankaudit.process.model.AuditProcessValidate;

public interface AuditProcessVService {
	List<AuditProcessV> getAuditProcessByAuditPlan(int legalEntityCode,String auditType, String planStartDate, String planEndDate,String maker);
	List<AuditPlanV> getAuditProcessNextPlan(int legalEntityCode,String auditTypeCode); 
	List getauditProcessTeam(int legalEntityCode,String auditType,String userId);
	DataTableResponse  getAuditSchedules(int legalEntityCode,String search,Integer orderColumn,String orderDirection, Integer page, Integer size,String maker,String planType);
	Map<String, String> isValiedBusinessDate(String legalEntityCode,String unitId,String frequency,int duration,String currStartDate,String currEndDate,String plnStDate,String plnEnDate);
	void createAuditPlanTemp(List<AuditProcessValidate> auditProcessValidate);
	void deleteAuditPlanTemp(int legalEntityCode,String maker); 
	Map<String, Object> validateAuditProcess(AuditProcessValidate apv);
	
	Map<String, Object> validateAuditUpdateProcess(AuditProcessValidate apv);
	
	//Map<String, Object> validateAuditProcess(int legalEntityCode, String auditTypeCcode, Date planStartDate,Date planEndDate,String planId,String maker);
	//List<AuditProcessValidate> validateAuditProcess(int legalEntityCode, String auditTypeCcode, Date planStartDate,	Date planEndDate);
	 List<AuditProcessValidate> getValidateAuditProcess(int legalEntityCode,String auditTypeCode);
	String skillSetValidation(String legalEntityCode,String userId,String unitCode,String auditTypeCode);
	AuditPlan getAuditByPlanId(int legalEntityCode,String auditTypeCode,String planId);
	public boolean isAuditorsExist(int legalEntityCode) throws Exception ;
	public boolean isAuditParametersExist(int legalEntityCode,String auditTypeCode) throws Exception;
	List getAllUnits(int legalEntityCode, String search); 
	public List<AdhocPlanFinalV> getAdhocPlan(int legalEntityCode,String auditTypeCode,String unitCode,String currBusinesDate);
	//public List<AdhocPlanFinalV> getAdhocPlan(int legalEntityCode,String auditTypeCode,String planId/*,String currBusinesDate*/);
	String getAdhocUnitSheduleDetails(int legalEntityCode, String auditTypeCode, String unitCode,
			String currBusinesDate);
	public Map financialYearDates(int legalEntityCode);
	Map jurisdictionByShedule(int legalEntityCode, String units, String auditTypeCode,String plnStDate,String plnEnDate);
	
	public String previousAuditDetails(int legalEntityCode, String auditType, String unitCode, String auditId);
	Long getOperationAuditUnits(int legalEntityCode, String auditTypeCode, String units)throws Exception;
	Long getAllOperationAuditUnits(int legalEntityCode, String auditTypeCode, String units)throws Exception;
	
	
	Long numberOfBusinessDaysBtweenStartEndDates(String legalEntityCode, String unitCode, String stDate, String enDate); 
	public String getWatchListForAllAudits(int legalEntityCode,String auditTypeCode);
	Long getTargetAudits(int legalEntityCode, String units, String auditTypeCode, String userOrUnitCode);
	
	List<AuditProcessV> getAssessmentsByAuditType(int legalEntityCode,String auditType, String planStartDate, String planEndDate,String maker);
	
	List getRiskAssessorsTeam(int legalEntityCode,String auditType,String unitCode, String userId);
	List getRiskAssessorsTeamChekcer(int legalEntityCode,String auditType,String unitCode, String userId);
	List getauditProcessPIOTeam(int legalEntityCode,String auditType,String userId);
	
	List<AuditPlanV> getAuditProcessNextPlan(int legalEntityCode,String auditTypeCode, String plannerUnitCode); 
	
	List<AuditPlanWrk> isPlanAlreadyExist(int legalEntityCode,String userId,String parentUnitCode,String auditTypeCode);
	List<AuditProcessV> getAuditProcessByAuditPlanAtParent(int legalEntityCode,String auditType,String parentUnitCode, String planStartDate, String planEndDate,String maker);
	
	Map<String, String> isDateFallOnFortnight(String legalEntityCode,String unitId,String currDate);
	Map<String, String> isDateFallOnHoliday(String legalEntityCode,String unitId,String currDate);
}
