public void SendFeedbackToDataCollecorsAndVerifiers(IEnumerable <CaseReport> latestReports) { var dataCollectors = _dataCollectors.Get(latestReports.Select(o => o.DataCollectorId).ToArray()); var collectors = dataCollectors as DataCollector[] ?? dataCollectors.ToArray(); var dataVerifiers = collectors.GroupBy(o => o.DataVerifier.UserId).Select(o => o.First().DataVerifier).ToArray(); var healthRisk = latestReports.First().HealthRiskId; // send sms to all data verifiers foreach (DataVerifier dataVerifier in dataVerifiers) { string text = _messageTemplateService.ComposeMessage(EMessageTemplateNames.AlertRaisedFeedbackToDataVerifiers, healthRisk); _smsSendingService.SendSMS(new [] { dataVerifier.Phone }, ""); ApplyEvent(new SmsSentEvent() { RecipientName = dataVerifier.Name, RecipientPhoneNumber = dataVerifier.Phone, SmsText = text }); } // send sms to all data collecors foreach (DataCollector dataCollector in collectors) { string text = _messageTemplateService.ComposeMessage(EMessageTemplateNames.AlertRaisedFeedbackToDataCollectors, healthRisk); _smsSendingService.SendSMS(new[] { dataCollector.Phone }, ""); ApplyEvent(new SmsSentEvent() { RecipientName = dataCollector.Name, RecipientPhoneNumber = dataCollector.Phone, SmsText = text }); } }