private async Task <JObject> GetEventTracingConfiguration(EventTracingDataContract.ReportLevel generalReportLevel, HashSet <string> configuredCollectors)
        {
            Logger.Log("Retrieving diagnostic logs configurations...", LoggingLevel.Information);

            GetEventTracingConfigurationRequest getRequest = new GetEventTracingConfigurationRequest();
            var getResponse = await _systemConfiguratorProxy.SendCommandAsync(getRequest);

            if (getResponse.Status != ResponseStatus.Success)
            {
                var stringResponse = getResponse as StringResponse;
                throw new Error((int)stringResponse.Status, stringResponse.Response);
            }

            return(ReportedFromResponse(getResponse as GetEventTracingConfigurationResponse, generalReportLevel, configuredCollectors));
        }
        private JObject ReportedFromResponse(GetEventTracingConfigurationResponse response, EventTracingDataContract.ReportLevel generalReportLevel, HashSet <string> configuredCollectors)
        {
            Logger.Log("Building diagnostic logs reported properties...", LoggingLevel.Information);

            EventTracingDataContract.ReportedProperties reportedProperties = new EventTracingDataContract.ReportedProperties();

            foreach (CollectorReportedConfiguration msgCollector in response.Collectors)
            {
                string applicableReporting = EventTracingDataContract.JsonReportLevelNone;

                if (msgCollector.ReportToDeviceTwin == DMJSonConstants.YesString)
                {
                    applicableReporting = EventTracingDataContract.JsonReportLevelDetailed;
                }
                else if (!configuredCollectors.Contains(msgCollector.Name))
                {
                    if (generalReportLevel == EventTracingDataContract.ReportLevel.Detailed)
                    {
                        applicableReporting = EventTracingDataContract.JsonReportLevelDetailed;
                    }
                    if (generalReportLevel == EventTracingDataContract.ReportLevel.Minimal)
                    {
                        applicableReporting = EventTracingDataContract.JsonReportLevelMinimal;
                    }
                }

                if (applicableReporting == EventTracingDataContract.JsonReportLevelDetailed)
                {
                    var collectorInner = SystemConfiguratorConverters.CollectorInnerFromMessage(msgCollector);
                    reportedProperties.collectorsDetailed.Add(collectorInner);
                }
                else if (applicableReporting == EventTracingDataContract.JsonReportLevelMinimal)
                {
                    reportedProperties.collectorsMinimal.Add(msgCollector.Name);
                }
            }

            return(reportedProperties.ToJsonObject());
        }