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 languageMap = new HashMap<>(); String jsonContent = dbSystemEmailTemplatesEntity.getJson(); if (Boolean.FALSE.equals(StringUtils.isEmpty(jsonContent))) { Map> 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 languageMap) { for (Map.Entry entry : languageMap.entrySet()) { htmlContent = htmlContent.replace("{{" + entry.getKey() + "}}", entry.getValue()); } return htmlContent; } private String replaceSubjectPlaceholders(String subject, Map 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 languageMap) { String platformLink = feBaseUrl; // if(hubEntity != null && Boolean.FALSE.equals(isEmpty(hubEntity.getDomainName()))){ // platformLink = hubEntity.getDomainName(); // } htmlContent = htmlContent.replace("{{platform_link}}", platformLink); return htmlContent; } }