Files
bflows-bandi-be/src/main/java/net/gepafin/tendermanagement/dao/SystemEmailTemplatesDao.java
2025-02-11 11:38:56 +05:30

136 lines
5.2 KiB
Java

package net.gepafin.tendermanagement.dao;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.gepafin.tendermanagement.enums.EmailScenarioTypeEnum;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import net.gepafin.tendermanagement.entities.HubEntity;
import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity;
import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum;
import net.gepafin.tendermanagement.model.response.SystemEmailTemplateResponse;
import net.gepafin.tendermanagement.repositories.SystemEmailTemplatesRespository;
import net.gepafin.tendermanagement.util.Utils;
@Component
public class SystemEmailTemplatesDao {
@Autowired
private SystemEmailTemplatesRespository systemEmailTemplatesRespository;
@Value("${fe.base.url}")
private String feBaseUrl;
@Value("${default.email.signature}")
private String defaultEmailSignature;
public SystemEmailTemplateResponse retrieveTemplate(SystemEmailTemplatesEntityTypeEnum type, HubEntity hub, Locale language) {
SystemEmailTemplatesEntity dbSystemEmailTemplatesEntity = null;
if(hub != null){
dbSystemEmailTemplatesEntity = systemEmailTemplatesRespository
.findByTypeAndHubEntityId(type.getValue(), hub.getId());
}
if(dbSystemEmailTemplatesEntity == null){
dbSystemEmailTemplatesEntity = systemEmailTemplatesRespository
.findByType(type.getValue());
}
SystemEmailTemplateResponse systemEmailTemplateResponse = replaceHtmlContant(dbSystemEmailTemplatesEntity, hub, language, Boolean.TRUE);
return systemEmailTemplateResponse;
}
private SystemEmailTemplateResponse replaceHtmlContant(SystemEmailTemplatesEntity dbSystemEmailTemplatesEntity,
HubEntity hub, Locale language1, Boolean isDefaultReplace) {
String language = null;
String htmlContent = dbSystemEmailTemplatesEntity.getHtmlContent();
String subject = dbSystemEmailTemplatesEntity.getSubject();
if (language1 == null) {
// language = getLanguage(LocaleContextHolder.getLocale());
language="italian";
}else{
language="italian";
}
Map<String, String> languageMap = new HashMap<>();
String jsonContent = dbSystemEmailTemplatesEntity.getJson();
if (Boolean.FALSE.equals(StringUtils.isEmpty(jsonContent))) {
Map<String, Map<String, String>> jsonMap = Utils.parseJsonContent(jsonContent);
if (jsonMap != null && jsonMap.containsKey(language)) {
languageMap = jsonMap.get(language);
htmlContent = replacePlaceholders(htmlContent, languageMap);
subject = replaceSubjectPlaceholders(subject, languageMap);
}
}
if(Boolean.TRUE.equals(StringUtils.isEmpty(subject))){
subject = "";
}
htmlContent = replacePlatformLinkPlaceholderAndEmailSignature(hub, htmlContent, languageMap);
subject = replacePlatformLinkPlaceholderAndEmailSignature(hub, subject, languageMap);
SystemEmailTemplateResponse systemEmailTemplateResponse = new SystemEmailTemplateResponse();
systemEmailTemplateResponse.setHtmlContent(htmlContent);
systemEmailTemplateResponse.setSubject(subject);
systemEmailTemplateResponse.setJsonMap(languageMap);
systemEmailTemplateResponse.setEmailScenario(EmailScenarioTypeEnum.valueOf(dbSystemEmailTemplatesEntity.getEmailScenario()));
return systemEmailTemplateResponse;
}
// private String getLanguage(Locale locale) {
// return switch (locale.getLanguage()) {
// case "en" -> "english";
// case "it" -> "italian";
// default -> "italian";
// };
// }
private String replacePlaceholders(String htmlContent, Map<String, String> languageMap) {
for (Map.Entry<String, String> entry : languageMap.entrySet()) {
htmlContent = htmlContent.replace("{{" + entry.getKey() + "}}", entry.getValue());
}
return htmlContent;
}
private String replaceSubjectPlaceholders(String subject, Map<String, String> languageMap) {
if(languageMap.containsKey("subject") && subject != null){
String value = languageMap.get("subject");
subject = subject.replace("{{subject}}", value);
return subject;
}
return "";
}
private String replacePlatformLinkPlaceholderAndEmailSignature(HubEntity hub, String htmlContent,
Map<String, String> languageMap) {
htmlContent = replacePlatformLinkPlaceholder(hub, htmlContent, languageMap);
htmlContent = replaceEmailSignature(hub, htmlContent, languageMap);
return htmlContent;
}
private String replaceEmailSignature(HubEntity hub, String htmlContent, Map<String, String> languageMap) {
String emailSignature = defaultEmailSignature;
if(hub != null && Boolean.FALSE.equals(StringUtils.isEmpty(hub.getEmailSignature()))){
emailSignature = hub.getEmailSignature();
}
return htmlContent.replace("{{email_signature}}", emailSignature);
}
private String replacePlatformLinkPlaceholder(HubEntity hub, String htmlContent, Map<String, String> languageMap) {
String platformLink = feBaseUrl;
if(hub != null && Boolean.FALSE.equals(StringUtils.isEmpty(hub.getDomainName()))){
platformLink = hub.getDomainName();
}
return htmlContent.replace("{{platform_link}}", platformLink);
}
}