For a triggered SMS message, check if notification flag is set. If so, send to GCM service.
Project: http://git-wip-us.apache.org/repos/asf/fineract/repo Commit: http://git-wip-us.apache.org/repos/asf/fineract/commit/e2ae145a Tree: http://git-wip-us.apache.org/repos/asf/fineract/tree/e2ae145a Diff: http://git-wip-us.apache.org/repos/asf/fineract/diff/e2ae145a Branch: refs/heads/1.1.0 Commit: e2ae145a11a7a5232c2750b9479e8e855fbd2202 Parents: e3ce5f3 Author: conradsp <[email protected]> Authored: Thu Feb 15 20:55:31 2018 -0600 Committer: conradsp <[email protected]> Committed: Fri Feb 16 08:26:25 2018 -0600 ---------------------------------------------------------------------- .../SmsMessageScheduledJobServiceImpl.java | 33 +++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/fineract/blob/e2ae145a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java ---------------------------------------------------------------------- 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 e2e998a..092a243 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 @@ -194,21 +194,38 @@ public class SmsMessageScheduledJobServiceImpl implements SmsMessageScheduledJob public void sendTriggeredMessages(Map<SmsCampaign, Collection<SmsMessage>> smsDataMap) { try { if (!smsDataMap.isEmpty()) { + List<SmsMessage> toSaveMessages = new ArrayList<>() ; + List<SmsMessage> toSendNotificationMessages = new ArrayList<>() ; for (Entry<SmsCampaign, Collection<SmsMessage>> entry : smsDataMap.entrySet()) { Iterator<SmsMessage> smsMessageIterator = entry.getValue().iterator(); Collection<SmsMessageApiQueueResourceData> apiQueueResourceDatas = new ArrayList<>(); StringBuilder request = new StringBuilder(); while (smsMessageIterator.hasNext()) { SmsMessage smsMessage = smsMessageIterator.next(); - SmsMessageApiQueueResourceData apiQueueResourceData = SmsMessageApiQueueResourceData.instance(smsMessage.getId(), - null, null, null, smsMessage.getMobileNo(), smsMessage.getMessage(), entry.getKey().getProviderId()); - apiQueueResourceDatas.add(apiQueueResourceData); - smsMessage.setStatusType(SmsMessageStatusType.WAITING_FOR_DELIVERY_REPORT.getValue()); + if(smsMessage.isNotification()){ + smsMessage.setStatusType(SmsMessageStatusType.WAITING_FOR_DELIVERY_REPORT.getValue()); + toSendNotificationMessages.add(smsMessage); + }else { + SmsMessageApiQueueResourceData apiQueueResourceData = SmsMessageApiQueueResourceData.instance(smsMessage.getId(), + null, null, null, smsMessage.getMobileNo(), smsMessage.getMessage(), entry.getKey().getProviderId()); + apiQueueResourceDatas.add(apiQueueResourceData); + smsMessage.setStatusType(SmsMessageStatusType.WAITING_FOR_DELIVERY_REPORT.getValue()); + toSaveMessages.add(smsMessage) ; + } + } + if(toSaveMessages.size()>0){ + this.smsMessageRepository.save(toSaveMessages); + this.smsMessageRepository.flush(); + //this.smsMessageRepository.save(entry.getValue()); + //request.append(SmsMessageApiQueueResourceData.toJsonString(apiQueueResourceDatas)); + //logger.info("Sending triggered SMS with request - " + request.toString()); + this.triggeredExecutorService.execute(new SmsTask(ThreadLocalContextUtil.getTenant(), apiQueueResourceDatas)); } - this.smsMessageRepository.save(entry.getValue()) ; - request.append(SmsMessageApiQueueResourceData.toJsonString(apiQueueResourceDatas)); - logger.info("Sending triggered SMS with request - " + request.toString()); - this.triggeredExecutorService.execute(new SmsTask(ThreadLocalContextUtil.getTenant(), apiQueueResourceDatas)); + if(!toSendNotificationMessages.isEmpty()){ + this.notificationSenderService.sendNotification(toSendNotificationMessages); + } + + } } } catch (Exception e) {
