diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm index c2a06be6b..467d6c543 100644 --- a/api-docs/apiLive.htm +++ b/api-docs/apiLive.htm @@ -21159,12 +21159,15 @@ Request Body:  
-

Retrieve a Share Product

+

Retrieve a SMS Campaign

Example Requests:

smscampaigns/1


smscampaigns/1?template=true
+

+
smscampaigns/template
+
GET https://Domain Name/api/v1/smscampaigns/1 @@ -21197,7 +21200,150 @@ Request Body: "recurrenceStartDate":"22 Jan 2016", "recurrence": "YEARLY" } - + + + smscampaigns/1?template=true + + { + "id": 1, + "campaignName": "Savings Deposit Campaign" + "campaignType": "SMS", + "triggerType": 3, + "providerId": 2, + "runReportId": 180, + "reportName" : "Savings Deposit", + "paramValue": "{"officeId":1,"loanOfficerId":-1,"transactionId":1,"reportName":"Savings Deposit"}", + "message": "Hello {fullName} your account is credited with {depositAmount} on {transactionDate}", + "status" : { "id":"","code":"","value":""} + + "smsProviderOptions": [{ + "id": 1, + "tenantId": "1", + "phoneNo": "+XXXXXXXXXX", + "providerName": "Twilio SMS Provider", + "providerDescription": "Twilio, just for testing" + }], + "businessRulesOptions": [ + { + "reportId": 166, + "reportName": "Active Clients", + "reportType": "SMS", + "reportSubType": "NonTriggered", + "reportDescription": "All clients with the status ‘Active’", + "reportParamName": { + "Office": "OfficeIdSelectOne", + "Loan Officer": "loanOfficerIdSelectAll" + } + } + ], + "triggerTypeOptions": [ + {"id": 1,"code": "triggerType.direct", "value": "Direct"}, + {"id": 2, "code": "triggerType.schedule","value": "Scheduled"}, + {"id": 3,"code": "triggerType.triggered","value": "Triggered"} + ], + "months": [ + { "id": 1, "code": "JANUARY", "value": "JANUARY" }, + { "id": 2, "code": "FEBRUARY", "value": "FEBRUARY" }, + { "id": 3, "code": "MARCH", "value": "MARCH" }, + { "id": 4, "code": "APRIL", "value": "APRIL" }, + { "id": 5, "code": "MAY", "value": "MAY" }, + { "id": 6, "code": "JUNE", "value": "JUNE" }, + { "id": 7, "code": "JULY", "value": "JULY" }, + { "id": 8, "code": "AUGUST", "value": "AUGUST" }, + { "id": 9, "code": "SEPTEMBER", "value": "SEPTEMBER"}, + { "id": 10, "code": "OCTOBER", "value": "OCTOBER"}, + { "id": 11, "code": "NOVEMBER", "value": "NOVEMBER" } + ], + "weekDays": [ + { "id": 1, "code": "calendarWeekDaysType.monday", "value": "MO" }, + { "id": 2, "code": "calendarWeekDaysType.tuesday", "value": "TU" }, + { "id": 3, "code": "calendarWeekDaysType.wednesday", "value": "WE" }, + { "id": 4, "code": "calendarWeekDaysType.thursday", "value": "TH"}, + { "id": 5, "code": "calendarWeekDaysType.friday", "value": "FR" }, + { "id": 6, "code": "calendarWeekDaysType.saturday", "value": "SA" }, + { "id": 7, "code": "calendarWeekDaysType.sunday", "value": "SU" } + ], + "frequencyTypeOptions": [ + { "id": 1, "code": "calendarFrequencyType.daily", "value": "DAILY" }, + { "id": 2, "code": "calendarFrequencyType.weekly", "value": "WEEKLY"}, + { "id": 3, "code": "calendarFrequencyType.monthly", "value": "MONTHLY"}, + { "id": 4, "code": "calendarFrequencyType.yearly", "value": "YEARLY" } + ], + "periodFrequencyOptions": [ + { "id": 0, "code": "periodFrequencyType.days", "value": "DAYS" }, + { "id": 1, "code": "periodFrequencyType.weeks", "value": "WEEKS" }, + { "id": 2, "code": "periodFrequencyType.months", "value": "MONTHS" }, + { "id": 3, "code": "periodFrequencyType.years", "value": "YEARS" } + ] +} + +smscampaigns/template + + { + "smsProviderOptions": [{ + "id": 1, + "tenantId": "1", + "phoneNo": "+XXXXXXXXXX", + "providerName": "Twilio SMS Provider", + "providerDescription": "Twilio, just for testing" + }], + "businessRulesOptions": [ + { + "reportId": 166, + "reportName": "Active Clients", + "reportType": "SMS", + "reportSubType": "NonTriggered", + "reportDescription": "All clients with the status ‘Active’", + "reportParamName": { + "Office": "OfficeIdSelectOne", + "Loan Officer": "loanOfficerIdSelectAll" + } + } + ], + "triggerTypeOptions": [ + {"id": 1,"code": "triggerType.direct", "value": "Direct"}, + {"id": 2, "code": "triggerType.schedule","value": "Scheduled"}, + {"id": 3,"code": "triggerType.triggered","value": "Triggered"} + ], + "months": [ + { "id": 1, "code": "JANUARY", "value": "JANUARY" }, + { "id": 2, "code": "FEBRUARY", "value": "FEBRUARY" }, + { "id": 3, "code": "MARCH", "value": "MARCH" }, + { "id": 4, "code": "APRIL", "value": "APRIL" }, + { "id": 5, "code": "MAY", "value": "MAY" }, + { "id": 6, "code": "JUNE", "value": "JUNE" }, + { "id": 7, "code": "JULY", "value": "JULY" }, + { "id": 8, "code": "AUGUST", "value": "AUGUST" }, + { "id": 9, "code": "SEPTEMBER", "value": "SEPTEMBER"}, + { "id": 10, "code": "OCTOBER", "value": "OCTOBER"}, + { "id": 11, "code": "NOVEMBER", "value": "NOVEMBER" } + ], + "weekDays": [ + { "id": 1, "code": "calendarWeekDaysType.monday", "value": "MO" }, + { "id": 2, "code": "calendarWeekDaysType.tuesday", "value": "TU" }, + { "id": 3, "code": "calendarWeekDaysType.wednesday", "value": "WE" }, + { "id": 4, "code": "calendarWeekDaysType.thursday", "value": "TH"}, + { "id": 5, "code": "calendarWeekDaysType.friday", "value": "FR" }, + { "id": 6, "code": "calendarWeekDaysType.saturday", "value": "SA" }, + { "id": 7, "code": "calendarWeekDaysType.sunday", "value": "SU" } + ], + "frequencyTypeOptions": [ + { "id": 1, "code": "calendarFrequencyType.daily", "value": "DAILY" }, + { "id": 2, "code": "calendarFrequencyType.weekly", "value": "WEEKLY"}, + { "id": 3, "code": "calendarFrequencyType.monthly", "value": "MONTHLY"}, + { "id": 4, "code": "calendarFrequencyType.yearly", "value": "YEARLY" } + ], + "periodFrequencyOptions": [ + { "id": 0, "code": "periodFrequencyType.days", "value": "DAYS" }, + { "id": 1, "code": "periodFrequencyType.weeks", "value": "WEEKS" }, + { "id": 2, "code": "periodFrequencyType.months", "value": "MONTHS" }, + { "id": 3, "code": "periodFrequencyType.years", "value": "YEARS" } + ] +} + + + +
@@ -21279,7 +21425,7 @@ Request Body: "status": { "id": 300, "code": "smsCampaignStatus.active", - "value": "Activated", + "value": "active", }, "locale": "en", "dateFormat": "dd MMMM yyyy", @@ -21314,7 +21460,7 @@ Request Body: "status": { "id": 600, "code": "smsCampaignStatus.closed", - "value": "Activated", + "value": "closed", }, "locale": "en", "dateFormat": "dd MMMM yyyy", @@ -21350,7 +21496,7 @@ Request Body: "status": { "id": 300, "code": "smsCampaignStatus.active", - "value": "Activated", + "value": "active", }, "locale": "en", "dateFormat": "dd MMMM yyyy", diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java b/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java index ed92a3879..0cdc7e2f0 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java +++ b/fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java @@ -2808,7 +2808,7 @@ public class CommandWrapperBuilder { this.actionName = "CREATE"; this.entityName = "SMSCAMPAIGN"; this.entityId = null; - this.href = "/smscampaign"; + this.href = "/smscampaigns"; return this; } @@ -2816,7 +2816,7 @@ public class CommandWrapperBuilder { this.actionName = "UPDATE"; this.entityName = "SMSCAMPAIGN"; this.entityId = resourceId; - this.href = "/smscampaign/"+resourceId; + this.href = "/smscampaigns/"+resourceId; return this; } @@ -2824,7 +2824,7 @@ public class CommandWrapperBuilder { this.actionName = "ACTIVATE"; this.entityName = "SMSCAMPAIGN"; this.entityId = resourceId; - this.href = "/smscampaign/"+resourceId + "?command=activate"; + this.href = "/smscampaigns/"+resourceId + "?command=activate"; return this; } @@ -2832,14 +2832,14 @@ public class CommandWrapperBuilder { this.actionName = "CLOSE"; this.entityName = "SMSCAMPAIGN"; this.entityId = resourceId; - this.href = "/smscampaign/"+resourceId + "?command=close"; + this.href = "/smscampaigns/"+resourceId + "?command=close"; return this; } public CommandWrapperBuilder reactivateSmsCampaign(final Long resourceId) { this.actionName = "REACTIVATE"; this.entityName = "SMSCAMPAIGN"; this.entityId = resourceId; - this.href = "/smscampaign/"+resourceId + "?command=reactivate"; + this.href = "/smscampaigns/"+resourceId + "?command=reactivate"; return this; } @@ -2847,7 +2847,7 @@ public class CommandWrapperBuilder { this.actionName = "DELETE"; this.entityName = "SMSCAMPAIGN"; this.entityId = resourceId; - this.href = "/smscampaign/"+resourceId; + this.href = "/smscampaigns/"+resourceId; return this; } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignConstants.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignConstants.java index 104f4c73e..964beda30 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignConstants.java @@ -20,8 +20,6 @@ package org.apache.fineract.infrastructure.campaigns.sms.constants; public interface SmsCampaignConstants { - String SMS_CAMPAIGN_NAME = "sms"; - String RESOURCE_NAME = "SMSCAMPAIGN"; String SMS_BRIDGE = "sms_bridge"; @@ -31,13 +29,4 @@ public interface SmsCampaignConstants { String FINERACT_PLATFORM_TENANT_ID = "Fineract-Platform-TenantId"; String FINERACT_TENANT_APP_KEY = "Fineract-Tenant-App-Key"; - - //Supported Triggered Campaigns - - String LOAN_REJECT = "Loan Rejected" ; - - String LOAN_APPROVED = "Loan Approved" ; - - String LOAN_REPAYMENT = "Loan Repayment" ; - } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignEnumerations.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignEnumerations.java index 16ae3cd24..99de55ecc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignEnumerations.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/constants/SmsCampaignEnumerations.java @@ -73,7 +73,7 @@ public class SmsCampaignEnumerations { public static List calendarMonthType() { final List optionDatas = new ArrayList<>(); for (final Month monthType : Month.values()) { - if (Month.DECEMBER.compareTo(monthType) != 0) { + if (Month.DECEMBER.compareTo(monthType) != 0) { //We are removing December because we are adding yearly frequency optionDatas.add(calendarMonthType(monthType)); } } @@ -83,9 +83,11 @@ public class SmsCampaignEnumerations { public static List calendarPeriodFrequencyTypes(final PeriodFrequencyType[] periodFrequencyTypes) { final List optionDatas = new ArrayList<>(); for (final PeriodFrequencyType periodFrequencyType : periodFrequencyTypes) { - final EnumOptionData optionData = new EnumOptionData(periodFrequencyType.getValue().longValue(), periodFrequencyType.getCode(), - periodFrequencyType.toString()); - optionDatas.add(optionData); + if(!periodFrequencyType.getValue().equals(PeriodFrequencyType.INVALID.getValue())) { + final EnumOptionData optionData = new EnumOptionData(periodFrequencyType.getValue().longValue(), periodFrequencyType.getCode(), + periodFrequencyType.toString()); + optionDatas.add(optionData); + } } return optionDatas; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/CampaignTriggerWithSubTypes.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/CampaignTriggerWithSubTypes.java deleted file mode 100644 index c23771fc7..000000000 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/CampaignTriggerWithSubTypes.java +++ /dev/null @@ -1,298 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.fineract.infrastructure.campaigns.sms.data; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.apache.fineract.infrastructure.core.data.EnumOptionData; - -public final class CampaignTriggerWithSubTypes { - - public enum ActualCampaignTriggerType { - INVALID(0, "campaignTriggerType.invalid"), // - LOAN(1, "campaignTriggerType.loan"), // - SAVING(2, "campaignTriggerType.saving"), // - CLIENT(3, "campaignTriggerType.client"); - - private Integer value; - private String code; - - private ActualCampaignTriggerType(Integer value, String code) { - this.value = value; - this.code = code; - } - - public static ActualCampaignTriggerType fromInt(final Integer typeValue) { - ActualCampaignTriggerType type = ActualCampaignTriggerType.INVALID; - switch (typeValue) { - case 1: - type = LOAN; - break; - case 2: - type = SAVING; - break; - case 3: - type = CLIENT; - break; - } - return type; - } - - public Integer getValue() { - return this.value; - } - - public String getCode() { - return this.code; - } - - public static EnumOptionData toEnumOptionData(final ActualCampaignTriggerType triggerType) { - final EnumOptionData optionData = new EnumOptionData(new Long(triggerType.getValue()), triggerType.getCode(), triggerType.name()); - return optionData; - } - - public static EnumOptionData toEnumOptionData(final Integer triggerTypeValue) { - ActualCampaignTriggerType actualCampaignTriggerType = ActualCampaignTriggerType.fromInt(triggerTypeValue); - final EnumOptionData optionData = new EnumOptionData(new Long(actualCampaignTriggerType.getValue()), - actualCampaignTriggerType.getCode(), actualCampaignTriggerType.name()); - return optionData; - } - - public boolean isInvalid() { - return this.value.equals(ActualCampaignTriggerType.INVALID.getValue()); - } - } - - public enum CampaignTriggerSubType { - INVALID(0, ActualCampaignTriggerType.INVALID, "campaignTriggerSubType.invalid"), // - - DISBURSE(101, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.disburse"), // - REPAYMENT(102, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.repayment"), // - UNDO_DISBURSAL(103, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.undodisbursal"), // - WRITE_OFF(104, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.writeoff"), // - ADJUST(105, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.adjust"), // - UNDO_WRITE_OFF(106, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.undowriteoff"), // - FORECLOSURE(107, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.foreclosure"), // - APPROVED(108, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.approved"), // - WAIVE_INTEREST(109, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.waive.interest"), // - CLOSE(110, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.close"), // - CLOSE_AS_RESCHEDULE(111, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.close.as.rescheduled"), // - ADD_CHARGE(112, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.add.charge"), // - UPDATE_CHARGE(113, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.update.charge"), // - WAIVE_CHARGE(114, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.waive.charge"), // - DELETE_CHARGE(115, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.delete.charge"), // - CHARGE_PAYMENT(116, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.charge.payment"), // - INITIATE_TRANSFER(117, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.initiate.transfer"), // - ACCEPT_TRANSFER(118, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.accept.transfer"), // - WITHDRAW_TRANSFER(119, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.withdraw.transfer"), // - REJECT_TRANSFER(120, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.reject.transfer"), // - REASSIGN_OFFICER(121, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.reassign.officer"), // - REMOVE_OFFICER(122, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.reassign.officer"), // - APPLY_OVERDUE_CHARGE(123, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.reassign.officer"), // - INTEREST_RECALCULATION(124, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.reassign.officer"), // - REFUND(125, ActualCampaignTriggerType.LOAN, "campaignTriggerSubType.reassign.officer"), // - - SAVINGS_DEPOSIT(201, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.deposit"), // - SAVINGS_WITHDRAWAL(202, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.withdrawal"), // - SAVINGS_ACTIVATE(203, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.savings.activate"), // - SAVINGS_ADJUST_TRANSACTION(204, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.savings.adjust"), // - SAVINGS_APPLY_ANNUAL_FEE(205, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.savings.apply.annual.fee"), // - SAVINGS_CALCULATE_INTEREST(206, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.savings.calclulate.interest"), // - SAVINGS_CLOSE(207, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.savings.close"), // - SAVINGS_POST_INTEREST(208, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.savings.post"), // - SAVINGS_REJECT(209, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.savings.reject"), // - SAVINGS_UNDO(210, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.savings.undo"), // - SAVINGS_ADD_CHARGE(211, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.savings.add.charge"), // - SAVINGS_WAIVE_CHARGE(212, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.savings.waive.charge"), // - SAVINGS_PAY_CHARGE(213, ActualCampaignTriggerType.SAVING, "campaignTriggerSubType.savings.pay.charge"), // - - CLIENTS_ACTIVATE(301, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.activate"), // - CLIENTS_CLOSE(302, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.close"), // - CLIENTS_ACCEPT_TRANSFER(303, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.accept.transfer"), // - CLIENTS_ASSIGN_STAFF(304, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.assign.staff"), // - CLIENTS_CREATE(305, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.create"), // - CLIENTS_DELETE(306, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.delete"), // - CLIENTS_PROPOSE_TRANSFER(307, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.propose.transfer"), // - CLIENTS_REACTIVATE(308, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.reactivate"), // - CLIENTS_REJECT(309, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.reject"), // - CLIENTS_REJECT_TRANSFER(310, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.reject.transfer"), // - CLIENTS_WITHDRAW(311, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.withdraw"), // - CLIENTS_WITHDRAW_TRANSFER(312, ActualCampaignTriggerType.CLIENT, "campaignTriggerSubType.withdraw.transfer"); - - private Integer id; - private ActualCampaignTriggerType type; - private String code; - - private CampaignTriggerSubType(Integer id, ActualCampaignTriggerType type, String code) { - this.id = id; - this.type = type; - this.code = code; - } - - public static CampaignTriggerSubType fromInt(final Integer subTypeValue) { - CampaignTriggerSubType subType = CampaignTriggerSubType.INVALID; - switch (subTypeValue) { - case 101: - subType = DISBURSE; - break; - case 102: - subType = REPAYMENT; - break; - case 103: - subType = ADJUST; - break; - case 104: - subType = UNDO_DISBURSAL; - break; - case 105: - subType = WRITE_OFF; - break; - case 106: - subType = UNDO_WRITE_OFF; - break; - - case 201: - subType = SAVINGS_DEPOSIT; - break; - case 202: - subType = SAVINGS_WITHDRAWAL; - break; - case 203: - subType = SAVINGS_ACTIVATE; - break; - case 204: - subType = SAVINGS_ADJUST_TRANSACTION; - break; - case 205: - subType = SAVINGS_APPLY_ANNUAL_FEE; - break; - case 206: - subType = SAVINGS_CALCULATE_INTEREST; - break; - case 207: - subType = SAVINGS_CLOSE; - break; - case 208: - subType = SAVINGS_POST_INTEREST; - break; - case 209: - subType = SAVINGS_REJECT; - break; - case 210: - subType = SAVINGS_UNDO; - break; - case 211: - subType = SAVINGS_ADD_CHARGE; - break; - case 212: - subType = SAVINGS_WAIVE_CHARGE; - break; - case 213: - subType = SAVINGS_PAY_CHARGE; - break; - - case 301: - subType = CLIENTS_ACTIVATE; - break; - case 302: - subType = CLIENTS_CLOSE; - break; - case 303: - subType = CLIENTS_ACCEPT_TRANSFER; - break; - case 304: - subType = CLIENTS_ASSIGN_STAFF; - break; - case 305: - subType = CLIENTS_CREATE; - break; - case 306: - subType = CLIENTS_DELETE; - break; - case 307: - subType = CLIENTS_PROPOSE_TRANSFER; - break; - case 308: - subType = CLIENTS_REACTIVATE; - break; - case 309: - subType = CLIENTS_REJECT; - break; - case 310: - subType = CLIENTS_REJECT_TRANSFER; - break; - case 311: - subType = CLIENTS_WITHDRAW; - break; - case 312: - subType = CLIENTS_WITHDRAW_TRANSFER; - break; - } - return subType; - } - - public Integer getId() { - return this.id; - } - - public ActualCampaignTriggerType getType() { - return this.type; - } - - public String getCode() { - return this.code; - } - - public static EnumOptionData toEnumOptionData(final Integer triggerSubType) { - CampaignTriggerSubType subTypeEnum = CampaignTriggerSubType.fromInt(triggerSubType); - final EnumOptionData optionData = new EnumOptionData(new Long(subTypeEnum.getId()), subTypeEnum.getCode(), subTypeEnum.name()); - return optionData; - } - } - - public static List addTypeSubTypeMapping(ActualCampaignTriggerType type) { - List subTypeList = new ArrayList<>(); - EnumOptionData optionData = null; - for (CampaignTriggerSubType subType : CampaignTriggerSubType.values()) { - if (subType.getType().equals(type)) { - optionData = new EnumOptionData(subType.getId().longValue(), subType.getCode(), subType.name()); - subTypeList.add(optionData); - } - } - return subTypeList; - } - - public static Collection getTriggerTypeAndSubTypes() { - final Collection typesList = new ArrayList<>(); - EnumOptionData actualTriggerType = null; - for (ActualCampaignTriggerType triggerType : ActualCampaignTriggerType.values()) { - if (triggerType.isInvalid()) { - continue; - } - List subTypeList = addTypeSubTypeMapping(triggerType); - actualTriggerType = ActualCampaignTriggerType.toEnumOptionData(triggerType); - TriggerTypeWithSubTypesData triggerTypeWithSubTypesData = new TriggerTypeWithSubTypesData(actualTriggerType, subTypeList); - typesList.add(triggerTypeWithSubTypesData); - } - return typesList; - } - -} diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/TriggerTypeWithSubTypesData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/TriggerTypeWithSubTypesData.java deleted file mode 100644 index b6e9c3c6a..000000000 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/TriggerTypeWithSubTypesData.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.fineract.infrastructure.campaigns.sms.data; - -import java.util.List; - -import org.apache.fineract.infrastructure.core.data.EnumOptionData; - -public class TriggerTypeWithSubTypesData { - - private final EnumOptionData actualTriggerType; - private final List triggerSubTypes; - - public TriggerTypeWithSubTypesData(final EnumOptionData actualTriggerType, List triggerSubTypes) { - this.actualTriggerType = actualTriggerType; - this.triggerSubTypes = triggerSubTypes; - } - - public EnumOptionData getActualTriggerType() { - return this.actualTriggerType; - } - - public List getTriggerSubTypes() { - return this.triggerSubTypes; - } - -} diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaignRepository.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaignRepository.java index 436f9ed63..bc3bb7d08 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaignRepository.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaignRepository.java @@ -23,6 +23,8 @@ import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; public interface SmsCampaignRepository extends JpaRepository, JpaSpecificationExecutor { @@ -32,4 +34,7 @@ public interface SmsCampaignRepository extends JpaRepository, final Integer status); Collection findByTriggerType(final Integer triggerType) ; + + @Query("SELECT campaign FROM SmsCampaign campaign WHERE campaign.paramValue LIKE :reportPattern AND campaign.triggerType=:triggerType AND campaign.status=300") + List findActiveSmsCampaigns(@Param("reportPattern") final String reportPattern, @Param("triggerType") final Integer triggerType) ; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java index 00926c4c4..42d7b8b2f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDomainServiceImpl.java @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -65,6 +66,8 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { private static final Logger logger = LoggerFactory.getLogger(SmsCampaignDomainServiceImpl.class); + //private final static int POOL_SIZE = 5 ; + private final SmsCampaignRepository smsCampaignRepository; private final SmsMessageRepository smsMessageRepository; private final OfficeRepository officeRepository; @@ -100,216 +103,192 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { this.businessEventNotifierService.addBusinessEventPostListners(BUSINESS_EVENTS.SAVINGS_REJECT, new SavingsAccountRejectedListener()); this.businessEventNotifierService.addBusinessEventPostListners(BUSINESS_EVENTS.SAVINGS_DEPOSIT, new SavingsAccountTransactionListener(true)); this.businessEventNotifierService.addBusinessEventPostListners(BUSINESS_EVENTS.SAVINGS_WITHDRAWAL, new SavingsAccountTransactionListener(false)); - - } - private void notifyRejectedLoanOwner(Loan loan) { - ArrayList smsCampaigns = retrieveSmsCampaigns("loan rejected"); - if(smsCampaigns.size()>0){ - for (SmsCampaign campaign:smsCampaigns){ - if(campaign.isActive()) { - this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(loan, campaign); - } - } - } - } + private void notifyRejectedLoanOwner(Loan loan) { + List smsCampaigns = retrieveSmsCampaigns("Loan Rejected"); + if (smsCampaigns.size() > 0) { + for (SmsCampaign campaign : smsCampaigns) { + if (campaign.isActive()) { + SmsCampaignDomainServiceImpl.this.smsCampaignWritePlatformCommandHandler + .insertDirectCampaignIntoSmsOutboundTable(loan, campaign); + } + } + } + } private void notifyAcceptedLoanOwner(Loan loan) { - ArrayList smsCampaigns = retrieveSmsCampaigns("loan approved"); - + List smsCampaigns = retrieveSmsCampaigns("Loan Approved"); if(smsCampaigns.size()>0){ for (SmsCampaign campaign:smsCampaigns){ - if(campaign.isActive()) { - this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(loan, campaign); - } + this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(loan, campaign); } } } private void notifyClientActivated(final Client client) { - ArrayList smsCampaigns = retrieveSmsCampaigns("client activated"); + List smsCampaigns = retrieveSmsCampaigns("Client Activated"); if(smsCampaigns.size()>0){ for (SmsCampaign campaign:smsCampaigns){ - if(campaign.isActive()) { - this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(client, campaign); - } + this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(client, campaign); } } } private void notifyClientRejected(final Client client) { - ArrayList smsCampaigns = retrieveSmsCampaigns("client rejected"); + List smsCampaigns = retrieveSmsCampaigns("Client Rejected"); if(smsCampaigns.size()>0){ for (SmsCampaign campaign:smsCampaigns){ - if(campaign.isActive()) { - this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(client, campaign); - } + this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(client, campaign); } } } private void notifySavingsAccountActivated(final SavingsAccount savingsAccount) { - ArrayList smsCampaigns = retrieveSmsCampaigns("savings activated"); + List smsCampaigns = retrieveSmsCampaigns("Savings Activated"); if (smsCampaigns.size() > 0) { for (SmsCampaign campaign : smsCampaigns) { - if (campaign.isActive()) { - this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(savingsAccount, + this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(savingsAccount, campaign); - } } } } private void notifySavingsAccountRejected(final SavingsAccount savingsAccount) { - ArrayList smsCampaigns = retrieveSmsCampaigns("savings rejected"); + List smsCampaigns = retrieveSmsCampaigns("Savings Rejected"); if (smsCampaigns.size() > 0) { for (SmsCampaign campaign : smsCampaigns) { - if (campaign.isActive()) { - this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(savingsAccount, + this.smsCampaignWritePlatformCommandHandler.insertDirectCampaignIntoSmsOutboundTable(savingsAccount, campaign); - } } } } private void sendSmsForLoanRepayment(LoanTransaction loanTransaction) { - ArrayList smsCampaigns = retrieveSmsCampaigns("loan repayment"); + List smsCampaigns = retrieveSmsCampaigns("Loan Repayment"); if (smsCampaigns.size() > 0) { for (SmsCampaign smsCampaign : smsCampaigns) { - if (smsCampaign.isActive()) { - try { - Loan loan = loanTransaction.getLoan(); - final Set groupClients = new HashSet<>(); - if (loan.hasInvalidLoanType()) { - throw new InvalidLoanTypeException("Loan Type cannot be Invalid for the Triggered Sms Campaign"); - } - if (loan.isGroupLoan()) { - Group group = this.groupRepository.findOne(loan.getGroupId()); - groupClients.addAll(group.getClientMembers()); - } else { - groupClients.add(loan.client()); - } - HashMap campaignParams = new ObjectMapper() - .readValue(smsCampaign.getParamValue(), new TypeReference>() { - }); + try { + Loan loan = loanTransaction.getLoan(); + final Set groupClients = new HashSet<>(); + if (loan.hasInvalidLoanType()) { + throw new InvalidLoanTypeException( + "Loan Type cannot be Invalid for the Triggered Sms Campaign"); + } + if (loan.isGroupLoan()) { + Group group = this.groupRepository.findOne(loan.getGroupId()); + groupClients.addAll(group.getClientMembers()); + } else { + groupClients.add(loan.client()); + } + HashMap campaignParams = new ObjectMapper().readValue(smsCampaign.getParamValue(), + new TypeReference>() { + }); - if (groupClients.size() > 0) { - for (Client client : groupClients) { - HashMap smsParams = processRepaymentDataForSms(loanTransaction, client); - for (String key : campaignParams.keySet()) { - String value = campaignParams.get(key); - String spvalue = null; - boolean spkeycheck = smsParams.containsKey(key); - if (spkeycheck) { - spvalue = smsParams.get(key).toString(); - } - if (spkeycheck && !(value.equals("-1") || spvalue.equals(value))) { - if (key.equals("officeId")) { - Office campaignOffice = this.officeRepository.findOne(Long.valueOf(value)); - if (campaignOffice - .doesNotHaveAnOfficeInHierarchyWithId(client.getOffice().getId())) { - throw new RuntimeException(); - } - } else { + if (groupClients.size() > 0) { + for (Client client : groupClients) { + HashMap smsParams = processRepaymentDataForSms(loanTransaction, client); + for (String key : campaignParams.keySet()) { + String value = campaignParams.get(key); + String spvalue = null; + boolean spkeycheck = smsParams.containsKey(key); + if (spkeycheck) { + spvalue = smsParams.get(key).toString(); + } + if (spkeycheck && !(value.equals("-1") || spvalue.equals(value))) { + if (key.equals("officeId")) { + Office campaignOffice = this.officeRepository.findOne(Long.valueOf(value)); + if (campaignOffice + .doesNotHaveAnOfficeInHierarchyWithId(client.getOffice().getId())) { throw new RuntimeException(); } + } else { + throw new RuntimeException(); } } - String message = this.smsCampaignWritePlatformCommandHandler.compileSmsTemplate( - smsCampaign.getMessage(), smsCampaign.getCampaignName(), smsParams); - Object mobileNo = smsParams.get("mobileNo"); - if (mobileNo != null) { - SmsMessage smsMessage = SmsMessage.pendingSms(null, null, client, null, message, - mobileNo.toString(), smsCampaign); - this.smsMessageRepository.save(smsMessage); - Collection messages = new ArrayList<>(); - messages.add(smsMessage); - Map> smsDataMap = new HashMap<>(); - smsDataMap.put(smsCampaign, messages); - this.smsMessageScheduledJobService.sendTriggeredMessages(smsDataMap); - } + } + String message = this.smsCampaignWritePlatformCommandHandler.compileSmsTemplate( + smsCampaign.getMessage(), smsCampaign.getCampaignName(), smsParams); + Object mobileNo = smsParams.get("mobileNo"); + if (mobileNo != null) { + SmsMessage smsMessage = SmsMessage.pendingSms(null, null, client, null, message, + mobileNo.toString(), smsCampaign); + this.smsMessageRepository.save(smsMessage); + Collection messages = new ArrayList<>(); + messages.add(smsMessage); + Map> smsDataMap = new HashMap<>(); + smsDataMap.put(smsCampaign, messages); + this.smsMessageScheduledJobService.sendTriggeredMessages(smsDataMap); } } - } catch (final IOException e) { - logger.error("smsParams does not contain the key: " + e.getMessage()); - } catch (final RuntimeException e) { - logger.debug("Client Office Id and SMS Campaign Office id doesn't match"); } + } catch (final IOException e) { + logger.error("smsParams does not contain the key: " + e.getMessage()); + } catch (final RuntimeException e) { + logger.debug("Client Office Id and SMS Campaign Office id doesn't match"); } } } } private void sendSmsForSavingsTransaction(final SavingsAccountTransaction savingsTransaction, boolean isDeposit) { - String campaignName = isDeposit ? "savings deposit" : "savings withdrawal"; - ArrayList smsCampaigns = retrieveSmsCampaigns(campaignName); + String campaignName = isDeposit ? "Savings Deposit" : "Savings Withdrawal"; + List smsCampaigns = retrieveSmsCampaigns(campaignName); if (smsCampaigns.size() > 0) { for (SmsCampaign smsCampaign : smsCampaigns) { - if (smsCampaign.isActive()) { - try { - final SavingsAccount savingsAccount = savingsTransaction.getSavingsAccount(); - final Client client = savingsAccount.getClient(); - HashMap campaignParams = new ObjectMapper() - .readValue(smsCampaign.getParamValue(), new TypeReference>() { - }); - HashMap smsParams = processSavingsTransactionDataForSms(savingsTransaction, - client); - for (String key : campaignParams.keySet()) { - String value = campaignParams.get(key); - String spvalue = null; - boolean spkeycheck = smsParams.containsKey(key); - if (spkeycheck) { - spvalue = smsParams.get(key).toString(); - } - if (spkeycheck && !(value.equals("-1") || spvalue.equals(value))) { - if (key.equals("officeId")) { - Office campaignOffice = this.officeRepository.findOne(Long.valueOf(value)); - if (campaignOffice - .doesNotHaveAnOfficeInHierarchyWithId(client.getOffice().getId())) { - throw new RuntimeException(); - } - } else { + try { + final SavingsAccount savingsAccount = savingsTransaction.getSavingsAccount(); + final Client client = savingsAccount.getClient(); + HashMap campaignParams = new ObjectMapper().readValue(smsCampaign.getParamValue(), + new TypeReference>() { + }); + HashMap smsParams = processSavingsTransactionDataForSms(savingsTransaction, client); + for (String key : campaignParams.keySet()) { + String value = campaignParams.get(key); + String spvalue = null; + boolean spkeycheck = smsParams.containsKey(key); + if (spkeycheck) { + spvalue = smsParams.get(key).toString(); + } + if (spkeycheck && !(value.equals("-1") || spvalue.equals(value))) { + if (key.equals("officeId")) { + Office campaignOffice = this.officeRepository.findOne(Long.valueOf(value)); + if (campaignOffice.doesNotHaveAnOfficeInHierarchyWithId(client.getOffice().getId())) { throw new RuntimeException(); } + } else { + throw new RuntimeException(); } } - String message = this.smsCampaignWritePlatformCommandHandler - .compileSmsTemplate(smsCampaign.getMessage(), smsCampaign.getCampaignName(), smsParams); - Object mobileNo = smsParams.get("mobileNo"); - if (mobileNo != null) { - SmsMessage smsMessage = SmsMessage.pendingSms(null, null, client, null, message, - mobileNo.toString(), smsCampaign); - this.smsMessageRepository.save(smsMessage); - Collection messages = new ArrayList<>(); - messages.add(smsMessage); - Map> smsDataMap = new HashMap<>(); - smsDataMap.put(smsCampaign, messages); - this.smsMessageScheduledJobService.sendTriggeredMessages(smsDataMap); - } - } catch (final IOException e) { - logger.error("smsParams does not contain the key: " + e.getMessage()); - } catch (final RuntimeException e) { - logger.debug("Client Office Id and SMS Campaign Office id doesn't match"); } + String message = this.smsCampaignWritePlatformCommandHandler + .compileSmsTemplate(smsCampaign.getMessage(), smsCampaign.getCampaignName(), smsParams); + Object mobileNo = smsParams.get("mobileNo"); + if (mobileNo != null) { + SmsMessage smsMessage = SmsMessage.pendingSms(null, null, client, null, message, + mobileNo.toString(), smsCampaign); + this.smsMessageRepository.save(smsMessage); + Collection messages = new ArrayList<>(); + messages.add(smsMessage); + Map> smsDataMap = new HashMap<>(); + smsDataMap.put(smsCampaign, messages); + this.smsMessageScheduledJobService.sendTriggeredMessages(smsDataMap); + } + } catch (final IOException e) { + logger.error("smsParams does not contain the key: " + e.getMessage()); + } catch (final RuntimeException e) { + logger.debug("Client Office Id and SMS Campaign Office id doesn't match"); } } } } - private ArrayList retrieveSmsCampaigns(String paramValue){ - Collection initialSmsCampaignList = smsCampaignRepository.findByTriggerType(SmsCampaignTriggerType.TRIGGERED.getValue()); - ArrayList smsCampaigns = new ArrayList<>(); - - for(SmsCampaign campaign : initialSmsCampaignList){ - if(campaign.getParamValue().toLowerCase().contains(paramValue)){ - smsCampaigns.add(campaign); - } - } + private List retrieveSmsCampaigns(String paramValue){ + List smsCampaigns = smsCampaignRepository.findActiveSmsCampaigns("%"+paramValue+"%", SmsCampaignTriggerType.TRIGGERED.getValue()); return smsCampaigns; } @@ -396,12 +375,15 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { return smsParams; } - private class SendSmsOnLoanApproved implements BusinessEventListner{ + private abstract class SmsBusinessEventAdapter implements BusinessEventListner { - @Override - public void businessEventToBeExecuted(Map businessEventEntity) { - - } + @Override + public void businessEventToBeExecuted(Map businessEventEntity) { + //Nothing to do + } + } + + private class SendSmsOnLoanApproved extends SmsBusinessEventAdapter{ @Override public void businessEventWasExecuted(Map businessEventEntity) { @@ -413,12 +395,7 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } - private class SendSmsOnLoanRejected implements BusinessEventListner{ - - @Override - public void businessEventToBeExecuted(Map businessEventEntity) { - - } + private class SendSmsOnLoanRejected extends SmsBusinessEventAdapter{ @Override public void businessEventWasExecuted(Map businessEventEntity) { @@ -430,12 +407,7 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } - private class SendSmsOnLoanRepayment implements BusinessEventListner{ - - @Override - public void businessEventToBeExecuted(Map businessEventEntity) { - - } + private class SendSmsOnLoanRepayment extends SmsBusinessEventAdapter{ @Override public void businessEventWasExecuted(Map businessEventEntity) { @@ -447,12 +419,7 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } - private class ClientActivatedListener implements BusinessEventListner { - - @Override - public void businessEventToBeExecuted(Map businessEventEntity) { - - } + private class ClientActivatedListener extends SmsBusinessEventAdapter { @Override public void businessEventWasExecuted(Map businessEventEntity) { @@ -463,12 +430,7 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } - private class ClientRejectedListener implements BusinessEventListner { - - @Override - public void businessEventToBeExecuted(Map businessEventEntity) { - - } + private class ClientRejectedListener extends SmsBusinessEventAdapter { @Override public void businessEventWasExecuted(Map businessEventEntity) { @@ -480,12 +442,7 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } - private class SavingsAccountActivatedListener implements BusinessEventListner { - - @Override - public void businessEventToBeExecuted(Map businessEventEntity) { - - } + private class SavingsAccountActivatedListener extends SmsBusinessEventAdapter{ @Override public void businessEventWasExecuted(Map businessEventEntity) { @@ -497,12 +454,7 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } - private class SavingsAccountRejectedListener implements BusinessEventListner { - - @Override - public void businessEventToBeExecuted(Map businessEventEntity) { - - } + private class SavingsAccountRejectedListener extends SmsBusinessEventAdapter { @Override public void businessEventWasExecuted(Map businessEventEntity) { @@ -513,18 +465,13 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } - private class SavingsAccountTransactionListener implements BusinessEventListner { + private class SavingsAccountTransactionListener extends SmsBusinessEventAdapter { final boolean isDeposit ; public SavingsAccountTransactionListener(final boolean isDeposit) { this.isDeposit = isDeposit ; } - @Override - public void businessEventToBeExecuted(Map businessEventEntity) { - // TODO Auto-generated method stub - - } @Override public void businessEventWasExecuted(Map businessEventEntity) { @@ -534,4 +481,19 @@ public class SmsCampaignDomainServiceImpl implements SmsCampaignDomainService { } } } + + /*private abstract class Task implements Runnable { + + protected final FineractPlatformTenant tenant; + + protected final String reportName ; + + private final Object entity ; + + public Task(final FineractPlatformTenant tenant, final String reportName, final Object entity) { + this.tenant = tenant; + this.reportName = reportName ; + this.entity = entity ; + } + }*/ } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformService.java index bb9814c2c..2da3a5920 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformService.java @@ -21,7 +21,6 @@ package org.apache.fineract.infrastructure.campaigns.sms.service; import java.util.Collection; import org.apache.fineract.infrastructure.campaigns.sms.data.SmsProviderData; -import org.apache.fineract.infrastructure.campaigns.sms.data.TriggerTypeWithSubTypesData; import org.apache.fineract.infrastructure.core.data.EnumOptionData; public interface SmsCampaignDropdownReadPlatformService { @@ -38,6 +37,4 @@ public interface SmsCampaignDropdownReadPlatformService { Collection retrivePeriodFrequencyTypes(); - Collection getTriggerTypeAndSubTypes(); - } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java index 44c92b95a..d974d7ab3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignDropdownReadPlatformServiceImpl.java @@ -27,12 +27,9 @@ import java.util.Map; import org.apache.fineract.infrastructure.campaigns.constants.CampaignType; import org.apache.fineract.infrastructure.campaigns.helper.SmsConfigUtils; -import org.apache.fineract.infrastructure.campaigns.sms.constants.SmsCampaignConstants; import org.apache.fineract.infrastructure.campaigns.sms.constants.SmsCampaignEnumerations; import org.apache.fineract.infrastructure.campaigns.sms.constants.SmsCampaignTriggerType; -import org.apache.fineract.infrastructure.campaigns.sms.data.CampaignTriggerWithSubTypes; import org.apache.fineract.infrastructure.campaigns.sms.data.SmsProviderData; -import org.apache.fineract.infrastructure.campaigns.sms.data.TriggerTypeWithSubTypesData; import org.apache.fineract.infrastructure.campaigns.sms.exception.ConnectionFailureException; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.portfolio.calendar.domain.CalendarWeekDaysType; @@ -74,19 +71,20 @@ public class SmsCampaignDropdownReadPlatformServiceImpl implements SmsCampaignDr @Override public Collection retrieveSmsProviders() { Collection smsProviderOptions = new ArrayList<>(); + String hostName = "" ; try { Map hostConfig = this.smsConfigUtils.getMessageGateWayRequestURI("smsbridges", null); URI uri = (URI) hostConfig.get("uri"); + hostName = uri.getHost() ; HttpEntity entity = (HttpEntity) hostConfig.get("entity"); ResponseEntity> responseOne = restTemplate.exchange(uri, HttpMethod.GET, entity, new ParameterizedTypeReference>() {}); smsProviderOptions = responseOne.getBody(); if (!responseOne.getStatusCode().equals(HttpStatus.OK)) { - System.out.println(responseOne.getStatusCode().name()); - throw new ConnectionFailureException(SmsCampaignConstants.SMS_BRIDGE); + throw new ConnectionFailureException(hostName); } } catch (Exception e) { - e.getStackTrace(); + throw new ConnectionFailureException(hostName); } return smsProviderOptions; } @@ -117,9 +115,4 @@ public class SmsCampaignDropdownReadPlatformServiceImpl implements SmsCampaignDr .calendarPeriodFrequencyTypes(PeriodFrequencyType.values()); return periodFrequencyTypes; } - - @Override - public Collection getTriggerTypeAndSubTypes() { - return CampaignTriggerWithSubTypes.getTriggerTypeAndSubTypes(); - } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java index c4d47e858..477b534c0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/service/SmsCampaignWritePlatformServiceJpaImpl.java @@ -234,8 +234,7 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP } } } catch (final IOException e) { - // TODO throw something here - System.out.println(e.getMessage()); + logger.error(e.getMessage()); } } @@ -291,9 +290,9 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP } } } catch (final IOException e) { - System.out.println("IOException: " + e.getMessage()); + logger.error(e.getMessage()) ; } catch (final RuntimeException e) { - System.out.println("RuntimeException: " + e.getMessage()); + logger.error(e.getMessage()) ; } } @@ -332,9 +331,9 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP } } } catch (final IOException e) { - System.out.println("IOException: " + e.getMessage()); + logger.error(e.getMessage()) ; } catch (final RuntimeException e) { - System.out.println("RuntimeException: " + e.getMessage()); + logger.error(e.getMessage()) ; } } @@ -372,9 +371,9 @@ public class SmsCampaignWritePlatformServiceJpaImpl implements SmsCampaignWriteP } } } catch (final IOException e) { - System.out.println("IOException: " + e.getMessage()); + logger.error(e.getMessage()) ; } catch (final RuntimeException e) { - System.out.println("RuntimeException: " + e.getMessage()); + logger.error(e.getMessage()) ; } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java index 3e23a10f3..4b34f41f4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java @@ -173,7 +173,7 @@ public class SmsMessageScheduledJobServiceImpl implements SmsMessageScheduledJob if (responseOne != null) { // String smsResponse = responseOne.getBody(); if (!responseOne.getStatusCode().equals(HttpStatus.ACCEPTED)) { - System.out.println(responseOne.getStatusCode().name()); + logger.debug(responseOne.getStatusCode().name()); throw new ConnectionFailureException(SmsCampaignConstants.SMS); } }