package com.mgm.mcrm.notification.services;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.mgm.mcrm.booking.models.Bookings;
import com.mgm.mcrm.booking.models.BookingsView;
import com.mgm.mcrm.common.dtos.EumnApprovalStatus;
import com.mgm.mcrm.common.dtos.config.ApiGatewaySetting;
import com.mgm.mcrm.common.dtos.http_util.HttpResponseResult;
import com.mgm.mcrm.common.utils.DateTimeUtil;
import com.mgm.mcrm.common.utils.HttpUtil;
import com.mgm.mcrm.common.utils.LogUtil;
import com.mgm.mcrm.notification.dtos.request.EmailProxyRequest;
import com.mgm.mcrm.notification.models.CfgEmailTemplate;
import com.mgm.mcrm.notification.models.Email;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Strings;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
@Service
public class SendEmailService {
@Value("${notification.default-email-sender}")
private String defaultEmailSender;
@Value("${notification.default-email-receiver}")
private String defaultEmailReceiver;
@Resource
private ApiGatewaySetting apiGatewaySetting;
private static final String emailTemp = "
Submission Date & Time:{{ttime}}
"+
"Submitted User:{{tuser}}
"+
"
" +
"\r\n" +
" \r\n" +
" \r\n" +
" | \r\n" +
" Conf#\r\n" +
" | \r\n" +
" \r\n" +
" Booking Status\r\n" +
" | \r\n" +
" \r\n" +
" Member ID\r\n" +
" | \r\n" +
" \r\n" +
" Member Name\r\n" +
" | \r\n" +
" \r\n" +
" Tier\r\n" +
" | \r\n" +
" \r\n" +
" Property\r\n" +
" | \r\n" +
" \r\n" +
" Room Type\r\n" +
" | \r\n" +
" \r\n" +
" Sharer\r\n" +
" | \r\n" +
" \r\n" +
" Original C/I\r\n" +
" | \r\n" +
" \r\n" +
" Original C/O\r\n" +
" | \r\n" +
" \r\n" +
" Extending C/O\r\n" +
" | \r\n" +
"
\r\n" +
" \r\n" +
" \r\n" +
" {{tbody}}"+
" \r\n" +
"
";
private static final String emailApprovalTemp = "Submission Date & Time:{{ttime}}
"+
"Submitted and Approver:{{tuser}}
"+
"
" +
"\r\n" +
" \r\n" +
" \r\n" +
" | \r\n" +
" Booking Status\r\n" +
" | \r\n" +
" \r\n" +
" Conf#\r\n" +
" | \r\n" +
" \r\n" +
" Member ID\r\n" +
" | \r\n" +
" \r\n" +
" Member Name\r\n" +
" | \r\n" +
" \r\n" +
" Tier\r\n" +
" | \r\n" +
" \r\n" +
" Property\r\n" +
" | \r\n" +
" \r\n" +
" Room Type\r\n" +
" | \r\n" +
" \r\n" +
" Sharer\r\n" +
" | \r\n" +
" \r\n" +
" Type\r\n" +
" | \r\n" +
" \r\n" +
" Requested C/I\r\n" +
" | \r\n" +
" \r\n" +
" Requested C/O\r\n" +
" | \r\n" +
" \r\n" +
" Approved Property\r\n" +
" | \r\n" +
" \r\n" +
" Approved Room Type\r\n" +
" | \r\n" +
" \r\n" +
" Approved C/I\r\n" +
" | \r\n" +
" \r\n" +
" Approved C/O\r\n" +
" | \r\n" +" \r\n" +
" Booker Team\r\n" +
" | \r\n" +
" \r\n" +
" Booker ID\r\n" +
" | \r\n" +
" \r\n" +
" Booker Name\r\n" +
" | \r\n" +
" \r\n" +
" Approval Remark\r\n" +
" | \r\n" +
" \r\n" +
" Remark\r\n" +
" | \r\n" +
"
\r\n" +
" \r\n" +
" \r\n" +
" {{tbody}}"+
" \r\n" +
"
";
private static final String emailNewApprovalTemp = "Submission Date & Time:{{ttime}}
"+
"Submitted and Approver:{{tuser}}
"+
"
" +
"{{content}}"+
"\r\n" +
" \r\n" +
" \r\n" +
" | \r\n" +
" Booking Status\r\n" +
" | \r\n" +
" \r\n" +
" Member ID\r\n" +
" | \r\n" +
" \r\n" +
" Member Name\r\n" +
" | \r\n" +
" \r\n" +
" Tier\r\n" +
" | \r\n" +
" \r\n" +
" Property\r\n" +
" | \r\n" +
" \r\n" +
" Room Type\r\n" +
" | \r\n" +
" \r\n" +
" Sharer\r\n" +
" | \r\n" +
" \r\n" +
" Type\r\n" +
" | \r\n" +
" \r\n" +
" Requested C/I\r\n" +
" | \r\n" +
" \r\n" +
" Requested C/O\r\n" +
" | \r\n" +
" \r\n" +
" Booker Team\r\n" +
" | \r\n" +
" \r\n" +
" Booker ID\r\n" +
" | \r\n" +
" \r\n" +
" Booker Name\r\n" +
" | \r\n" +
" \r\n" +
" Approval Remark\r\n" +
" | \r\n" +
" \r\n" +
" Remark\r\n" +
" | \r\n" +
"
\r\n" +
" \r\n" +
" \r\n" +
" {{tbody}}"+
" \r\n" +
"
";
private static final String cancelEmailTemp = "Submission Date & Time:{{ttime}}
"+
"Submitted User:{{tuser}}
"+
"
" +
"{{content}}"+
"\r\n" +
" \r\n" +
" \r\n" +
" | \r\n" +
" Conf#\r\n" +
" | \r\n" +
" \r\n" +
" Booking Status\r\n" +
" | \r\n" +
" \r\n" +
" Member ID\r\n" +
" | \r\n" +
" \r\n" +
" Member Name\r\n" +
" | \r\n" +
" \r\n" +
" Tier\r\n" +
" | \r\n" +
" \r\n" +
" Property\r\n" +
" | \r\n" +
" \r\n" +
" Room Type\r\n" +
" | \r\n" +
" \r\n" +
" Sharer\r\n" +
" | \r\n" +
" \r\n" +
" Type\r\n" +
" | \r\n" +
" \r\n" +
" Original C/I\r\n" +
" | \r\n" +
" \r\n" +
" Original C/O\r\n" +
" | \r\n" +
" \r\n" +
" Change C/I\r\n" +
" | \r\n" +
" \r\n" +
" Change C/O\r\n" +
" | \r\n" +
"
\r\n" +
" \r\n" +
" \r\n" +
" {{tbody}}"+
" \r\n" +
"
";
public Email sendExtendEmail(Bookings book, BookingsView originBook, Email emailObj, String userId, String userName, String emailTo) {
String content1 = emailTemp;
try {
EmailProxyRequest emailRequest = new EmailProxyRequest();
emailRequest.setTo(StringUtils.isNotBlank(emailTo)?emailTo: defaultEmailReceiver);
emailRequest.setSender(defaultEmailSender);
String subTitle = "";
emailRequest.setSubject("[Urgent] Extension Request from Mobile CRM APP"+subTitle);
SimpleDateFormat sf = new SimpleDateFormat("dd-MMM-yyyy HH:mm");
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
String RequestDate = sf.format(new Date());
String content2 = "";
String tTime = RequestDate;
userId = !StringUtils.isEmpty(userId)?userId:"";
userName = !StringUtils.isEmpty(userName)?userName:"";
String tUser = userId+" "+userName;
String operaStatus = Strings.CS.replace(book.getLastOperaStatus(), "_", " ");
content2 += ""+
"| "
+book.getConfirmationNo()+
" | "+
""
+operaStatus+
" | " +
""
+book.getPlayerId()+
" | " +
""
+book.getMemberLastName()+
" | " +
""
+(originBook.getMemberTier()!=null?originBook.getMemberTier():"")+
" | " +
""
+(originBook.getPropertyName()!=null?originBook.getPropertyName():"")+
" | " +
""
+(originBook.getRoom()!=null?originBook.getRoom():"")+
" | "+
""
+(originBook.getSharerName()!=null?originBook.getSharerName():"")+
" | "+
""
+format.format(originBook.getCheckinDate())+
" | " +
""
+format.format(originBook.getCheckoutDate())+
" | " +
""
+format.format(book.getCheckoutDate())+
" | " +
"
";
content1 = content1.replace("{{tbody}}", content2);
content1 = content1.replace("{{ttime}}", tTime);
content1 = content1.replace("{{tuser}}", tUser);
emailRequest.setShowTemp(content1);
emailRequest.setContent(content1);
JSONObject emailJson = new JSONObject();
emailJson.put("conf", book.getConfirmationNo());
emailJson.put("memberId", book.getPlayerId());
emailJson.put("memberName", book.getMemberLastName());
emailJson.put("tier", originBook.getMemberTier());
emailJson.put("property", originBook.getPropertyName());
emailJson.put("roomType", originBook.getRoom());
emailJson.put("checkin", format.format(originBook.getCheckinDate()));
emailJson.put("checkout", format.format(originBook.getCheckoutDate()));
emailJson.put("extCheckout", format.format(book.getCheckoutDate()));
emailObj.setSendObject(emailJson.toJSONString());
emailObj.setContent(content1);
emailObj.setSendTo(emailRequest.getTo());
HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting);
String resultMsg = this.extractResultFromResponse(httpResult);
if(StringUtils.isBlank(resultMsg)){
emailObj.setStatus(1);
LogUtil.info(SendEmailService.class, "---mgmEmail.sendExtendEmail--OK!");
}else{
emailObj.setStatus(0);
emailObj.setMessage("Send Email to ["+emailRequest.getTo()+"] Failed:"+resultMsg);
LogUtil.error(SendEmailService.class, "---mgmEmail.sendExtendEmail--Failed!"+resultMsg);
}
} catch (Exception e) {
LogUtil.error(SendEmailService.class,"---mgmEmail.sendExtenEmail--Exception-->>"+e.getMessage());
emailObj.setMessage(e.getMessage());
emailObj.setStatus(0);
}
return emailObj;
}
public Email sendApprovalNewEmail(Bookings book,BookingsView bookView,Email emailObj,String userId,String userName,boolean isOverBook,boolean isConnectRoom,String emailTo) {
String content1 = emailNewApprovalTemp;
try {
EmailProxyRequest emailRequest = new EmailProxyRequest();
emailRequest.setTo(StringUtils.isNotBlank(emailTo)?emailTo: defaultEmailReceiver);
emailRequest.setSender(defaultEmailSender);
String mainTitle;
if(isConnectRoom) {
mainTitle = "[R2/Y2]";
}else if(isOverBook) {
mainTitle = "[Overbook]";
}else {
mainTitle = "[Urgent]";
}
emailRequest.setSubject(mainTitle+"Waitlist Approval from Mobile CRM APP"); // 标题
SimpleDateFormat sf = new SimpleDateFormat("dd-MMM-yyyy HH:mm");
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
String RequestDate = sf.format(new Date());
String content2 = "";
String tTime = RequestDate;
userId = !StringUtils.isEmpty(userId)?userId:"";
userName = !StringUtils.isEmpty(userName)?userName:"";
String tUser = userId+" "+userName;
String approvalStatus = EumnApprovalStatus.getApprovalStatusByDBValue(book.getApproveStatus());
content2 += ""+
"| "
+approvalStatus+
" | "+
""
+bookView.getPlayerId()+
" | " +
""
+bookView.getMemberLastName()+
" | " +
""
+(bookView.getMemberTier()!=null?bookView.getMemberTier():"")+
" | " +
""
+(bookView.getPropertyName()!=null?bookView.getPropertyName():"")+
" | " +
""
+(bookView.getRoom()!=null?bookView.getRoom():"")+
" | "+
""
+(bookView.getSharerName()!=null?bookView.getSharerName():"")+
" | " +
""
+"New"+
" | "+
""
+format.format(bookView.getCheckinDate())+
" | " +
""
+format.format(bookView.getCheckoutDate())+
" | " +
""
+(bookView.getSectionName()!=null?bookView.getSectionName():"")+
" | " +
""
+bookView.getCreatedBy()+
" | " +
""
+bookView.getCreatedByName()+
" | " +
""
+(bookView.getApprovalRemark()!=null?bookView.getApprovalRemark():"")+
" | " +
""
+(bookView.getRemark()!=null?bookView.getRemark():"")+
" | " +
"
";
String mailContent = isConnectRoom?"Please create TT/YY booking for below approved booking
":"";
content1 = content1.replace("{{tbody}}", content2);
content1 = content1.replace("{{ttime}}", tTime);
content1 = content1.replace("{{tuser}}", tUser);
content1 = content1.replace("{{content}}", mailContent);
emailRequest.setShowTemp(content1);
emailRequest.setContent(content1);
JSONObject emailJson = new JSONObject();
emailJson.put("approvalStatus", approvalStatus);
emailJson.put("memberId", bookView.getPlayerId());
emailJson.put("memberName", bookView.getMemberLastName());
emailJson.put("tier", bookView.getMemberTier());
emailJson.put("property", bookView.getPropertyName());
emailJson.put("roomType", bookView.getRoom());
emailJson.put("type", "New");
emailJson.put("checkin", format.format(bookView.getCheckinDate()));
emailJson.put("checkout", format.format(bookView.getCheckoutDate()));
emailJson.put("bookerTeam", bookView.getBookerTeam());
emailJson.put("bookerId", bookView.getCreatedBy());
emailJson.put("bookerName", bookView.getCreatedByName());
emailJson.put("approvalRemark", bookView.getApprovalRemark());
emailJson.put("remark", bookView.getRemark());
emailObj.setSendObject(emailJson.toJSONString());
emailObj.setContent(content1);
emailObj.setSendTo(emailRequest.getTo());
HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting);
String resultMsg = this.extractResultFromResponse(httpResult);
if(StringUtils.isBlank(resultMsg)){
emailObj.setStatus(1);
LogUtil.info(SendEmailService.class, "---mgmEmail.sendApprovalNewEmail--OK!");
}else{
emailObj.setStatus(0);
emailObj.setMessage("Send Email to ["+emailRequest.getTo()+"] Failed:"+resultMsg);
LogUtil.error(SendEmailService.class, "---mgmEmail.sendApprovalNewEmail--Failed!"+resultMsg);
}
} catch (Exception e) {
LogUtil.error(SendEmailService.class,"---mgmEmail.sendApprovalNewEmail--Exception-->>"+e.getMessage());
emailObj.setMessage(e.getMessage());
emailObj.setStatus(0);
}
return emailObj;
}
public Email sendCreateR2Y2NewEmail(Bookings book,BookingsView bookView,Email emailObj,String userId,String userName,boolean isOverBook,boolean isConnectRoom,String emailTo) {
String content1 = emailNewApprovalTemp;
try {
EmailProxyRequest emailRequest = new EmailProxyRequest();
emailRequest.setTo(StringUtils.isNotBlank(emailTo)?emailTo: defaultEmailReceiver);
emailRequest.setSender(defaultEmailSender);
String mainTitle;
if(isConnectRoom) {
mainTitle = "[R2/Y2]";
}else if(isOverBook) {
mainTitle = "[Overbook]";
}else {
mainTitle = "[Urgent]";
}
emailRequest.setSubject(mainTitle+"Booking Creation from Mobile CRM APP"); // 标题
SimpleDateFormat sf = new SimpleDateFormat("dd-MMM-yyyy HH:mm");
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
String RequestDate = sf.format(new Date());
String content2 = "";
String tTime = RequestDate;
userId = !StringUtils.isEmpty(userId)?userId:"";
userName = !StringUtils.isEmpty(userName)?userName:"";
String tUser = userId+" "+userName;
String approvalStatus = EumnApprovalStatus.getApprovalStatusByDBValue(book.getApproveStatus());
content2 += ""+
"| "
+approvalStatus+
" | "+
""
+bookView.getPlayerId()+
" | " +
""
+bookView.getMemberLastName()+
" | " +
""
+(bookView.getMemberTier()!=null?bookView.getMemberTier():"")+
" | " +
""
+(bookView.getPropertyName()!=null?bookView.getPropertyName():"")+
" | " +
""
+(bookView.getRoom()!=null?bookView.getRoom():"")+
" | "+
""
+(bookView.getSharerName()!=null?bookView.getSharerName():"")+
" | " +
""
+"New"+
" | "+
""
+format.format(bookView.getCheckinDate())+
" | " +
""
+format.format(bookView.getCheckoutDate())+
" | " +
""
+(bookView.getSectionName()!=null?bookView.getSectionName():"")+
" | " +
""
+bookView.getCreatedBy()+
" | " +
""
+bookView.getCreatedByName()+
" | " +
""
+(bookView.getApprovalRemark()!=null?bookView.getApprovalRemark():"")+
" | " +
""
+(bookView.getRemark()!=null?bookView.getRemark():"")+
" | " +
"
";
String mailContent = isConnectRoom?"Please create TT/YY booking for below approved booking
":"";
content1 = content1.replace("{{tbody}}", content2);
content1 = content1.replace("{{ttime}}", tTime);
content1 = content1.replace("{{tuser}}", tUser);
content1 = content1.replace("{{content}}", mailContent);
emailRequest.setShowTemp(content1);
emailRequest.setContent(content1);
JSONObject emailJson = new JSONObject();
emailJson.put("approvalStatus", approvalStatus);
emailJson.put("memberId", bookView.getPlayerId());
emailJson.put("memberName", bookView.getMemberLastName());
emailJson.put("tier", bookView.getMemberTier());
emailJson.put("property", bookView.getPropertyName());
emailJson.put("roomType", bookView.getRoom());
emailJson.put("type", "New");
emailJson.put("checkin", format.format(bookView.getCheckinDate()));
emailJson.put("checkout", format.format(bookView.getCheckoutDate()));
emailJson.put("bookerTeam", bookView.getBookerTeam());
emailJson.put("bookerId", bookView.getCreatedBy());
emailJson.put("bookerName", bookView.getCreatedByName());
emailJson.put("approvalRemark", bookView.getApprovalRemark());
emailJson.put("remark", bookView.getRemark());
emailObj.setSendObject(emailJson.toJSONString());
emailObj.setContent(content1);
emailObj.setSendTo(emailRequest.getTo());
HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting);
String resultMsg = this.extractResultFromResponse(httpResult);
if(StringUtils.isBlank(resultMsg)){
emailObj.setStatus(1);
LogUtil.info(SendEmailService.class, "---mgmEmail.sendApprovalNewEmail--OK!");
}else{
emailObj.setStatus(0);
emailObj.setMessage("Send Email to ["+emailRequest.getTo()+"] Failed:"+resultMsg);
LogUtil.error(SendEmailService.class, "---mgmEmail.sendApprovalNewEmail--Failed!"+resultMsg);
}
} catch (Exception e) {
LogUtil.error(SendEmailService.class,"---mgmEmail.sendApprovalNewEmail--Exception-->>"+e.getMessage());
emailObj.setMessage(e.getMessage());
emailObj.setStatus(0);
}
return emailObj;
}
public Email sendApprovalExtendEmail(Bookings book, BookingsView originBook, Email emailObj, String userId, String userName, BookingsView viewBook, boolean isOverBook, String emailTo) {
String content1 = emailApprovalTemp;
try {
EmailProxyRequest emailRequest = new EmailProxyRequest();
emailRequest.setTo(StringUtils.isNotBlank(emailTo)?emailTo: defaultEmailReceiver);
emailRequest.setSender(defaultEmailSender);
String subTitle = "";
String mainTitle = isOverBook?"[Overbook]":"[Urgent]";
emailRequest.setSubject(mainTitle+"Waitlist Approval from Mobile CRM APP"+subTitle); // 标题
SimpleDateFormat sf = new SimpleDateFormat("dd-MMM-yyyy HH:mm");
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
String RequestDate = sf.format(new Date());
String content2 = "";
String tTime = RequestDate;
userId = !StringUtils.isEmpty(userId)?userId:"";
userName = !StringUtils.isEmpty(userName)?userName:"";
String tUser = userId+" "+userName;
String approvalStatus = EumnApprovalStatus.getApprovalStatusByDBValue(book.getApproveStatus());
String changeProperty = "";
String changeRoom = "";
String changeCheckInDate = "";
if(!Strings.CS.equals(viewBook.getPropertyName(), originBook.getPropertyName()) ||
!Strings.CS.equals(viewBook.getRoom(), originBook.getRoom()) ||
viewBook.getCheckinDate().getTime()!=originBook.getCheckoutDate().getTime()) {
changeProperty = viewBook.getPropertyName()!=null?viewBook.getPropertyName():"";
changeRoom = viewBook.getRoom()!=null?viewBook.getRoom():"";
changeCheckInDate = viewBook.getCheckinDate()!=null?format.format(viewBook.getCheckinDate()):"";
}
content2 += ""+
"| "
+approvalStatus+
" | "+
""
+originBook.getConfirmationNo()+
" | "+
""
+originBook.getPlayerId()+
" | " +
""
+originBook.getMemberLastName()+
" | " +
""
+(originBook.getMemberTier()!=null?originBook.getMemberTier():"")+
" | " +
""
+(originBook.getPropertyName()!=null?originBook.getPropertyName():"")+
" | " +
""
+(originBook.getRoom()!=null?originBook.getRoom():"")+
" | "+
""
+(originBook.getSharerName()!=null?originBook.getSharerName():"")+
" | "+
""
+"Extend"+
" | "+
""
+format.format(originBook.getCheckinDate())+
" | " +
""
+format.format(originBook.getCheckoutDate())+
" | " +
""
+changeProperty+
" | " +
""
+changeRoom+
" | " +
""
+changeCheckInDate+
" | " +
""
+format.format(book.getCheckoutDate())+
" | " +
""
+(viewBook.getSectionName()!=null?viewBook.getSectionName():"")+
" | " +
""
+originBook.getCreatedBy()+
" | " +
""
+originBook.getCreatedByName()+
" | " +
""
+(book.getApprovalRemark()!=null?book.getApprovalRemark():"")+
" | " +
""
+(book.getRemark()!=null?book.getRemark():"")+
" | " +
"
";
content1 = content1.replace("{{tbody}}", content2);
content1 = content1.replace("{{ttime}}", tTime);
content1 = content1.replace("{{tuser}}", tUser);
emailRequest.setShowTemp(content1);
emailRequest.setContent(content1);
JSONObject emailJson = new JSONObject();
emailJson.put("approvalStatus", approvalStatus);
emailJson.put("conf", book.getConfirmationNo());
emailJson.put("memberId", book.getPlayerId());
emailJson.put("memberName", book.getMemberLastName());
emailJson.put("tier", originBook.getMemberTier());
emailJson.put("property", originBook.getPropertyName());
emailJson.put("roomType", originBook.getRoom());
emailJson.put("type", "Extend");
emailJson.put("checkin", format.format(originBook.getCheckinDate()));
emailJson.put("checkout", format.format(originBook.getCheckoutDate()));
emailJson.put("changeProperty", changeProperty);
emailJson.put("changeRoom", changeRoom);
emailJson.put("changeCheckin", changeCheckInDate);
emailJson.put("changeCheckout", format.format(book.getCheckoutDate()));
emailJson.put("bookerTeam", viewBook.getBookerTeam());
emailJson.put("bookerId", originBook.getCreatedBy());
emailJson.put("bookerName", originBook.getCreatedByName());
emailJson.put("approvalRemark", book.getApprovalRemark());
emailJson.put("remark", book.getRemark());
emailObj.setSendObject(emailJson.toJSONString());
emailObj.setContent(content1);
emailObj.setSendTo(emailRequest.getTo());
HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting);
String resultMsg = this.extractResultFromResponse(httpResult);
if(StringUtils.isBlank(resultMsg)){
emailObj.setStatus(1);
LogUtil.info(SendEmailService.class, "---mgmEmail.sendApprovalExtendEmail--OK!");
}else{
emailObj.setStatus(0);
emailObj.setMessage("Send Email to ["+emailRequest.getTo()+"] Failed:"+resultMsg);
LogUtil.error(SendEmailService.class, "---mgmEmail.sendApprovalExtendEmail--Failed!"+resultMsg);
}
} catch (Exception e) {
LogUtil.error(SendEmailService.class,"---mgmEmail.sendApprovalExtendEmail--Exception-->>"+e.getMessage());
emailObj.setMessage(e.getMessage());
emailObj.setStatus(0);
}
return emailObj;
}
public Email sendCancelEmail(Bookings book,BookingsView bookingsView,Email emailObj,String userId,String userName,String emailTo) {
String content1 = cancelEmailTemp;
try {
EmailProxyRequest emailRequest = new EmailProxyRequest();
emailRequest.setTo(StringUtils.isNotBlank(emailTo)?emailTo: defaultEmailReceiver);
emailRequest.setSender(defaultEmailSender);
String subTitle = "";
emailRequest.setSubject("[Urgent] Modify Request from Mobile CRM APP"+subTitle); // 标题
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String RequestDate = sf.format(new Date());
String tTime = RequestDate;
userId = !StringUtils.isEmpty(userId)?userId:"";
userName = !StringUtils.isEmpty(userName)?userName:"";
String tUser = userId+" "+userName;
String content2 = "";
userId = !StringUtils.isEmpty(userId)?userId:"";
userName = !StringUtils.isEmpty(userName)?userName:"";
String approvalStatus = EumnApprovalStatus.getApprovalStatusByDBValue(book.getApproveStatus());
content2 += ""+
"| "
+bookingsView.getConfirmationNo()+
" | "+
""
+approvalStatus+
" | "+
""
+bookingsView.getPlayerId()+
" | " +
""
+bookingsView.getMemberLastName()+
" | " +
""
+(bookingsView.getTier()!=null?bookingsView.getTier():"")+
" | " +
""
+(bookingsView.getPropertyName()!=null?bookingsView.getPropertyName():"")+
" | " +
""
+(bookingsView.getRoom()!=null?bookingsView.getRoom():"")+
" | "+
""
+(bookingsView.getSharerName()!=null?bookingsView.getSharerName():"")+
" | "+
""
+"Cancel"+
" | "+
""
+format.format(bookingsView.getCheckinDate())+
" | " +
""
+format.format(bookingsView.getCheckoutDate())+
" | " +
""
+book.getChangeCheckinDate()+
" | " +
""
+book.getChangeCheckoutDate()+
" | ";
String content = "Please cancel Conf#"+book.getConfirmationNo()+" under "+book.getMemberLastName();
content1 = content1.replace("{{tbody}}", content2);
content1 = content1.replace("{{ttime}}", tTime);
content1 = content1.replace("{{tuser}}", tUser);
content1 = content1.replace("{{content}}", content);
emailRequest.setShowTemp(content1);
emailRequest.setContent(content1);
JSONObject emailJson = new JSONObject();
emailJson.put("conf", book.getConfirmationNo());
emailJson.put("memberId", book.getPlayerId());
emailJson.put("memberName", book.getMemberLastName());
emailObj.setSendObject(emailJson.toJSONString());
emailObj.setContent(content1);
emailObj.setSendTo(emailRequest.getTo());
HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting);
String resultMsg = this.extractResultFromResponse(httpResult);
if(StringUtils.isBlank(resultMsg)){
emailObj.setStatus(1);
LogUtil.info(SendEmailService.class, "---mgmEmail.sendCancelEmail--OK!");
}else{
emailObj.setStatus(0);
emailObj.setMessage("Send Email to ["+emailRequest.getTo()+"] Failed:"+resultMsg);
LogUtil.error(SendEmailService.class, "---mgmEmail.sendCancelEmail--Failed!"+resultMsg);
}
} catch (Exception e) {
LogUtil.error(SendEmailService.class,"---mgmEmail.sendCancelEmail--Exception-->>"+e.getMessage());
emailObj.setMessage(e.getMessage());
emailObj.setStatus(0);
}
return emailObj;
}
public boolean sendOtherBookingEmail(CfgEmailTemplate emailTemplate) {
boolean status = false;
try {
EmailProxyRequest emailRequest = new EmailProxyRequest();
emailRequest.setTo(defaultEmailReceiver);
emailRequest.setSender(emailTemplate.getSender());
String subject = emailTemplate.getSubject();
subject = Strings.CI.replace(subject, "[TODAY]", DateTimeUtil.getCurrentDate("dd MMM"));
emailRequest.setSubject(subject); // 标题
emailRequest.setCc(emailTemplate.getCc());
emailRequest.setShowTemp(emailTemplate.getShowTemp());
emailRequest.setContent(emailTemplate.getShowTemp());
HttpResponseResult httpResult = HttpUtil.invokeGatewayEmailAPI((JSONObject) JSON.toJSON(emailRequest), "POST", null, apiGatewaySetting);
String resultMsg = this.extractResultFromResponse(httpResult);
if(StringUtils.isBlank(resultMsg)){
status=true;
LogUtil.info(SendEmailService.class, "---mgmEmail.sendOtherBookingEmail--OK!");
}else{
status=false;
LogUtil.error(SendEmailService.class, "send email failed:" + resultMsg);
}
} catch (Exception e) {
LogUtil.error(SendEmailService.class,"---mgmEmail.sendOtherBookingEmail--Exception-->>"+e.getMessage());
status=false;
}
return status;
}
private String extractResultFromResponse(HttpResponseResult httpResult){
String result ="";
try{
JSONObject obj = JSONObject.parseObject(httpResult.getResponseContent());
if(obj.getBooleanValue("success")) {
result="";
}else {
if(obj.getString("message")!=null&&obj.getString("message")!="") {
result = obj.getString("message");
}else {
result = "System Error";
}
}
}catch(Exception err){
result = err.getMessage();
}
return result;
}
}