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 e2e998a4f68..4bb4d8f3dc7 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,35 @@ private void connectAndSendToIntermediateServer(Collection> smsDataMap) { try { if (!smsDataMap.isEmpty()) { + List toSaveMessages = new ArrayList<>() ; + List toSendNotificationMessages = new ArrayList<>() ; for (Entry> entry : smsDataMap.entrySet()) { Iterator smsMessageIterator = entry.getValue().iterator(); Collection 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.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) {