117 lines
4.2 KiB
Java
117 lines
4.2 KiB
Java
package net.gepafin.tendermanagement.dao;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Locale;
|
|
import java.util.Map;
|
|
|
|
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.CallEntity;
|
|
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;
|
|
|
|
|
|
public SystemEmailTemplateResponse retrieveTemplate(SystemEmailTemplatesEntityTypeEnum type, CallEntity call, Locale language) {
|
|
SystemEmailTemplatesEntity dbSystemEmailTemplatesEntity = null;
|
|
if(call != null){
|
|
// dbSystemEmailTemplatesEntity = systemEmailTemplatesRespository
|
|
// .findByTypeAndCallId(type.getValue(), call.getId());
|
|
}
|
|
if(dbSystemEmailTemplatesEntity == null){
|
|
dbSystemEmailTemplatesEntity = systemEmailTemplatesRespository
|
|
.findByType(type.getValue());
|
|
}
|
|
|
|
SystemEmailTemplateResponse systemEmailTemplateResponse = replaceHtmlContant(dbSystemEmailTemplatesEntity, call, language, Boolean.TRUE);
|
|
return systemEmailTemplateResponse;
|
|
}
|
|
|
|
private SystemEmailTemplateResponse replaceHtmlContant(SystemEmailTemplatesEntity dbSystemEmailTemplatesEntity,
|
|
CallEntity call, 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 = replacePlatformLinkPlaceholder(call, htmlContent, languageMap);
|
|
SystemEmailTemplateResponse systemEmailTemplateResponse = new SystemEmailTemplateResponse();
|
|
systemEmailTemplateResponse.setHtmlContent(htmlContent);
|
|
systemEmailTemplateResponse.setSubject(subject);
|
|
systemEmailTemplateResponse.setJsonMap(languageMap);
|
|
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 replacePlatformLinkPlaceholder(CallEntity call, String htmlContent,
|
|
Map<String, String> languageMap) {
|
|
String platformLink = feBaseUrl;
|
|
|
|
// if(hubEntity != null && Boolean.FALSE.equals(isEmpty(hubEntity.getDomainName()))){
|
|
// platformLink = hubEntity.getDomainName();
|
|
// }
|
|
htmlContent = htmlContent.replace("{{platform_link}}", platformLink);
|
|
return htmlContent;
|
|
}
|
|
|
|
}
|