use of io.jmix.emailtemplates.entity.TemplateReport in project jmix by jmix-framework.
the class EmailTemplateSendScreen method setParameter.
public void setParameter(String alias, Object value) {
List<TemplateReport> templateReports = new ArrayList<>();
if (emailTemplate.getEmailBodyReport() != null) {
templateReports.add(emailTemplate.getEmailBodyReport());
}
templateReports.addAll(emailTemplate.getAttachedTemplateReports());
for (TemplateReport templateReport : templateReports) {
ReportInputParameter inputParameter = templateReport.getReport().getInputParameters().stream().filter(e -> alias.equals(e.getAlias())).findFirst().orElse(null);
if (inputParameter != null) {
ParameterValue parameterValue = templateReport.getParameterValues().stream().filter(pv -> pv.getAlias().equals(alias)).findFirst().orElse(null);
if (parameterValue == null) {
parameterValue = metadata.create(ParameterValue.class);
parameterValue.setAlias(alias);
parameterValue.setParameterType(inputParameter.getType());
parameterValue.setTemplateReport(templateReport);
templateReport.getParameterValues().add(parameterValue);
}
Class parameterClass = classResolver.resolveClass(inputParameter);
if (!ParameterType.ENTITY_LIST.equals(inputParameter.getType())) {
String stringValue = objectToStringConverter.convertToString(parameterClass, value);
parameterValue.setDefaultValue(stringValue);
}
}
}
}
use of io.jmix.emailtemplates.entity.TemplateReport in project jmix by jmix-framework.
the class EmailTemplateBuilderImpl method setAttachmentParameters.
@Override
public EmailTemplateBuilder setAttachmentParameters(Collection<ReportWithParams> reportsWithParams) {
TemplateReport emailBodyReport = emailTemplate.getEmailBodyReport();
ReportWithParams reportWithParams = reportParams.stream().filter(e -> e.getReport().equals(emailBodyReport.getReport())).findFirst().orElse(null);
reportParams.clear();
if (reportWithParams != null) {
reportParams.add(reportWithParams);
}
reportParams.addAll(reportsWithParams);
return this;
}
use of io.jmix.emailtemplates.entity.TemplateReport in project jmix by jmix-framework.
the class EmailTemplateBuilderImpl method cloneTemplate.
protected EmailTemplate cloneTemplate(EmailTemplate emailTemplate) {
EmailTemplate clonedTemplate = metadataTools.deepCopy(emailTemplate);
if (clonedTemplate instanceof JsonEmailTemplate) {
clonedTemplate.setEmailBodyReport(emailTemplate.getEmailBodyReport());
((JsonEmailTemplate) clonedTemplate).setReport(emailTemplate.getReport());
}
List<TemplateReport> attachedTemplateReports = new ArrayList<>();
List<TemplateReport> templateAttachedTemplateReports = emailTemplate.getAttachedTemplateReports();
if (templateAttachedTemplateReports != null) {
for (TemplateReport templateReport : templateAttachedTemplateReports) {
TemplateReport newTemplateReport = metadataTools.deepCopy(templateReport);
attachedTemplateReports.add(newTemplateReport);
}
}
clonedTemplate.setAttachedTemplateReports(attachedTemplateReports);
return clonedTemplate;
}
use of io.jmix.emailtemplates.entity.TemplateReport in project jmix by jmix-framework.
the class EmailTemplateBuilderImpl method setBodyParameter.
@Override
public EmailTemplateBuilder setBodyParameter(String key, Object value) {
TemplateReport emailBodyReport = emailTemplate.getEmailBodyReport();
ReportWithParams reportWithParams = reportParams.stream().filter(e -> e.getReport().equals(emailBodyReport.getReport())).findFirst().orElse(null);
if (reportWithParams == null) {
reportWithParams = new ReportWithParams(emailBodyReport.getReport());
reportParams.add(reportWithParams);
}
reportWithParams.put(key, value);
return this;
}
use of io.jmix.emailtemplates.entity.TemplateReport in project jmix by jmix-framework.
the class TemplateParametersExtractor method getTemplateDefaultValues.
public List<ReportWithParams> getTemplateDefaultValues(EmailTemplate emailTemplate) throws ReportParameterTypeChangedException {
List<TemplateReport> templateReports = createParamsCollectionByTemplate(emailTemplate);
List<ReportWithParams> reportWithParams = new ArrayList<>();
List<String> exceptionMessages = new ArrayList<>();
for (TemplateReport templateReport : templateReports) {
try {
List<ParameterValue> parameterValues = null;
if (templateReport != null) {
parameterValues = templateReport.getParameterValues();
reportWithParams.add(getReportDefaultValues(templateReport.getReport(), parameterValues));
}
} catch (ReportParameterTypeChangedException e) {
exceptionMessages.add(e.getMessage());
}
}
if (!exceptionMessages.isEmpty()) {
StringBuilder messages = new StringBuilder();
exceptionMessages.forEach(m -> {
messages.append(m);
messages.append("\n");
});
throw new ReportParameterTypeChangedException(messages.toString());
}
return reportWithParams;
}
Aggregations