diff --git a/src/main/java/org/sunbird/common/util/Constants.java b/src/main/java/org/sunbird/common/util/Constants.java index 6b61a4333..92c1e85c0 100644 --- a/src/main/java/org/sunbird/common/util/Constants.java +++ b/src/main/java/org/sunbird/common/util/Constants.java @@ -395,6 +395,21 @@ public class Constants { public static final String DESCRIPTION = "description"; public static final String TEMPLATE = "template"; public static final String USER_REGISTERATION_TEMPLATE = "user-registration"; + public static final String STATUS_PARAM = "{status}"; + public static final String REG_CODE_PARAM = "{regCode}"; + public static final String BUTTON_URL = "btn-url"; + public static final String BUTTON_NAME = "btn-name"; + + // notification reuest params + public static final String DELIVERY_TYPE = "deliveryType"; + public static final String CONFIG = "config"; + public static final String IDS = "ids"; + + // wf status + public static final String INITIATED = "initiated"; + public static final String APPROVED = "approved"; + public static final String DENIED = "denied"; + public static final String EMAIL_EXIST_ERROR = "Email id already registered"; public static final String EMAIL_VERIFIED = "emailVerified"; public static final String USER_NAME = "userName"; diff --git a/src/main/java/org/sunbird/common/util/NotificationUtil.java b/src/main/java/org/sunbird/common/util/NotificationUtil.java index 9e82c19ba..69ff0ab43 100644 --- a/src/main/java/org/sunbird/common/util/NotificationUtil.java +++ b/src/main/java/org/sunbird/common/util/NotificationUtil.java @@ -1,7 +1,16 @@ package org.sunbird.common.util; +import static org.sunbird.common.util.Constants.INCOMPLETE_COURSES; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -12,41 +21,65 @@ import org.sunbird.common.model.Notification; import org.sunbird.common.model.Template; -import java.util.*; - -import static org.sunbird.common.util.Constants.INCOMPLETE_COURSES; - @Service(Constants.NOTIFICATION_UTIL) public class NotificationUtil { - public static final Logger Logger; - private static final String EXCEPTION = "Exception in Send Notification %s"; - - static { - Logger = LoggerFactory.getLogger(NotificationUtil.class); - } - - public void sendNotification(List sendTo, Map params, String senderMail, String notificationUrl) { - new Thread(() -> { - try { - HttpHeaders headers = new HttpHeaders(); - RestTemplate restTemplate = new RestTemplate(); - headers.setContentType(MediaType.APPLICATION_JSON); - Map notificationRequest = new HashMap<>(); - List notificationTosend = new ArrayList<>(Arrays.asList(new Notification(Constants.EMAIL, Constants.MESSAGE, - new EmailConfig(senderMail, Constants.INCOMPLETE_COURSES_MAIL_SUBJECT), sendTo, - new Template(null, INCOMPLETE_COURSES, params)))); - notificationRequest.put("request", new HashMap>() { - { - put("notifications", notificationTosend); - } - }); - Logger.info(String.format("Notification Request : %s", notificationRequest)); - HttpEntity req = new HttpEntity<>(notificationRequest, headers); - ResponseEntity resp = restTemplate.postForEntity(notificationUrl, req, String.class); - } catch (Exception e) { - Logger.error(String.format(EXCEPTION, e.getMessage())); - } - }).start(); - } + public static final Logger Logger; + private static final String EXCEPTION = "Exception in Send Notification %s"; + + @Autowired + RestTemplate restTemplate; + + static { + Logger = LoggerFactory.getLogger(NotificationUtil.class); + } + + public void sendNotification(List sendTo, Map params, String senderMail, + String notificationUrl) { + new Thread(() -> { + try { + HttpHeaders headers = new HttpHeaders(); + RestTemplate restTemplate = new RestTemplate(); + headers.setContentType(MediaType.APPLICATION_JSON); + Map notificationRequest = new HashMap<>(); + List notificationTosend = new ArrayList<>(Arrays.asList(new Notification(Constants.EMAIL, + Constants.MESSAGE, new EmailConfig(senderMail, Constants.INCOMPLETE_COURSES_MAIL_SUBJECT), + sendTo, new Template(null, INCOMPLETE_COURSES, params)))); + notificationRequest.put(Constants.REQUEST, new HashMap>() { + { + put(Constants.NOTIFICATIONS, notificationTosend); + } + }); + Logger.info(String.format("Notification Request : %s", notificationRequest)); + HttpEntity req = new HttpEntity<>(notificationRequest, headers); + ResponseEntity resp = restTemplate.postForEntity(notificationUrl, req, String.class); + } catch (Exception e) { + Logger.error(String.format(EXCEPTION, e.getMessage())); + } + }).start(); + } + + public void sendNotification(List> notifications) { + new Thread(() -> { + try { + String notificationUrl = PropertiesCache.getInstance().getProperty(Constants.NOTIFICATION_HOST) + + PropertiesCache.getInstance().getProperty(Constants.NOTIFICATION_ENDPOINT); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + Map notificationRequest = new HashMap<>(); + notificationRequest.put(Constants.REQUEST, new HashMap() { + { + put(Constants.NOTIFICATIONS, notifications); + } + }); + + HttpEntity req = new HttpEntity<>(notificationRequest, headers); + Logger.info(String.format("Notification Request : %s", notificationRequest)); + restTemplate.postForEntity(notificationUrl, req, Object.class); + } catch (Exception e) { + Logger.error(String.format(EXCEPTION, e.getMessage())); + } + }).start(); + } } \ No newline at end of file diff --git a/src/main/java/org/sunbird/user/registration/service/UserRegistrationNotificationServiceImpl.java b/src/main/java/org/sunbird/user/registration/service/UserRegistrationNotificationServiceImpl.java index 3c0c50cfe..9c9d72d81 100644 --- a/src/main/java/org/sunbird/user/registration/service/UserRegistrationNotificationServiceImpl.java +++ b/src/main/java/org/sunbird/user/registration/service/UserRegistrationNotificationServiceImpl.java @@ -1,6 +1,7 @@ package org.sunbird.user.registration.service; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -10,7 +11,6 @@ import org.sunbird.common.util.CbExtServerProperties; import org.sunbird.common.util.Constants; import org.sunbird.common.util.NotificationUtil; -import org.sunbird.common.util.PropertiesCache; import org.sunbird.user.registration.model.UserRegistration; @Service @@ -18,10 +18,10 @@ public class UserRegistrationNotificationServiceImpl implements UserRegistration @Autowired CbExtServerProperties serverProperties; - + @Autowired NotificationUtil notificationUtil; - + @Override public void sendNotification(UserRegistration userRegistration) { List sendTo = new ArrayList() { @@ -33,46 +33,58 @@ public void sendNotification(UserRegistration userRegistration) { }; Map notificationObj = new HashMap<>(); - notificationObj.put("mode", Constants.EMAIL); - notificationObj.put("deliveryType", Constants.MESSAGE); - notificationObj.put("config", new HashMap() { + notificationObj.put(Constants.MODE, Constants.EMAIL); + notificationObj.put(Constants.DELIVERY_TYPE, Constants.MESSAGE); + notificationObj.put(Constants.CONFIG, new HashMap() { { put(Constants.SUBJECT, serverProperties.getUserRegistrationSubject()); } }); - notificationObj.put("ids", sendTo); + notificationObj.put(Constants.IDS, sendTo); notificationObj.put(Constants.TEMPLATE, notificationMessage(userRegistration.getStatus(), userRegistration.getRegistrationCode())); if (notificationObj.get(Constants.TEMPLATE) != null) { - notificationUtil.sendNotification(sendTo, notificationObj, - PropertiesCache.getInstance().getProperty(Constants.SENDER_MAIL), - PropertiesCache.getInstance().getProperty(Constants.NOTIFICATION_HOST) - + PropertiesCache.getInstance().getProperty(Constants.NOTIFICATION_ENDPOINT)); + notificationUtil.sendNotification(Arrays.asList(notificationObj)); } } - + private Map notificationMessage(String status, String regCode) { Map template = new HashMap<>(); template.put(Constants.ID, Constants.USER_REGISTERATION_TEMPLATE); Map params = new HashMap<>(); - params.put(Constants.STATUS, serverProperties.getUserRegistrationStatus().replace("{status}", status)); - params.put(Constants.TITLE, serverProperties.getUserRegistrationTitle().replace("{status}", status)); - template.put("params", params); + + template.put(Constants.PARAMS, params); switch (status) { case "WF_INITIATED": params.put(Constants.TITLE, serverProperties.getUserRegistrationThankyouMessage()); + params.put(Constants.STATUS, + serverProperties.getUserRegistrationStatus().replace(Constants.STATUS_PARAM, Constants.INITIATED)); + params.put(Constants.TITLE, + serverProperties.getUserRegistrationTitle().replace(Constants.STATUS_PARAM, Constants.INITIATED)); params.put(Constants.DESCRIPTION, serverProperties.getUserRegistrationInitiatedMessage() - .replace("{regCode}", "" + regCode + "")); + .replace(Constants.REG_CODE_PARAM, "" + regCode + "")); break; case "WF_APPROVED": + params.put(Constants.STATUS, + serverProperties.getUserRegistrationStatus().replace(Constants.STATUS_PARAM, Constants.APPROVED)); + params.put(Constants.TITLE, + serverProperties.getUserRegistrationTitle().replace(Constants.STATUS_PARAM, Constants.APPROVED)); params.put(Constants.DESCRIPTION, serverProperties.getUserRegistrationApprovedMessage()); - params.put("btn-url", serverProperties.getUserRegistrationDomainName()); - params.put("btn-name", serverProperties.getUserRegisterationButtonName()); + params.put(Constants.BUTTON_URL, serverProperties.getUserRegistrationDomainName()); + params.put(Constants.BUTTON_NAME, serverProperties.getUserRegisterationButtonName()); break; case "WF_DENIED": + params.put(Constants.STATUS, + serverProperties.getUserRegistrationStatus().replace(Constants.STATUS_PARAM, Constants.DENIED)); + params.put(Constants.TITLE, + serverProperties.getUserRegistrationTitle().replace(Constants.STATUS_PARAM, Constants.DENIED)); break; case "FAILED": + params.put(Constants.STATUS, serverProperties.getUserRegistrationStatus().replace(Constants.STATUS_PARAM, + Constants.FAILED.toLowerCase())); + params.put(Constants.TITLE, serverProperties.getUserRegistrationTitle().replace(Constants.STATUS_PARAM, + Constants.FAILED.toLowerCase())); params.put(Constants.STATUS, serverProperties.getUserRegistrationFailedMessage()); break; diff --git a/src/main/java/org/sunbird/user/registration/util/UserRegistrationStatus.java b/src/main/java/org/sunbird/user/registration/util/UserRegistrationStatus.java index 70c0beb54..391e45990 100644 --- a/src/main/java/org/sunbird/user/registration/util/UserRegistrationStatus.java +++ b/src/main/java/org/sunbird/user/registration/util/UserRegistrationStatus.java @@ -19,4 +19,5 @@ public enum UserRegistrationStatus { public int getStatus() { return status; } + }