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 278f4fc7b..733601a71 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 @@ -22,7 +22,6 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.net.URI; import java.util.ArrayList; import java.util.Collection; -import java.util.Iterator; import java.util.List; import java.util.Map; import lombok.RequiredArgsConstructor; @@ -90,36 +89,44 @@ public class SmsMessageScheduledJobServiceImpl implements SmsMessageScheduledJob if (!smsDataMap.isEmpty()) { List toSaveMessages = new ArrayList<>(); List toSendNotificationMessages = new ArrayList<>(); + for (Map.Entry> entry : smsDataMap.entrySet()) { - Iterator smsMessageIterator = entry.getValue().iterator(); - Collection apiQueueResourceDatas = new ArrayList<>(); - while (smsMessageIterator.hasNext()) { - SmsMessage smsMessage = smsMessageIterator.next(); + for (SmsMessage smsMessage : entry.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.saveAll(toSaveMessages); - this.smsMessageRepository.flush(); - this.taskExecutor.execute(new SmsTask(apiQueueResourceDatas, ThreadLocalContextUtil.getContext())); - } - if (!toSendNotificationMessages.isEmpty()) { - this.notificationSenderService.sendNotification(toSendNotificationMessages); - } + } + if (!toSaveMessages.isEmpty()) { + this.smsMessageRepository.saveAll(toSaveMessages); + this.smsMessageRepository.flush(); + for (Map.Entry> entry : smsDataMap.entrySet()) { + Collection apiQueueResourceDatas = new ArrayList<>(); + for (SmsMessage smsMessage : entry.getValue()) { + if (!smsMessage.isNotification()) { + SmsMessageApiQueueResourceData apiQueueResourceData = SmsMessageApiQueueResourceData.instance( + smsMessage.getId(), null, null, null, smsMessage.getMobileNo(), smsMessage.getMessage(), + entry.getKey().getProviderId()); + apiQueueResourceDatas.add(apiQueueResourceData); + } + } + if (!apiQueueResourceDatas.isEmpty()) { + this.taskExecutor.execute(new SmsTask(apiQueueResourceDatas, ThreadLocalContextUtil.getContext())); + } + } + } + + if (!toSendNotificationMessages.isEmpty()) { + this.notificationSenderService.sendNotification(toSendNotificationMessages); } } } catch (Exception e) { - log.error("Error occured.", e); + log.error("Error occurred.", e); } }