コード例 #1
0
ファイル: Main.cs プロジェクト: radtek/PureCloudExportTool
        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);
            }
        }