Example #1
0
        public static List <string> GetCsvConversations()
        {
            var result = new List <string>();

            try
            {
                foreach (var conversation in Instance.conversations)
                {
                    // <conversation>

                    if (!conversation.IsFinished())
                    {
                        Trace.Debug($"Skipping ongoing conversation: {conversation.conversationId}");
                        OngoingConversationManager.AddOngoingConversationIfDoesntExist(conversation.conversationId);
                        continue;
                    }

                    var convItems  = MappingManager.GetMappingItemSublist("conversations");
                    var convValues = GetValues(convItems, conversation);
                    if (conversation.participants != null && conversation.participants.Any())
                    {
                        foreach (var participant in conversation.participants)
                        {
                            // <participant>
                            var partItems  = MappingManager.GetMappingItemSublist("participants");
                            var partValues = GetValues(partItems, participant);
                            if (participant.sessions != null && participant.sessions.Any())
                            {
                                foreach (var session in participant.sessions)
                                {
                                    // <session>
                                    var sessItems  = MappingManager.GetMappingItemSublist("sessions");
                                    var sessValues = GetValues(sessItems, session);
                                    if (session.segments != null && session.segments.Any())
                                    {
                                        foreach (var segment in session.segments)
                                        {
                                            // <segment>
                                            var segItems  = MappingManager.GetMappingItemSublist("segments");
                                            var segValues = GetValues(segItems, segment);
                                            var csvLine   = ConvertValuesToCsvLine(new List <Dictionary <string, string> >()
                                            {
                                                convValues, partValues, sessValues, segValues
                                            });
                                            AddCsvLine(conversation.conversationId, csvLine, ref result);
                                            // </segment>
                                        }
                                    }
                                    else
                                    {
                                        var csvLine = ConvertValuesToCsvLine(new List <Dictionary <string, string> >()
                                        {
                                            convValues, partValues, sessValues
                                        });
                                        AddCsvLine(conversation.conversationId, csvLine, ref result);
                                    }
                                    // </session>
                                }
                            }
                            else
                            {
                                var csvLine = ConvertValuesToCsvLine(new List <Dictionary <string, string> >()
                                {
                                    convValues, partValues
                                });
                                AddCsvLine(conversation.conversationId, csvLine, ref result);
                            }
                            // </participant>
                        }
                    }
                    else
                    {
                        var csvLine = ConvertValuesToCsvLine(new List <Dictionary <string, string> >()
                        {
                            convValues
                        });
                        AddCsvLine(conversation.conversationId, csvLine, ref result);
                    }
                    // </conversation>
                }
            }
            catch (Exception ex)
            {
                Trace.Error("Error during transformation JSON to CSV", ex);
            }
            return(result);
        }