private static SignboardDiagnostics Map(DiagnosticsTableEntity tableEntity)
        {
            if (tableEntity == null)
            {
                return null;
            }

            var diagnostics = new SignboardDiagnostics(tableEntity.SignboardId, tableEntity.Date, SoftwareVersion.From(tableEntity.Version));

            diagnostics.AddMetricValue(DiagnosticMetricType.CpuUsagePercentage, tableEntity.CpuPercentageMetric);
            diagnostics.AddMetricValue(DiagnosticMetricType.RamUsagePercentage, tableEntity.RamPercentageMetric);
            diagnostics.AddMetricValue(DiagnosticMetricType.DiskUsagePercentage, tableEntity.DiskPercentageMetric);
            diagnostics.AddMetricValue(DiagnosticMetricType.SignboardState, tableEntity.SignboardStateMetric);
            diagnostics.AddMetricValue(DiagnosticMetricType.IsShowingScreensaver, tableEntity.IsShowingScreensaverMetric);
            diagnostics.AddMetricValue(DiagnosticMetricType.SlideshowHealthMetric, tableEntity.SlideshowObject);
            diagnostics.AddMetricValue(DiagnosticMetricType.NetworkTrafficBytesRecieved, tableEntity.NetworkTrafficBytesRecieved);
            diagnostics.AddMetricValue(DiagnosticMetricType.NetworkTrafficBytesSent, tableEntity.NetworkTrafficBytesSent);

            return diagnostics;
        }
        private SignboardDiagnostics GetSignboardDiagnostics(Guid signboardId, DiagnosticInputModel diagnosticsModel)
        {
            var diagnostics = new SignboardDiagnostics(signboardId, diagnosticsModel.DiagnosticDate, SoftwareVersion.From(diagnosticsModel.SoftwareVersion));
            foreach (DiagnosticMetricInputModel metric in diagnosticsModel.Metrics)
            {
                diagnostics.AddMetricValue((DiagnosticMetricType)Enum.Parse(typeof(DiagnosticMetricType), metric.Name), metric.Value.ToString());
            }

            if (diagnosticsModel.SignboardHealth == null)
            {
                return diagnostics;
            }
            else
            {
                diagnostics.AddMetricValue(DiagnosticMetricType.SignboardState, diagnosticsModel.SignboardHealth.ScreenState);
                diagnostics.AddMetricValue(DiagnosticMetricType.IsShowingScreensaver, diagnosticsModel.SignboardHealth.IsShowingScreensaver.ToString());

                if (diagnosticsModel.SignboardHealth.SlideHealth == null || diagnosticsModel.SignboardHealth.SlideHealth.Count == 0)
                {
                    return diagnostics;
                }

                diagnostics.AddMetricValue(DiagnosticMetricType.SlideshowHealthMetric, diagnosticsModel.SignboardHealth.ToString());
            }

            return diagnostics;
        }