package com.bankaudit.rest.process.service;

import java.util.Map;

public interface EmailService {
	
	String sendEmailFirstNotification(Integer legalEntityCode) throws Exception;
	
	String sendEmailBeforeDueNotification(Integer legalEntityCode) throws Exception;
	
	String sendEmailOnCompliance(Integer legalEntityCode, Integer comlianceEventId) throws Exception;
	
	/****  Email Trigger for BaaS DOS ****/
	String sendInspectionInitiate(Integer legalEntityCode, String auditId) throws Exception;
	
	String sendInspectionExit(Integer legalEntityCode, String auditId) throws Exception;
	
	String sendReadyForReview(Integer legalEntityCode, String auditId) throws Exception;
	
	String sendInspectionDispatch(Integer legalEntityCode, String auditId) throws Exception;
	
	String sendComplianceSubmission(Integer legalEntityCode, String auditId) throws Exception;

	String sendFurtherCompliance(Integer legalEntityCode, String auditId) throws Exception;
	
	String sendEmailForInspectionNotification(Integer legalEntityCode) throws Exception;
	
	String sendEmailForInspection2ndNotification(Integer legalEntityCode) throws Exception;
	
	/************************** 
	 * RRR -> When clicked by PIO, for Review
	 * RAR -> When Allocator allocates to Reviewer
	 * RC  -> hen Reviewer completes Review
	 * FS  -> When PIO re-submit for review
	 * RR  -> When Reviewer provide feedback/(Rejected the review)
	 * RA  -> When Reviewer accepted Review
	 * RS  -> When Reviewer finalized inspection	 
	 */	
	String sendEmailDuringInpsectionReview(Integer legalEntityCode, String auditId, String reportReviewStatus) throws Exception;  
	
	
	/*String sendReviewReadyToAllocator(Integer legalEntityCode, String auditId) throws Exception;  // When clicked by PIO, for Review
	String sendAllocated(Integer legalEntityCode, String auditId) throws Exception;				  // When Allocator allocates to Reviewer
	String sendReviewComplete(Integer legalEntityCode, String auditId) throws Exception;		  // When Reviewer completes Review
	String sendReviewModify(Integer legalEntityCode, String auditId) throws Exception;		  	  // When PIO re-submit for review
	String sendReviewAccepted(Integer legalEntityCode, String auditId) throws Exception;		  // When Reviewer accepted Review
	String sendReviewFinalised(Integer legalEntityCode, String auditId) throws Exception;		  // When Reviewer finalized inspection*/
	
	String sendScurityAssigned(Integer legalEntityCode, String auditId) throws Exception;		  // When Lead scrutinizer assigns to scrutinizer
	
	/**** BaaS DOS, End Here ****/
	
	/***** Baas DOS, Notifications Phase II *********/
	String sendEmailBeforeDueExitAudit(Integer legalEntityCode, Map<String, String> thresholdMap) throws Exception;
	
	/*String sendEmailAfterDueExitAudit(Integer legalEntityCode) throws Exception;
	
	String sendEmailBeforeDueFinaliseIR(Integer legalEntityCode) throws Exception;
	
	String sendEmailAfterDueFinaliseIR(Integer legalEntityCode) throws Exception;

	String sendEmailBeforeDueComplianceSubmission(Integer legalEntityCode) throws Exception;
	
	String sendEmailAfterDueComplianceSubmission(Integer legalEntityCode) throws Exception;
	
	String sendEmailBeforeDueScrutinySubmission(Integer legalEntityCode) throws Exception;
	
	String sendEmailAfterDueScrutinySubmission(Integer legalEntityCode) throws Exception;
	
	String sendEmailAfterDueFurtherCompianceSubmissionBank(Integer legalEntityCode) throws Exception;
	
	String sendEmailAfterDueFurtherCompianceSubmissionScrutiniser(Integer legalEntityCode) throws Exception;	*/
	
	
	/***** Baas DOS, Notifications Phase II, End Here *********/
	
	
	void sendEmailWithTokenForResetPwd(Integer legalEntityCode, String emailId, String token) throws Exception;

}
