refactor: add lombok to emailcampaigns module
This commit is contained in:
committed by
Arnold Gálovics
parent
ba1d0ce66c
commit
9b039ff136
+14
-37
@@ -19,60 +19,37 @@
|
|||||||
package org.apache.fineract.infrastructure.campaigns.email.data;
|
package org.apache.fineract.infrastructure.campaigns.email.data;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
public class EmailBusinessRulesData {
|
public class EmailBusinessRulesData {
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final Long reportId;
|
private Long reportId;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final String reportName;
|
private String reportName;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final String reportType;
|
private String reportType;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final String reportSubType;
|
private String reportSubType;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final String reportDescription;
|
private String reportDescription;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final Map<String, Object> reportParamName;
|
private Map<String, Object> reportParamName;
|
||||||
|
|
||||||
public EmailBusinessRulesData(final Long reportId, final String reportName, final String reportType,
|
|
||||||
final Map<String, Object> reportParamName, final String reportSubType, final String reportDescription) {
|
|
||||||
this.reportId = reportId;
|
|
||||||
this.reportName = reportName;
|
|
||||||
this.reportType = reportType;
|
|
||||||
this.reportParamName = reportParamName;
|
|
||||||
this.reportDescription = reportDescription;
|
|
||||||
this.reportSubType = reportSubType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static EmailBusinessRulesData instance(final Long reportId, final String reportName, final String reportType,
|
public static EmailBusinessRulesData instance(final Long reportId, final String reportName, final String reportType,
|
||||||
final Map<String, Object> reportParamName, final String reportSubType, final String reportDescription) {
|
final Map<String, Object> reportParamName, final String reportSubType, final String reportDescription) {
|
||||||
return new EmailBusinessRulesData(reportId, reportName, reportType, reportParamName, reportSubType, reportDescription);
|
return new EmailBusinessRulesData().setReportId(reportId).setReportName(reportName).setReportType(reportType)
|
||||||
}
|
.setReportParamName(reportParamName).setReportSubType(reportSubType).setReportDescription(reportDescription);
|
||||||
|
|
||||||
public Map<String, Object> getReportParamName() {
|
|
||||||
return reportParamName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReportType() {
|
|
||||||
return reportType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReportName() {
|
|
||||||
return reportName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getReportId() {
|
|
||||||
return reportId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReportDescription() {
|
|
||||||
return reportDescription;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+29
-100
@@ -20,130 +20,59 @@ package org.apache.fineract.infrastructure.campaigns.email.data;
|
|||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
public final class EmailCampaignData {
|
public final class EmailCampaignData {
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private Long id;
|
private Long id;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final String campaignName;
|
private String campaignName;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final Integer campaignType;
|
private Integer campaignType;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final Long businessRuleId;
|
private Long businessRuleId;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final String paramValue;
|
private String paramValue;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final EnumOptionData campaignStatus;
|
private EnumOptionData campaignStatus;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final String emailSubject;
|
private String emailSubject;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final String emailMessage;
|
private String emailMessage;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final String emailAttachmentFileFormat;
|
private String emailAttachmentFileFormat;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final Long stretchyReportId;
|
private Long stretchyReportId;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final String stretchyReportParamMap;
|
private String stretchyReportParamMap;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final ZonedDateTime nextTriggerDate;
|
private ZonedDateTime nextTriggerDate;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final LocalDate lastTriggerDate;
|
private LocalDate lastTriggerDate;
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final EmailCampaignTimeLine emailCampaignTimeLine;
|
private EmailCampaignTimeLine emailCampaignTimeLine;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final ZonedDateTime recurrenceStartDate;
|
private ZonedDateTime recurrenceStartDate;
|
||||||
|
|
||||||
private final String recurrence;
|
private String recurrence;
|
||||||
|
|
||||||
private EmailCampaignData(final Long id, final String campaignName, final Integer campaignType, final Long businessRuleId,
|
public static EmailCampaignData instance(final Long id, final String campaignName, final Integer campaignType,
|
||||||
final String paramValue, final EnumOptionData campaignStatus, final String emailSubject, final String message,
|
final Long businessRuleId, final String paramValue, final EnumOptionData campaignStatus, final String emailSubject,
|
||||||
final String emailAttachmentFileFormat, final Long stretchyReportId, final String stretchyReportParamMap,
|
final String message, final String emailAttachmentFileFormat, final Long stretchyReportId, final String stretchyReportParamMap,
|
||||||
final ZonedDateTime nextTriggerDate, final LocalDate lastTriggerDate, final EmailCampaignTimeLine emailCampaignTimeLine,
|
final ZonedDateTime nextTriggerDate, final LocalDate lastTriggerDate, final EmailCampaignTimeLine emailCampaignTimeLine,
|
||||||
final ZonedDateTime recurrenceStartDate, final String recurrence) {
|
final ZonedDateTime recurrenceStartDate, final String recurrence) {
|
||||||
this.id = id;
|
return new EmailCampaignData().setId(id).setCampaignName(campaignName).setCampaignType(campaignType)
|
||||||
this.campaignName = campaignName;
|
.setBusinessRuleId(businessRuleId).setParamValue(paramValue).setCampaignStatus(campaignStatus).setEmailSubject(emailSubject)
|
||||||
this.campaignType = campaignType;
|
.setEmailMessage(message).setEmailAttachmentFileFormat(emailAttachmentFileFormat).setStretchyReportId(stretchyReportId)
|
||||||
this.businessRuleId = businessRuleId;
|
.setStretchyReportParamMap(stretchyReportParamMap).setNextTriggerDate(nextTriggerDate).setLastTriggerDate(lastTriggerDate)
|
||||||
this.paramValue = paramValue;
|
.setEmailCampaignTimeLine(emailCampaignTimeLine).setRecurrenceStartDate(recurrenceStartDate).setRecurrence(recurrence);
|
||||||
this.campaignStatus = campaignStatus;
|
|
||||||
this.emailSubject = emailSubject;
|
|
||||||
this.emailMessage = message;
|
|
||||||
this.emailAttachmentFileFormat = emailAttachmentFileFormat;
|
|
||||||
this.stretchyReportId = stretchyReportId;
|
|
||||||
this.stretchyReportParamMap = stretchyReportParamMap;
|
|
||||||
if (nextTriggerDate != null) {
|
|
||||||
this.nextTriggerDate = nextTriggerDate;
|
|
||||||
} else {
|
|
||||||
this.nextTriggerDate = null;
|
|
||||||
}
|
|
||||||
if (lastTriggerDate != null) {
|
|
||||||
this.lastTriggerDate = lastTriggerDate;
|
|
||||||
} else {
|
|
||||||
this.lastTriggerDate = null;
|
|
||||||
}
|
|
||||||
this.emailCampaignTimeLine = emailCampaignTimeLine;
|
|
||||||
this.recurrenceStartDate = recurrenceStartDate;
|
|
||||||
this.recurrence = recurrence;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static EmailCampaignData instance(final Long id, final String campaignName, final Integer campaignType, final Long runReportId,
|
|
||||||
final String paramValue, final EnumOptionData campaignStatus, final String emailSubject, final String message,
|
|
||||||
final String emailAttachmentFileFormat, final Long stretchyReportId, final String stretchyReportParamMap,
|
|
||||||
final ZonedDateTime nextTriggerDate, final LocalDate lastTriggerDate, final EmailCampaignTimeLine emailCampaignTimeLine,
|
|
||||||
final ZonedDateTime recurrenceStartDate, final String recurrence) {
|
|
||||||
return new EmailCampaignData(id, campaignName, campaignType, runReportId, paramValue, campaignStatus, emailSubject, message,
|
|
||||||
emailAttachmentFileFormat, stretchyReportId, stretchyReportParamMap, nextTriggerDate, lastTriggerDate,
|
|
||||||
emailCampaignTimeLine, recurrenceStartDate, recurrence);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCampaignName() {
|
|
||||||
return this.campaignName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getCampaignType() {
|
|
||||||
return this.campaignType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getRunReportId() {
|
|
||||||
return this.businessRuleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getParamValue() {
|
|
||||||
return this.paramValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnumOptionData getCampaignStatus() {
|
|
||||||
return this.campaignStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getEmailSubject() {
|
|
||||||
return this.emailSubject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMessage() {
|
|
||||||
return this.emailMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ZonedDateTime getNextTriggerDate() {
|
|
||||||
return this.nextTriggerDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDate getLastTriggerDate() {
|
|
||||||
return this.lastTriggerDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecurrence() {
|
|
||||||
return this.recurrence;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ZonedDateTime getRecurrenceStartDate() {
|
|
||||||
return this.recurrenceStartDate;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-15
@@ -19,23 +19,20 @@
|
|||||||
package org.apache.fineract.infrastructure.campaigns.email.data;
|
package org.apache.fineract.infrastructure.campaigns.email.data;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
public class EmailCampaignTimeLine {
|
public class EmailCampaignTimeLine {
|
||||||
|
|
||||||
private final LocalDate submittedOnDate;
|
private LocalDate submittedOnDate;
|
||||||
private final String submittedByUsername;
|
private String submittedByUsername;
|
||||||
private final LocalDate activatedOnDate;
|
private LocalDate activatedOnDate;
|
||||||
private final String activatedByUsername;
|
private String activatedByUsername;
|
||||||
private final LocalDate closedOnDate;
|
private LocalDate closedOnDate;
|
||||||
private final String closedByUsername;
|
private String closedByUsername;
|
||||||
|
|
||||||
public EmailCampaignTimeLine(final LocalDate submittedOnDate, final String submittedByUsername, final LocalDate activatedOnDate,
|
|
||||||
final String activatedByUsername, final LocalDate closedOnDate, final String closedByUsername) {
|
|
||||||
this.submittedOnDate = submittedOnDate;
|
|
||||||
this.submittedByUsername = submittedByUsername;
|
|
||||||
this.activatedOnDate = activatedOnDate;
|
|
||||||
this.activatedByUsername = activatedByUsername;
|
|
||||||
this.closedOnDate = closedOnDate;
|
|
||||||
this.closedByUsername = closedByUsername;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-28
@@ -18,47 +18,31 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.fineract.infrastructure.campaigns.email.data;
|
package org.apache.fineract.infrastructure.campaigns.email.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Immutable data object representing an Email configuration.
|
* Immutable data object representing an Email configuration.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
public final class EmailConfigurationData {
|
public final class EmailConfigurationData {
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final Long id;
|
private Long id;
|
||||||
|
|
||||||
private final String name;
|
private String name;
|
||||||
|
|
||||||
private final String value;
|
private String value;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return an instance of the EmailConfigurationData class
|
* @return an instance of the EmailConfigurationData class
|
||||||
**/
|
**/
|
||||||
public static EmailConfigurationData instance(Long id, String name, String value) {
|
public static EmailConfigurationData instance(Long id, String name, String value) {
|
||||||
return new EmailConfigurationData(id, name, value);
|
return new EmailConfigurationData().setId(id).setName(name).setValue(value);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* EmailConfigurationData constructor
|
|
||||||
**/
|
|
||||||
private EmailConfigurationData(Long id, String name, String value) {
|
|
||||||
this.id = id;
|
|
||||||
this.name = name;
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the id
|
|
||||||
*/
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+29
-127
@@ -20,146 +20,48 @@ package org.apache.fineract.infrastructure.campaigns.email.data;
|
|||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
||||||
import org.apache.fineract.infrastructure.dataqueries.data.ReportData;
|
import org.apache.fineract.infrastructure.dataqueries.data.ReportData;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Immutable data object representing a SMS message.
|
* Immutable data object representing a SMS message.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
public final class EmailData {
|
public final class EmailData {
|
||||||
|
|
||||||
private final Long id;
|
private Long id;
|
||||||
private final Long groupId;
|
private Long groupId;
|
||||||
private final Long clientId;
|
private Long clientId;
|
||||||
private final Long staffId;
|
private Long staffId;
|
||||||
private final EnumOptionData status;
|
private EnumOptionData status;
|
||||||
private final String emailAddress;
|
private String emailAddress;
|
||||||
private final String emailSubject;
|
private String emailSubject;
|
||||||
private final String emailMessage;
|
private String emailMessage;
|
||||||
private final EnumOptionData emailAttachmentFileFormat;
|
private EnumOptionData emailAttachmentFileFormat;
|
||||||
private final ReportData stretchyReport;
|
private ReportData stretchyReport;
|
||||||
private final String stretchyReportParamMap;
|
private String stretchyReportParamMap;
|
||||||
private final List<EnumOptionData> emailAttachmentFileFormatOptions;
|
private List<EnumOptionData> emailAttachmentFileFormatOptions;
|
||||||
private final List<EnumOptionData> stretchyReportParamDateOptions;
|
private List<EnumOptionData> stretchyReportParamDateOptions;
|
||||||
private final String campaignName;
|
private String campaignName;
|
||||||
private final LocalDate sentDate;
|
private LocalDate sentDate;
|
||||||
private final String errorMessage;
|
private String errorMessage;
|
||||||
|
|
||||||
public static EmailData instance(final Long id, final Long groupId, final Long clientId, final Long staffId,
|
public static EmailData instance(final Long id, final Long groupId, final Long clientId, final Long staffId,
|
||||||
final EnumOptionData status, final String emailAddress, final String emailSubject, final String message,
|
final EnumOptionData status, final String emailAddress, final String emailSubject, final String message,
|
||||||
final EnumOptionData emailAttachmentFileFormat, final ReportData stretchyReport, final String stretchyReportParamMap,
|
final EnumOptionData emailAttachmentFileFormat, final ReportData stretchyReport, final String stretchyReportParamMap,
|
||||||
final List<EnumOptionData> emailAttachmentFileFormatOptions, final List<EnumOptionData> stretchyReportParamDateOptions,
|
final List<EnumOptionData> emailAttachmentFileFormatOptions, final List<EnumOptionData> stretchyReportParamDateOptions,
|
||||||
final String campaignName, final LocalDate sentDate, final String errorMessage) {
|
final String campaignName, final LocalDate sentDate, final String errorMessage) {
|
||||||
return new EmailData(id, groupId, clientId, staffId, status, emailAddress, emailSubject, message, emailAttachmentFileFormat,
|
return new EmailData().setId(id).setGroupId(groupId).setClientId(clientId).setStaffId(staffId).setStatus(status)
|
||||||
stretchyReport, stretchyReportParamMap, emailAttachmentFileFormatOptions, stretchyReportParamDateOptions, campaignName,
|
.setEmailAddress(emailAddress).setEmailSubject(emailSubject).setEmailMessage(message)
|
||||||
sentDate, errorMessage);
|
.setEmailAttachmentFileFormat(emailAttachmentFileFormat).setStretchyReport(stretchyReport)
|
||||||
}
|
.setStretchyReportParamMap(stretchyReportParamMap).setEmailAttachmentFileFormatOptions(emailAttachmentFileFormatOptions)
|
||||||
|
.setStretchyReportParamDateOptions(stretchyReportParamDateOptions).setCampaignName(campaignName).setSentDate(sentDate)
|
||||||
private EmailData(final Long id, final Long groupId, final Long clientId, final Long staffId, final EnumOptionData status,
|
.setErrorMessage(errorMessage);
|
||||||
final String emailAddress, final String emailSubject, final String message, final EnumOptionData emailAttachmentFileFormat,
|
|
||||||
final ReportData stretchyReport, final String stretchyReportParamMap,
|
|
||||||
final List<EnumOptionData> emailAttachmentFileFormatOptions, final List<EnumOptionData> stretchyReportParamDateOptions,
|
|
||||||
final String campaignName, final LocalDate sentDate, final String errorMessage) {
|
|
||||||
this.id = id;
|
|
||||||
this.groupId = groupId;
|
|
||||||
this.clientId = clientId;
|
|
||||||
this.staffId = staffId;
|
|
||||||
this.status = status;
|
|
||||||
this.emailAddress = emailAddress;
|
|
||||||
this.emailSubject = emailSubject;
|
|
||||||
this.emailMessage = message;
|
|
||||||
this.emailAttachmentFileFormat = emailAttachmentFileFormat;
|
|
||||||
this.stretchyReport = stretchyReport;
|
|
||||||
this.stretchyReportParamMap = stretchyReportParamMap;
|
|
||||||
this.emailAttachmentFileFormatOptions = emailAttachmentFileFormatOptions;
|
|
||||||
this.stretchyReportParamDateOptions = stretchyReportParamDateOptions;
|
|
||||||
this.campaignName = campaignName;
|
|
||||||
this.sentDate = sentDate;
|
|
||||||
this.errorMessage = errorMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the id
|
|
||||||
*/
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the groupId
|
|
||||||
*/
|
|
||||||
public Long getGroupId() {
|
|
||||||
return groupId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the clientId
|
|
||||||
*/
|
|
||||||
public Long getClientId() {
|
|
||||||
return clientId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the staffId
|
|
||||||
*/
|
|
||||||
public Long getStaffId() {
|
|
||||||
return staffId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the status
|
|
||||||
*/
|
|
||||||
public EnumOptionData getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getErrorMessage() {
|
|
||||||
return this.errorMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the emailAddress
|
|
||||||
*/
|
|
||||||
public String getEmailAddress() {
|
|
||||||
return emailAddress;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the message
|
|
||||||
*/
|
|
||||||
public String getMessage() {
|
|
||||||
return emailMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCampaignName() {
|
|
||||||
return this.campaignName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDate getSentDate() {
|
|
||||||
return this.sentDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getEmailSubject() {
|
|
||||||
return emailSubject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnumOptionData getEmailAttachmentFileFormat() {
|
|
||||||
return emailAttachmentFileFormat;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ReportData getStretchyReport() {
|
|
||||||
return stretchyReport;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStretchyReportParamMap() {
|
|
||||||
return stretchyReportParamMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<EnumOptionData> getEmailAttachmentFileFormatOptions() {
|
|
||||||
return emailAttachmentFileFormatOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<EnumOptionData> getStretchyReportParamDateOptions() {
|
|
||||||
return stretchyReportParamDateOptions;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-27
@@ -20,39 +20,23 @@ package org.apache.fineract.infrastructure.campaigns.email.data;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
public final class EmailMessageWithAttachmentData {
|
public final class EmailMessageWithAttachmentData {
|
||||||
|
|
||||||
private final String to;
|
private String to;
|
||||||
private final String text;
|
private String text;
|
||||||
private final String subject;
|
private String subject;
|
||||||
private final List<File> attachments;
|
private List<File> attachments;
|
||||||
|
|
||||||
private EmailMessageWithAttachmentData(final String to, final String text, final String subject, final List<File> attachments) {
|
|
||||||
this.to = to;
|
|
||||||
this.text = text;
|
|
||||||
this.subject = subject;
|
|
||||||
this.attachments = attachments;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static EmailMessageWithAttachmentData createNew(final String to, final String text, final String subject,
|
public static EmailMessageWithAttachmentData createNew(final String to, final String text, final String subject,
|
||||||
final List<File> attachments) {
|
final List<File> attachments) {
|
||||||
return new EmailMessageWithAttachmentData(to, text, subject, attachments);
|
return new EmailMessageWithAttachmentData().setTo(to).setText(text).setSubject(subject).setAttachments(attachments);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTo() {
|
|
||||||
return this.to;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getText() {
|
|
||||||
return this.text;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubject() {
|
|
||||||
return this.subject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<File> getAttachments() {
|
|
||||||
return this.attachments;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-14
@@ -18,23 +18,18 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.fineract.infrastructure.campaigns.email.data;
|
package org.apache.fineract.infrastructure.campaigns.email.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
public class PreviewCampaignMessage {
|
public class PreviewCampaignMessage {
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final String campaignMessage;
|
private String campaignMessage;
|
||||||
|
|
||||||
private final Integer totalNumberOfMessages;
|
private Integer totalNumberOfMessages;
|
||||||
|
|
||||||
public PreviewCampaignMessage(String campaignMessage, Integer totalNumberOfMessages) {
|
|
||||||
this.campaignMessage = campaignMessage;
|
|
||||||
this.totalNumberOfMessages = totalNumberOfMessages;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCampaignMessage() {
|
|
||||||
return campaignMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getTotalNumberOfMessages() {
|
|
||||||
return totalNumberOfMessages;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-134
@@ -31,6 +31,10 @@ import javax.persistence.Entity;
|
|||||||
import javax.persistence.JoinColumn;
|
import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.ManyToOne;
|
import javax.persistence.ManyToOne;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.ScheduledEmailConstants;
|
import org.apache.fineract.infrastructure.campaigns.email.ScheduledEmailConstants;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.data.EmailCampaignValidator;
|
import org.apache.fineract.infrastructure.campaigns.email.data.EmailCampaignValidator;
|
||||||
@@ -45,6 +49,10 @@ import org.apache.fineract.useradministration.domain.AppUser;
|
|||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "scheduled_email_campaign")
|
@Table(name = "scheduled_email_campaign")
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
public class EmailCampaign extends AbstractPersistableCustom {
|
public class EmailCampaign extends AbstractPersistableCustom {
|
||||||
|
|
||||||
@Column(name = "campaign_name", nullable = false)
|
@Column(name = "campaign_name", nullable = false)
|
||||||
@@ -124,36 +132,6 @@ public class EmailCampaign extends AbstractPersistableCustom {
|
|||||||
@Column(name = "previous_run_error_message", nullable = true)
|
@Column(name = "previous_run_error_message", nullable = true)
|
||||||
private String previousRunErrorMessage;
|
private String previousRunErrorMessage;
|
||||||
|
|
||||||
public EmailCampaign() {}
|
|
||||||
|
|
||||||
private EmailCampaign(final String campaignName, final Integer campaignType, final Report businessRuleId, final String paramValue,
|
|
||||||
final String emailSubject, final String emailMessage, final LocalDate submittedOnDate, final AppUser submittedBy,
|
|
||||||
final Report stretchyReport, final String stretchyReportParamMap,
|
|
||||||
final ScheduledEmailAttachmentFileFormat emailAttachmentFileFormat, final String recurrence,
|
|
||||||
final LocalDateTime localDateTime) {
|
|
||||||
this.campaignName = campaignName;
|
|
||||||
this.campaignType = EmailCampaignType.fromInt(campaignType).getValue();
|
|
||||||
this.businessRuleId = businessRuleId;
|
|
||||||
this.paramValue = paramValue;
|
|
||||||
this.status = EmailCampaignStatus.PENDING.getValue();
|
|
||||||
this.emailSubject = emailSubject;
|
|
||||||
this.emailMessage = emailMessage;
|
|
||||||
this.emailAttachmentFileFormat = emailAttachmentFileFormat.getValue();
|
|
||||||
this.stretchyReport = stretchyReport;
|
|
||||||
this.stretchyReportParamMap = stretchyReportParamMap;
|
|
||||||
this.submittedOnDate = submittedOnDate;
|
|
||||||
this.submittedBy = submittedBy;
|
|
||||||
this.recurrence = recurrence;
|
|
||||||
LocalDateTime recurrenceStartDate = LocalDateTime.now(DateUtils.getDateTimeZoneOfTenant());
|
|
||||||
this.isVisible = true;
|
|
||||||
if (localDateTime != null) {
|
|
||||||
this.recurrenceStartDate = localDateTime;
|
|
||||||
} else {
|
|
||||||
this.recurrenceStartDate = recurrenceStartDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static EmailCampaign instance(final AppUser submittedBy, final Report businessRuleId, final Report stretchyReport,
|
public static EmailCampaign instance(final AppUser submittedBy, final Report businessRuleId, final Report stretchyReport,
|
||||||
final JsonCommand command) {
|
final JsonCommand command) {
|
||||||
|
|
||||||
@@ -192,9 +170,11 @@ public class EmailCampaign extends AbstractPersistableCustom {
|
|||||||
recurrenceStartDate = null;
|
recurrenceStartDate = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new EmailCampaign(campaignName, campaignType.intValue(), businessRuleId, paramValue, emailSubject, emailMessage,
|
return new EmailCampaign().setCampaignName(campaignName).setCampaignType(campaignType.intValue()).setBusinessRuleId(businessRuleId)
|
||||||
submittedOnDate, submittedBy, stretchyReport, stretchyReportParamMap, emailAttachmentFileFormat, recurrence,
|
.setParamValue(paramValue).setStatus(EmailCampaignStatus.PENDING.getValue()).setEmailSubject(emailSubject)
|
||||||
recurrenceStartDate);
|
.setEmailMessage(emailMessage).setSubmittedOnDate(submittedOnDate).setSubmittedBy(submittedBy)
|
||||||
|
.setStretchyReport(stretchyReport).setEmailAttachmentFileFormat(emailAttachmentFileFormat.getValue())
|
||||||
|
.setRecurrence(recurrence).setRecurrenceStartDate(recurrenceStartDate).setStretchyReportParamMap(stretchyReportParamMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Object> update(JsonCommand command) {
|
public Map<String, Object> update(JsonCommand command) {
|
||||||
@@ -236,7 +216,7 @@ public class EmailCampaign extends AbstractPersistableCustom {
|
|||||||
final Locale locale = command.extractLocale();
|
final Locale locale = command.extractLocale();
|
||||||
final DateTimeFormatter fmt = DateTimeFormatter.ofPattern(command.dateFormat()).withLocale(locale);
|
final DateTimeFormatter fmt = DateTimeFormatter.ofPattern(command.dateFormat()).withLocale(locale);
|
||||||
|
|
||||||
if (command.isChangeInLocalDateTimeParameterNamed(EmailCampaignValidator.recurrenceStartDate, getRecurrenceStartDateTime())) {
|
if (command.isChangeInLocalDateTimeParameterNamed(EmailCampaignValidator.recurrenceStartDate, getRecurrenceStartDate())) {
|
||||||
final String valueAsInput = command.stringValueOfParameterNamed(EmailCampaignValidator.recurrenceStartDate);
|
final String valueAsInput = command.stringValueOfParameterNamed(EmailCampaignValidator.recurrenceStartDate);
|
||||||
actualChanges.put(EmailCampaignValidator.recurrenceStartDate, valueAsInput);
|
actualChanges.put(EmailCampaignValidator.recurrenceStartDate, valueAsInput);
|
||||||
actualChanges.put(ClientApiConstants.dateFormatParamName, dateFormatAsInput);
|
actualChanges.put(ClientApiConstants.dateFormatParamName, dateFormatAsInput);
|
||||||
@@ -307,9 +287,7 @@ public class EmailCampaign extends AbstractPersistableCustom {
|
|||||||
this.approvedOnDate = reactivateLocalDate;
|
this.approvedOnDate = reactivateLocalDate;
|
||||||
this.status = EmailCampaignStatus.ACTIVE.getValue();
|
this.status = EmailCampaignStatus.ACTIVE.getValue();
|
||||||
this.approvedBy = currentUser;
|
this.approvedBy = currentUser;
|
||||||
this.closureDate = null;
|
|
||||||
this.isVisible = true;
|
this.isVisible = true;
|
||||||
this.closedBy = null;
|
|
||||||
|
|
||||||
validateReactivate();
|
validateReactivate();
|
||||||
}
|
}
|
||||||
@@ -384,7 +362,7 @@ public class EmailCampaign extends AbstractPersistableCustom {
|
|||||||
dataValidationErrors.add(error);
|
dataValidationErrors.add(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getActivationLocalDate() != null && getSubmittedOnDate() != null && getSubmittedOnDate().isAfter(getActivationLocalDate())) {
|
if (getApprovedOnDate() != null && getSubmittedOnDate() != null && getSubmittedOnDate().isAfter(getApprovedOnDate())) {
|
||||||
|
|
||||||
final String defaultUserMessage = "submitted date cannot be after the activation date";
|
final String defaultUserMessage = "submitted date cannot be after the activation date";
|
||||||
final ApiParameterError error = ApiParameterError.parameterError("error.msg.campaign.submittedOnDate.after.activation.date",
|
final ApiParameterError error = ApiParameterError.parameterError("error.msg.campaign.submittedOnDate.after.activation.date",
|
||||||
@@ -393,11 +371,11 @@ public class EmailCampaign extends AbstractPersistableCustom {
|
|||||||
dataValidationErrors.add(error);
|
dataValidationErrors.add(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getActivationLocalDate() != null && isDateInTheFuture(getActivationLocalDate())) {
|
if (getApprovedOnDate() != null && isDateInTheFuture(getApprovedOnDate())) {
|
||||||
|
|
||||||
final String defaultUserMessage = "Activation date cannot be in the future.";
|
final String defaultUserMessage = "Activation date cannot be in the future.";
|
||||||
final ApiParameterError error = ApiParameterError.parameterError("error.msg.campaign.activationDate.in.the.future",
|
final ApiParameterError error = ApiParameterError.parameterError("error.msg.campaign.activationDate.in.the.future",
|
||||||
defaultUserMessage, EmailCampaignValidator.activationDateParamName, getActivationLocalDate());
|
defaultUserMessage, EmailCampaignValidator.activationDateParamName, getApprovedOnDate());
|
||||||
|
|
||||||
dataValidationErrors.add(error);
|
dataValidationErrors.add(error);
|
||||||
}
|
}
|
||||||
@@ -405,15 +383,15 @@ public class EmailCampaign extends AbstractPersistableCustom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void validateReactivationDate(final List<ApiParameterError> dataValidationErrors) {
|
private void validateReactivationDate(final List<ApiParameterError> dataValidationErrors) {
|
||||||
if (getActivationLocalDate() != null && isDateInTheFuture(getActivationLocalDate())) {
|
if (getApprovedOnDate() != null && isDateInTheFuture(getApprovedOnDate())) {
|
||||||
|
|
||||||
final String defaultUserMessage = "Activation date cannot be in the future.";
|
final String defaultUserMessage = "Activation date cannot be in the future.";
|
||||||
final ApiParameterError error = ApiParameterError.parameterError("error.msg.campaign.activationDate.in.the.future",
|
final ApiParameterError error = ApiParameterError.parameterError("error.msg.campaign.activationDate.in.the.future",
|
||||||
defaultUserMessage, EmailCampaignValidator.activationDateParamName, getActivationLocalDate());
|
defaultUserMessage, EmailCampaignValidator.activationDateParamName, getApprovedOnDate());
|
||||||
|
|
||||||
dataValidationErrors.add(error);
|
dataValidationErrors.add(error);
|
||||||
}
|
}
|
||||||
if (getActivationLocalDate() != null && getSubmittedOnDate() != null && getSubmittedOnDate().isAfter(getActivationLocalDate())) {
|
if (getApprovedOnDate() != null && getSubmittedOnDate() != null && getSubmittedOnDate().isAfter(getApprovedOnDate())) {
|
||||||
|
|
||||||
final String defaultUserMessage = "submitted date cannot be after the activation date";
|
final String defaultUserMessage = "submitted date cannot be after the activation date";
|
||||||
final ApiParameterError error = ApiParameterError.parameterError("error.msg.campaign.submittedOnDate.after.activation.date",
|
final ApiParameterError error = ApiParameterError.parameterError("error.msg.campaign.submittedOnDate.after.activation.date",
|
||||||
@@ -442,100 +420,8 @@ public class EmailCampaign extends AbstractPersistableCustom {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LocalDate getSubmittedOnDate() {
|
|
||||||
return this.submittedOnDate;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDate getClosureDate() {
|
|
||||||
return this.closureDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDate getActivationLocalDate() {
|
|
||||||
return this.approvedOnDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isDateInTheFuture(final LocalDate localDate) {
|
private boolean isDateInTheFuture(final LocalDate localDate) {
|
||||||
return localDate.isAfter(DateUtils.getBusinessLocalDate());
|
return localDate.isAfter(DateUtils.getBusinessLocalDate());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Report getBusinessRuleId() {
|
|
||||||
return this.businessRuleId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCampaignName() {
|
|
||||||
return this.campaignName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getEmailSubject() {
|
|
||||||
return this.emailSubject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getEmailMessage() {
|
|
||||||
return this.emailMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getParamValue() {
|
|
||||||
return this.paramValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRecurrence() {
|
|
||||||
return this.recurrence;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDateTime getRecurrenceStartDateTime() {
|
|
||||||
return this.recurrenceStartDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLastTriggerDate(LocalDateTime lastTriggerDate) {
|
|
||||||
this.lastTriggerDate = lastTriggerDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNextTriggerDate(LocalDateTime nextTriggerDate) {
|
|
||||||
this.nextTriggerDate = nextTriggerDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDateTime getNextTriggerDate() {
|
|
||||||
return this.nextTriggerDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDateTime getNextTriggerDateInDate() {
|
|
||||||
return this.nextTriggerDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDateTime getLastTriggerDate() {
|
|
||||||
return this.lastTriggerDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateIsVisible(boolean isVisible) {
|
|
||||||
this.isVisible = isVisible;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateBusinessRuleId(final Report report) {
|
|
||||||
this.businessRuleId = report;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getEmailAttachmentFileFormat() {
|
|
||||||
return this.emailAttachmentFileFormat;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Report getStretchyReport() {
|
|
||||||
return this.stretchyReport;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStretchyReportParamMap() {
|
|
||||||
return this.stretchyReportParamMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStretchyReportParamMap(String stretchyReportParamMap) {
|
|
||||||
this.stretchyReportParamMap = stretchyReportParamMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AppUser getApprovedBy() {
|
|
||||||
return this.approvedBy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AppUser getClosedBy() {
|
|
||||||
return this.closedBy;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-25
@@ -21,10 +21,18 @@ package org.apache.fineract.infrastructure.campaigns.email.domain;
|
|||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "scheduled_email_configuration")
|
@Table(name = "scheduled_email_configuration")
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
public class EmailConfiguration extends AbstractPersistableCustom {
|
public class EmailConfiguration extends AbstractPersistableCustom {
|
||||||
|
|
||||||
@Column(name = "name", nullable = false)
|
@Column(name = "name", nullable = false)
|
||||||
@@ -32,29 +40,4 @@ public class EmailConfiguration extends AbstractPersistableCustom {
|
|||||||
|
|
||||||
@Column(name = "value", nullable = false)
|
@Column(name = "value", nullable = false)
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
/**
|
|
||||||
* EmailConfiguration constructor
|
|
||||||
**/
|
|
||||||
protected EmailConfiguration() {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* EmailConfiguration constructor
|
|
||||||
**/
|
|
||||||
public EmailConfiguration(String name, String value) {
|
|
||||||
this.name = name;
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setValue(String value) {
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getValue() {
|
|
||||||
return this.value;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-70
@@ -26,17 +26,24 @@ import javax.persistence.Entity;
|
|||||||
import javax.persistence.JoinColumn;
|
import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.ManyToOne;
|
import javax.persistence.ManyToOne;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.EmailApiConstants;
|
import org.apache.fineract.infrastructure.campaigns.email.EmailApiConstants;
|
||||||
import org.apache.fineract.infrastructure.core.api.JsonCommand;
|
import org.apache.fineract.infrastructure.core.api.JsonCommand;
|
||||||
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
|
||||||
import org.apache.fineract.infrastructure.core.service.DateUtils;
|
|
||||||
import org.apache.fineract.organisation.staff.domain.Staff;
|
import org.apache.fineract.organisation.staff.domain.Staff;
|
||||||
import org.apache.fineract.portfolio.client.domain.Client;
|
import org.apache.fineract.portfolio.client.domain.Client;
|
||||||
import org.apache.fineract.portfolio.group.domain.Group;
|
import org.apache.fineract.portfolio.group.domain.Group;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "scheduled_email_messages_outbound")
|
@Table(name = "scheduled_email_messages_outbound")
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Accessors(chain = true)
|
||||||
public class EmailMessage extends AbstractPersistableCustom {
|
public class EmailMessage extends AbstractPersistableCustom {
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@@ -78,33 +85,18 @@ public class EmailMessage extends AbstractPersistableCustom {
|
|||||||
|
|
||||||
public static EmailMessage pendingEmail(final Group group, final Client client, final Staff staff, final EmailCampaign emailCampaign,
|
public static EmailMessage pendingEmail(final Group group, final Client client, final Staff staff, final EmailCampaign emailCampaign,
|
||||||
final String emailSubject, final String message, final String emailAddress, final String campaignName) {
|
final String emailSubject, final String message, final String emailAddress, final String campaignName) {
|
||||||
return new EmailMessage(group, client, staff, emailCampaign, EmailMessageStatusType.PENDING, emailSubject, message, emailAddress,
|
return new EmailMessage().setGroup(group).setClient(client).setStaff(staff).setEmailCampaign(emailCampaign)
|
||||||
campaignName);
|
.setStatusType(emailCampaign.getStatus()).setEmailSubject(emailSubject).setMessage(message).setEmailAddress(emailAddress)
|
||||||
|
.setCampaignName(campaignName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EmailMessage instance(final Group group, final Client client, final Staff staff, final EmailCampaign emailCampaign,
|
public static EmailMessage instance(final Group group, final Client client, final Staff staff, final EmailCampaign emailCampaign,
|
||||||
final EmailMessageStatusType statusType, final String emailSubject, final String message, final String sourceAddress,
|
final EmailMessageStatusType statusType, final String emailSubject, final String message, final String sourceAddress,
|
||||||
final String emailAddress, final String campaignName) {
|
final String emailAddress, final String campaignName) {
|
||||||
return new EmailMessage(group, client, staff, emailCampaign, statusType, emailSubject, message, emailAddress, campaignName);
|
return new EmailMessage().setGroup(group).setClient(client).setStaff(staff).setEmailCampaign(emailCampaign)
|
||||||
}
|
.setEmailSubject(emailSubject).setMessage(message).setEmailAddress(emailAddress).setCampaignName(campaignName)
|
||||||
|
.setStatusType(statusType.getValue());
|
||||||
|
|
||||||
protected EmailMessage() {
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
private EmailMessage(final Group group, final Client client, final Staff staff, final EmailCampaign emailCampaign,
|
|
||||||
final EmailMessageStatusType statusType, final String emailSubject, final String message, final String emailAddress,
|
|
||||||
final String campaignName) {
|
|
||||||
this.group = group;
|
|
||||||
this.client = client;
|
|
||||||
this.staff = staff;
|
|
||||||
this.emailCampaign = emailCampaign;
|
|
||||||
this.statusType = statusType.getValue();
|
|
||||||
this.emailAddress = emailAddress;
|
|
||||||
this.emailSubject = emailSubject;
|
|
||||||
this.message = message;
|
|
||||||
this.campaignName = campaignName;
|
|
||||||
this.submittedOnDate = DateUtils.getBusinessLocalDate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Object> update(final JsonCommand command) {
|
public Map<String, Object> update(final JsonCommand command) {
|
||||||
@@ -120,54 +112,6 @@ public class EmailMessage extends AbstractPersistableCustom {
|
|||||||
return actualChanges;
|
return actualChanges;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Group getGroup() {
|
|
||||||
return group;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Client getClient() {
|
|
||||||
return client;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Staff getStaff() {
|
|
||||||
return staff;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getStatusType() {
|
|
||||||
return statusType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getEmailAddress() {
|
|
||||||
return this.emailAddress;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getEmailSubject() {
|
|
||||||
return emailSubject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMessage() {
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatusType(final Integer statusType) {
|
|
||||||
this.statusType = statusType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCampaignName() {
|
|
||||||
return this.campaignName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDate getSubmittedOnDate() {
|
|
||||||
return this.submittedOnDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EmailCampaign getEmailCampaign() {
|
|
||||||
return this.emailCampaign;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateErrorMessage(final String errorMessage) {
|
|
||||||
this.errorMessage = errorMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPending() {
|
public boolean isPending() {
|
||||||
return EmailMessageStatusType.fromInt(this.statusType).isPending();
|
return EmailMessageStatusType.fromInt(this.statusType).isPending();
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -150,8 +150,9 @@ public class EmailCampaignReadPlatformServiceImpl implements EmailCampaignReadPl
|
|||||||
final String activatedByUsername = rs.getString("activatedByUsername");
|
final String activatedByUsername = rs.getString("activatedByUsername");
|
||||||
final String recurrence = rs.getString("recurrence");
|
final String recurrence = rs.getString("recurrence");
|
||||||
final ZonedDateTime recurrenceStartDate = JdbcSupport.getDateTime(rs, "recurrenceStartDate");
|
final ZonedDateTime recurrenceStartDate = JdbcSupport.getDateTime(rs, "recurrenceStartDate");
|
||||||
final EmailCampaignTimeLine emailCampaignTimeLine = new EmailCampaignTimeLine(submittedOnDate, submittedByUsername,
|
final EmailCampaignTimeLine emailCampaignTimeLine = new EmailCampaignTimeLine().setSubmittedOnDate(submittedOnDate)
|
||||||
activatedOnDate, activatedByUsername, closedOnDate, closedByUsername);
|
.setActivatedByUsername(submittedByUsername).setActivatedOnDate(activatedOnDate)
|
||||||
|
.setActivatedByUsername(activatedByUsername).setClosedOnDate(closedOnDate).setClosedByUsername(closedByUsername);
|
||||||
|
|
||||||
return EmailCampaignData.instance(id, campaignName, campaignType, businessRuleId, paramValue, status, emailSubject,
|
return EmailCampaignData.instance(id, campaignName, campaignType, businessRuleId, paramValue, status, emailSubject,
|
||||||
emailMessage, emailAttachmentFileFormatString, reportId, stretchyReportParamMap, nextTriggerDate, lastTriggerDate,
|
emailMessage, emailAttachmentFileFormatString, reportId, stretchyReportParamMap, nextTriggerDate, lastTriggerDate,
|
||||||
|
|||||||
+11
-10
@@ -151,7 +151,7 @@ public class EmailCampaignWritePlatformCommandHandlerImpl implements EmailCampai
|
|||||||
if (changes.containsKey(EmailCampaignValidator.businessRuleId)) {
|
if (changes.containsKey(EmailCampaignValidator.businessRuleId)) {
|
||||||
final Long newValue = command.longValueOfParameterNamed(EmailCampaignValidator.businessRuleId);
|
final Long newValue = command.longValueOfParameterNamed(EmailCampaignValidator.businessRuleId);
|
||||||
final Report reportId = this.reportRepository.findById(newValue).orElseThrow(() -> new ReportNotFoundException(newValue));
|
final Report reportId = this.reportRepository.findById(newValue).orElseThrow(() -> new ReportNotFoundException(newValue));
|
||||||
emailCampaign.updateBusinessRuleId(reportId);
|
emailCampaign.setBusinessRuleId(reportId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -294,11 +294,11 @@ public class EmailCampaignWritePlatformCommandHandlerImpl implements EmailCampai
|
|||||||
* date us next trigger date when activating
|
* date us next trigger date when activating
|
||||||
*/
|
*/
|
||||||
LocalDateTime nextTriggerDateWithTime;
|
LocalDateTime nextTriggerDateWithTime;
|
||||||
if (emailCampaign.getRecurrenceStartDateTime().isBefore(tenantDateTime())) {
|
if (emailCampaign.getRecurrenceStartDate().isBefore(tenantDateTime())) {
|
||||||
nextTriggerDateWithTime = CalendarUtils.getNextRecurringDate(emailCampaign.getRecurrence(),
|
nextTriggerDateWithTime = CalendarUtils.getNextRecurringDate(emailCampaign.getRecurrence(),
|
||||||
emailCampaign.getRecurrenceStartDateTime(), DateUtils.getLocalDateTimeOfTenant());
|
emailCampaign.getRecurrenceStartDate(), DateUtils.getLocalDateTimeOfTenant());
|
||||||
} else {
|
} else {
|
||||||
nextTriggerDateWithTime = emailCampaign.getRecurrenceStartDateTime();
|
nextTriggerDateWithTime = emailCampaign.getRecurrenceStartDate();
|
||||||
}
|
}
|
||||||
|
|
||||||
emailCampaign.setNextTriggerDate(nextTriggerDateWithTime);
|
emailCampaign.setNextTriggerDate(nextTriggerDateWithTime);
|
||||||
@@ -403,7 +403,8 @@ public class EmailCampaignWritePlatformCommandHandlerImpl implements EmailCampai
|
|||||||
String textMessage = this.compileEmailTemplate(textMessageTemplate, "EmailCampaign", entry);
|
String textMessage = this.compileEmailTemplate(textMessageTemplate, "EmailCampaign", entry);
|
||||||
if (!textMessage.isEmpty()) {
|
if (!textMessage.isEmpty()) {
|
||||||
final Integer totalMessage = runReportObject.size();
|
final Integer totalMessage = runReportObject.size();
|
||||||
campaignMessage = new PreviewCampaignMessage(textMessage, totalMessage);
|
campaignMessage = new PreviewCampaignMessage().setCampaignMessage(textMessage)
|
||||||
|
.setTotalNumberOfMessages(totalMessage);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -438,14 +439,14 @@ public class EmailCampaignWritePlatformCommandHandlerImpl implements EmailCampai
|
|||||||
* next trigger date when activating
|
* next trigger date when activating
|
||||||
*/
|
*/
|
||||||
LocalDateTime nextTriggerDate = null;
|
LocalDateTime nextTriggerDate = null;
|
||||||
if (emailCampaign.getRecurrenceStartDateTime().isBefore(tenantDateTime())) {
|
if (emailCampaign.getRecurrenceStartDate().isBefore(tenantDateTime())) {
|
||||||
nextTriggerDate = CalendarUtils.getNextRecurringDate(emailCampaign.getRecurrence(),
|
nextTriggerDate = CalendarUtils.getNextRecurringDate(emailCampaign.getRecurrence(), emailCampaign.getRecurrenceStartDate(),
|
||||||
emailCampaign.getRecurrenceStartDateTime(), DateUtils.getLocalDateTimeOfTenant());
|
DateUtils.getLocalDateTimeOfTenant());
|
||||||
} else {
|
} else {
|
||||||
nextTriggerDate = emailCampaign.getRecurrenceStartDateTime();
|
nextTriggerDate = emailCampaign.getRecurrenceStartDate();
|
||||||
}
|
}
|
||||||
// to get time of tenant
|
// to get time of tenant
|
||||||
final LocalDateTime getTime = emailCampaign.getRecurrenceStartDateTime();
|
final LocalDateTime getTime = emailCampaign.getRecurrenceStartDate();
|
||||||
|
|
||||||
final String dateString = nextTriggerDate.toString() + " " + getTime.getHour() + ":" + getTime.getMinute() + ":"
|
final String dateString = nextTriggerDate.toString() + " " + getTime.getHour() + ":" + getTime.getMinute() + ":"
|
||||||
+ getTime.getSecond();
|
+ getTime.getSecond();
|
||||||
|
|||||||
+2
@@ -21,6 +21,7 @@ package org.apache.fineract.infrastructure.campaigns.email.service;
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.data.EmailConfigurationData;
|
import org.apache.fineract.infrastructure.campaigns.email.data.EmailConfigurationData;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.exception.EmailConfigurationNotFoundException;
|
import org.apache.fineract.infrastructure.campaigns.email.exception.EmailConfigurationNotFoundException;
|
||||||
import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
|
import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
|
||||||
@@ -31,6 +32,7 @@ import org.springframework.jdbc.core.RowMapper;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class EmailConfigurationReadPlatformServiceImpl implements EmailConfigurationReadPlatformService {
|
public class EmailConfigurationReadPlatformServiceImpl implements EmailConfigurationReadPlatformService {
|
||||||
|
|
||||||
private final JdbcTemplate jdbcTemplate;
|
private final JdbcTemplate jdbcTemplate;
|
||||||
|
|||||||
+2
-9
@@ -21,6 +21,7 @@ package org.apache.fineract.infrastructure.campaigns.email.service;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.data.EmailConfigurationValidator;
|
import org.apache.fineract.infrastructure.campaigns.email.data.EmailConfigurationValidator;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailConfiguration;
|
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailConfiguration;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailConfigurationRepository;
|
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailConfigurationRepository;
|
||||||
@@ -30,24 +31,16 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
|
|||||||
import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuilder;
|
import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuilder;
|
||||||
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
||||||
import org.apache.fineract.useradministration.domain.AppUser;
|
import org.apache.fineract.useradministration.domain.AppUser;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class EmailConfigurationWritePlatformServiceImpl implements EmailConfigurationWritePlatformService {
|
public class EmailConfigurationWritePlatformServiceImpl implements EmailConfigurationWritePlatformService {
|
||||||
|
|
||||||
private final PlatformSecurityContext context;
|
private final PlatformSecurityContext context;
|
||||||
private final EmailConfigurationRepository repository;
|
private final EmailConfigurationRepository repository;
|
||||||
private final EmailConfigurationValidator emailConfigurationValidator;
|
private final EmailConfigurationValidator emailConfigurationValidator;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public EmailConfigurationWritePlatformServiceImpl(final PlatformSecurityContext context, final EmailConfigurationRepository repository,
|
|
||||||
final EmailConfigurationValidator emailConfigurationValidator) {
|
|
||||||
this.context = context;
|
|
||||||
this.repository = repository;
|
|
||||||
this.emailConfigurationValidator = emailConfigurationValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommandProcessingResult update(final JsonCommand command) {
|
public CommandProcessingResult update(final JsonCommand command) {
|
||||||
|
|
||||||
|
|||||||
+2
-6
@@ -23,27 +23,23 @@ import java.util.List;
|
|||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import javax.mail.MessagingException;
|
import javax.mail.MessagingException;
|
||||||
import javax.mail.internet.MimeMessage;
|
import javax.mail.internet.MimeMessage;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.data.EmailMessageWithAttachmentData;
|
import org.apache.fineract.infrastructure.campaigns.email.data.EmailMessageWithAttachmentData;
|
||||||
import org.apache.fineract.infrastructure.configuration.data.SMTPCredentialsData;
|
import org.apache.fineract.infrastructure.configuration.data.SMTPCredentialsData;
|
||||||
import org.apache.fineract.infrastructure.configuration.service.ExternalServicesPropertiesReadPlatformService;
|
import org.apache.fineract.infrastructure.configuration.service.ExternalServicesPropertiesReadPlatformService;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.mail.javamail.JavaMailSenderImpl;
|
import org.springframework.mail.javamail.JavaMailSenderImpl;
|
||||||
import org.springframework.mail.javamail.MimeMessageHelper;
|
import org.springframework.mail.javamail.MimeMessageHelper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
public final class EmailMessageJobEmailServiceImpl implements EmailMessageJobEmailService {
|
public final class EmailMessageJobEmailServiceImpl implements EmailMessageJobEmailService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(EmailMessageJobEmailServiceImpl.class);
|
private static final Logger LOG = LoggerFactory.getLogger(EmailMessageJobEmailServiceImpl.class);
|
||||||
private final ExternalServicesPropertiesReadPlatformService externalServicesReadPlatformService;
|
private final ExternalServicesPropertiesReadPlatformService externalServicesReadPlatformService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public EmailMessageJobEmailServiceImpl(ExternalServicesPropertiesReadPlatformService externalServicesReadPlatformService) {
|
|
||||||
this.externalServicesReadPlatformService = externalServicesReadPlatformService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendEmailWithAttachment(EmailMessageWithAttachmentData emailMessageWithAttachmentData) {
|
public void sendEmailWithAttachment(EmailMessageWithAttachmentData emailMessageWithAttachmentData) {
|
||||||
final SMTPCredentialsData smtpCredentialsData = this.externalServicesReadPlatformService.getSMTPCredentials();
|
final SMTPCredentialsData smtpCredentialsData = this.externalServicesReadPlatformService.getSMTPCredentials();
|
||||||
|
|||||||
+2
-9
@@ -23,6 +23,7 @@ import java.sql.SQLException;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.data.EmailData;
|
import org.apache.fineract.infrastructure.campaigns.email.data.EmailData;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessageEnumerations;
|
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessageEnumerations;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessageStatusType;
|
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessageStatusType;
|
||||||
@@ -34,13 +35,13 @@ import org.apache.fineract.infrastructure.core.service.Page;
|
|||||||
import org.apache.fineract.infrastructure.core.service.PaginationHelper;
|
import org.apache.fineract.infrastructure.core.service.PaginationHelper;
|
||||||
import org.apache.fineract.infrastructure.core.service.SearchParameters;
|
import org.apache.fineract.infrastructure.core.service.SearchParameters;
|
||||||
import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator;
|
import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.dao.EmptyResultDataAccessException;
|
import org.springframework.dao.EmptyResultDataAccessException;
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class EmailReadPlatformServiceImpl implements EmailReadPlatformService {
|
public class EmailReadPlatformServiceImpl implements EmailReadPlatformService {
|
||||||
|
|
||||||
private final JdbcTemplate jdbcTemplate;
|
private final JdbcTemplate jdbcTemplate;
|
||||||
@@ -48,14 +49,6 @@ public class EmailReadPlatformServiceImpl implements EmailReadPlatformService {
|
|||||||
private final EmailMapper emailRowMapper = new EmailMapper();
|
private final EmailMapper emailRowMapper = new EmailMapper();
|
||||||
private final PaginationHelper paginationHelper;
|
private final PaginationHelper paginationHelper;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public EmailReadPlatformServiceImpl(final JdbcTemplate jdbcTemplate, DatabaseSpecificSQLGenerator sqlGenerator,
|
|
||||||
PaginationHelper paginationHelper) {
|
|
||||||
this.jdbcTemplate = jdbcTemplate;
|
|
||||||
this.sqlGenerator = sqlGenerator;
|
|
||||||
this.paginationHelper = paginationHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final class EmailMapper implements RowMapper<EmailData> {
|
private static final class EmailMapper implements RowMapper<EmailData> {
|
||||||
|
|
||||||
final String schema;
|
final String schema;
|
||||||
|
|||||||
+2
-9
@@ -19,6 +19,7 @@
|
|||||||
package org.apache.fineract.infrastructure.campaigns.email.service;
|
package org.apache.fineract.infrastructure.campaigns.email.service;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.data.EmailDataValidator;
|
import org.apache.fineract.infrastructure.campaigns.email.data.EmailDataValidator;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessage;
|
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessage;
|
||||||
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessageAssembler;
|
import org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessageAssembler;
|
||||||
@@ -29,7 +30,6 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuild
|
|||||||
import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityException;
|
import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.dao.DataIntegrityViolationException;
|
import org.springframework.dao.DataIntegrityViolationException;
|
||||||
import org.springframework.dao.NonTransientDataAccessException;
|
import org.springframework.dao.NonTransientDataAccessException;
|
||||||
import org.springframework.orm.jpa.JpaSystemException;
|
import org.springframework.orm.jpa.JpaSystemException;
|
||||||
@@ -37,6 +37,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class EmailWritePlatformServiceJpaRepositoryImpl implements EmailWritePlatformService {
|
public class EmailWritePlatformServiceJpaRepositoryImpl implements EmailWritePlatformService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(EmailWritePlatformServiceJpaRepositoryImpl.class);
|
private static final Logger LOG = LoggerFactory.getLogger(EmailWritePlatformServiceJpaRepositoryImpl.class);
|
||||||
@@ -45,14 +46,6 @@ public class EmailWritePlatformServiceJpaRepositoryImpl implements EmailWritePla
|
|||||||
private final EmailMessageRepository repository;
|
private final EmailMessageRepository repository;
|
||||||
private final EmailDataValidator validator;
|
private final EmailDataValidator validator;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public EmailWritePlatformServiceJpaRepositoryImpl(final EmailMessageAssembler assembler, final EmailMessageRepository repository,
|
|
||||||
final EmailDataValidator validator) {
|
|
||||||
this.assembler = assembler;
|
|
||||||
this.repository = repository;
|
|
||||||
this.validator = validator;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public CommandProcessingResult create(final JsonCommand command) {
|
public CommandProcessingResult create(final JsonCommand command) {
|
||||||
|
|||||||
+1
-1
@@ -150,7 +150,7 @@ public class ExecuteEmailTasklet implements Tasklet {
|
|||||||
emailMessage.setStatusType(EmailMessageStatusType.SENT.getValue());
|
emailMessage.setStatusType(EmailMessageStatusType.SENT.getValue());
|
||||||
emailMessageRepository.save(emailMessage);
|
emailMessageRepository.save(emailMessage);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
emailMessage.updateErrorMessage(e.getMessage());
|
emailMessage.setErrorMessage(e.getMessage());
|
||||||
emailMessage.setStatusType(EmailMessageStatusType.FAILED.getValue());
|
emailMessage.setStatusType(EmailMessageStatusType.FAILED.getValue());
|
||||||
emailMessageRepository.save(emailMessage);
|
emailMessageRepository.save(emailMessage);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -75,7 +75,7 @@ public class UpdateEmailOutboundWithCampaignMessageTasklet implements Tasklet {
|
|||||||
log.debug("tenant time {} trigger time {}", tenantDateNow, nextTriggerDate);
|
log.debug("tenant time {} trigger time {}", tenantDateNow, nextTriggerDate);
|
||||||
if (nextTriggerDate.isBefore(tenantDateNow)) {
|
if (nextTriggerDate.isBefore(tenantDateNow)) {
|
||||||
insertDirectCampaignIntoEmailOutboundTable(emailCampaignData.getParamValue(), emailCampaignData.getEmailSubject(),
|
insertDirectCampaignIntoEmailOutboundTable(emailCampaignData.getParamValue(), emailCampaignData.getEmailSubject(),
|
||||||
emailCampaignData.getMessage(), emailCampaignData.getCampaignName(), emailCampaignData.getId());
|
emailCampaignData.getEmailMessage(), emailCampaignData.getCampaignName(), emailCampaignData.getId());
|
||||||
updateTriggerDates(emailCampaignData.getId());
|
updateTriggerDates(emailCampaignData.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public final class ReportData {
|
public class ReportData {
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private final Long id;
|
private final Long id;
|
||||||
|
|||||||
Reference in New Issue
Block a user