private static void PullConversationData(DateTime from, IPlugin loadedPlugin) { Log.Debug($"PullConversationData(), {nameof(from)}:{from.ToString("O")}, {nameof(To)}:{To.ToString("O")}"); try { if (from.Equals(DateTime.MinValue)) { throw new ArgumentException("Equals(DateTime.MinValue)", nameof(from)); } // a legacy condition, not sure is it necessary at all // <calculating intervals> var intervalList = new List <Interval>(); var tempFrom = from; while (To.Subtract(tempFrom).TotalDays >= MaxIntervalDurationDays) { var tempTo = tempFrom.AddDays(MaxIntervalDurationDays).Date.AddTicks(-1); intervalList.Add(new Interval(tempFrom, tempTo)); tempFrom = tempTo.AddDays(1).Date; } intervalList.Add(new Interval(tempFrom, To)); // </calculating intervals> // <getting the data> foreach (var interval in intervalList) { var conversationData = PureCloudObj.GetConversationData(interval); if (conversationData == null || conversationData.Count < 1) { continue; } var conversationDataJson = "{\"conversations\":" + JsonConvert.SerializeObject(conversationData) + "}"; loadedPlugin.PushData(conversationDataJson); Log.Info($"{nameof(loadedPlugin.AttachParticipantAttrs)}:{loadedPlugin.AttachParticipantAttrs}"); if (!loadedPlugin.AttachParticipantAttrs) { continue; } var finishedConversations = conversationData.Where(conversation => conversation.ConversationEnd != null).Select(conversation => conversation.ConversationId).ToList(); var participantAttrs = PureCloudObj.GetParticipantAttrs(finishedConversations); if (participantAttrs == null || participantAttrs.Count < 1) { continue; } var participantAttrsJson = "{\"participantattrs\":" + JsonConvert.SerializeObject(participantAttrs) + "}"; loadedPlugin.PushData(participantAttrsJson); var conversationMetrics = PureCloudObj.GetConversationMetrics(finishedConversations); if (conversationMetrics == null || conversationMetrics.Count < 1) { continue; } var conversationMetricsJson = "{\"conversationmetrics\":" + JsonConvert.SerializeObject(conversationMetrics) + "}"; loadedPlugin.PushData(conversationMetricsJson); } // </getting the data> } catch (Exception ex) { Log.Error("PullConversationData()", ex); } }