/ Published in: Java
Track email response logic
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
// find EmailMessage by cache_id EmailMessage emailMessage = emailMessageService.findBy(cacheId); // find BroadcastReceiverChannelDestination by channel, broadcast_id, destination, receiver_id BroadcastReceiverChannelDestination brcd = brcdService.findBy("EMAIL", emailMessage.getBroadcast().getId(), emailMessage.getReceiverEmail(), emailMessage.getReceiver().getId()); // get current BroadcastResponseOption of user BroadcastResponseOption curRespOpt = brcd.getResponse(); // find BroadcastResponseOption by broadcast_id and name_in_email (received BroadcastResponseOption from user) BroadcastResponseOption newRespOpt = broadcastResponseOptionService.findBy(emailMessage.getBroadcast().getId(), nameInEmail); // detect ResponseMessageTemplateType ResponseMessageTemplateType respType; respType = ResponseMessageTemplateType.ResponseReceived; // received after deadline } else if (null == curRespOpt) { respType = ResponseMessageTemplateType.NewResponse; // new response } else if (!newRespOpt.getNameInEmail().equalsIgnoreCase(curRespOpt.getNameInEmail())) { respType = ResponseMessageTemplateType.ResponseChanged; // change response } else if (newRespOpt.getNameInEmail().equalsIgnoreCase(curRespOpt.getNameInEmail())) { respType = ResponseMessageTemplateType.ResponseDuplicated; // duplicated response } // one BroadcastResponseOption has a list of ResponseMessageTemplate (NewResponse, ResponseChanged,...) List<ResponseMessageTemplate> lstRespMsgTempl = bRespOpt.getResponseOption().getResponseMessageTemplates(); for (ResponseMessageTemplate respMsgTempl : lstRespMsgTempl) { if (respType == respMsgTempl.getType()) { // get email to send // send email boolean sendingResult = broadcastWorker.sendEmail(emailMessage.getReceiverEmail(), emailSubject, emailContent); // action after responding ActionAfterResponding action = respMsgTempl.getActionAfterResponding(); if (null != action) { // Custom page if (ActionAfterRespondingType.Page == action.getType()) { } else if (ActionAfterRespondingType.Link == action.getType()) { // redirect to link } } } }