public GapSummaryReport() : base(true) { var toggleProvider = new PdbSqlToggleProvider(this.connectionFactory); var reportRepositoryFactory = new RecoverabilityIntegrityReportReaderFactory(toggleProvider, connectionFactory); var reportRepository = reportRepositoryFactory.Get(); _backupDbcc = new BackupDbccService(this.SqlRepo, reportRepository); _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository)); }
public RecoveryObjectivesReport() : base(lookingGlassDependency: true) { var toggleProvider = new PdbSqlToggleProvider(this.connectionFactory); var reportRepositoryFactory = new RecoverabilityIntegrityReportReaderFactory(toggleProvider, connectionFactory); var reportRepository = reportRepositoryFactory.Get(); _backupDbcc = new BackupDbccService(this.SqlRepo, reportRepository); _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(SqlRepo.ConfigurationRepository)); }
public Uptime() : base(lookingGlassDependency: true) { _uptime = new UptimeService(this.SqlRepo); _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository)); }
private string FetchFileData(BackupDbccService svc, RecoverabilityIntegrityViewModel viewModel, IQualityIndicatorService qualityIndicatorService) { var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService); using (var sw = new System.IO.StringWriter()) { var heaaderArr = new string[] { "Hour", "Overall Score", "Backup Frequency Score", "Backup Coverage Score", "DBCC Frequency Score", "DBCC Coverage Score", "RPO Score", "RTO Score" }; sw.WriteLine(string.Join(",", heaaderArr)); foreach (var row in filterResult.Data) { sw.WriteCsvSafeLine(row); } return(sw.ToString()); } }
private FilterResult FilterData(BackupDbccService svc, RecoverabilityIntegrityViewModel viewModel, bool isDownload, IQualityIndicatorService qualityIndicatorService) { var grid = svc.RecoverabilityIntegritySummary(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands); var aaData = grid.Data.Select(d => new string[] { d.FriendlySummaryDayHour, isDownload ? d.RecoverabilityIntegrityScore.ToString() : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.RecoverabilityIntegrityScore, false)}'>{d.RecoverabilityIntegrityScore}</span>", isDownload ? d.BackupFrequencyScore.ToString() : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.BackupFrequencyScore, false)}'>{d.BackupFrequencyScore}</span>", isDownload ? d.BackupCoverageScore.ToString() : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.BackupCoverageScore, false)}'>{d.BackupCoverageScore}</span>", isDownload ? d.DbccFrequencyScore.ToString() : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.DbccFrequencyScore, false)}'>{d.DbccFrequencyScore}</span>", isDownload ? d.DbccCoverageScore.ToString() : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.DbccCoverageScore, false)}'>{d.DbccCoverageScore}</span>", isDownload ? d.RPOScore.ToString() : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.RPOScore, false)}' title='{(d.RPOScore < 100 ? d.PotentialDataLossMinutes + " minute(s) of potential data loss on "+ d.WorstRPODatabase : String.Empty)}'>{d.RPOScore}</span>", isDownload ? d.RTOScore.ToString() : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.RTOScore, false)}' title='{(d.RTOScore < 100 ? "Estimated " + d.EstimatedTimeToRecoverHours + " hours(s) to restore "+ d.WorstRTODatabase : String.Empty)}'>{d.RTOScore}</span>" }).ToArray(); return(new kCura.PDD.Web.Controllers.FilterResult() { Data = aaData, TotalRecordCount = grid.Count }); }
private string FetchFileData(UserExperienceService svc, UserExperienceServerViewModel viewModel, IQualityIndicatorService qualityIndicatorService) { var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService); using (var sw = new System.IO.StringWriter()) { var heaaderArr = new string[] { "Hour", "Server", "Score", "Workspace", "Long-Running Queries", "Total Users", "Total Search Audits", "Total Non-Search Audits", "Total Audits", "Total Execution Time", "Weekly Sample" }; sw.WriteLine(string.Join(",", heaaderArr)); foreach (var row in filterResult.Data) { sw.WriteCsvSafeLine(row); } return(sw.ToString()); } }
public SystemLoadServers() : base(true) { _systemLoad = new SystemLoadService(this.SqlRepo); _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository)); }
/// <summary> /// Translates a Backup/DBCC view into grid data /// </summary> /// <param name="viewModel"></param> /// <returns></returns> private DataTableResponse FetchGridData(BackupDbccService svc, RecoveryObjectivesViewModel viewModel, IQualityIndicatorService qualityIndicatorService) { var data = FilterData(svc, viewModel, false, qualityIndicatorService); var dtResponse = new DataTableResponse() { sEcho = string.IsNullOrEmpty(viewModel.GridConditions.sEcho) ? "1" : viewModel.GridConditions.sEcho, aaData = data.Data, recordsTotal = data.Data.Count(), recordsFiltered = data.TotalRecordCount }; return(dtResponse); }
public UserExperienceHours() : base(true) { _userExperience = new UserExperienceService(this.SqlRepo); _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository)); }
public UserExperienceServers() : base(lookingGlassDependency: true) { _userExperience = new UserExperienceService(this.SqlRepo); _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository)); }
private string FetchFileData(SystemLoadService svc, SystemLoadServerViewModel viewModel, IQualityIndicatorService qualityIndicatorService) { var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService); using (var sw = new System.IO.StringWriter()) { var heaaderArr = new string[] { "Hour", "Server", "Server Type", "Overall Score", "CPU Utilization Score", "RAM Utilization Score", "SQL Memory Signal Score", "SQL Waits Score", "Virtual Log Files Score", "Latency Score", "Weekly Sample" }; sw.WriteLine(string.Join(",", heaaderArr)); foreach (var row in filterResult.Data) { sw.WriteCsvSafeLine(row); } return(sw.ToString()); } }
private FilterResult FilterData(SystemLoadService svc, SystemLoadServerViewModel viewModel, bool IsDownload, IQualityIndicatorService qualityIndicatorService) { var grid = svc.ServerHours(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands); var sysInfo = svc.ReadSystemInformation().ToList(); var aaData = grid.Data.Select(d => new string[] { IsDownload ? $"{d.SummaryDayHour.ToShortDateString()} {d.SummaryDayHour.ToString("t")}" : $"<a href='{GetPageUrl(Names.Tab.ServerHealth, "ServerHealth", $"startDate={d.SummaryDayHour.ToShortDateString()}&endDate={d.SummaryDayHour.ToShortDateString()}")}' target='_parent'>{ d.SummaryDayHour.ToShortDateString()} {d.SummaryDayHour.ToString("t")} </a>", IsDownload ? string.Format("{0} ({1})", d.Server, d.ServerId) : string.Format(@"<div style=""display:inline-block"" title=""{0}"" data-placement=""right"">{1}</div>", (sysInfo.FirstOrDefault(i => i.ServerArtifactId == d.ServerId) ?? new SystemInformation()).SummaryHtml, string.Format("{0} ({1})", d.Server, d.ServerId) ), d.ServerType, IsDownload ? d.OverallScore.ToString() : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.OverallScore, false)}'>{d.OverallScore}</span>", IsDownload ? d.CPUScore.ToString() : $"<a href='{GetPageUrl(Names.Tab.ServerHealth, "ServerHealth", $"startDate={d.SummaryDayHour.ToShortDateString()}&endDate={d.SummaryDayHour.ToShortDateString()}&measureType={(int)MeasureTypes.Processor}")}' target='_parent'>" + $"<span class='{qualityIndicatorService.GetCssClassForScore(d.CPUScore, false)}'>{d.CPUScore}</span>" + $"</a>", IsDownload ? d.RAMScore.ToString() : $"<a href='{GetPageUrl(Names.Tab.ServerHealth, "ServerHealth", $"startDate={d.SummaryDayHour.ToShortDateString()}&endDate={d.SummaryDayHour.ToShortDateString()}&measureType={(int)MeasureTypes.Ram}")}' target='_parent'>" + $"<span class='{qualityIndicatorService.GetCssClassForScore(d.RAMScore, false)}'>{d.RAMScore}</span>" + $"</a>", IsDownload || d.ServerType != "SQL" ? d.FriendlyMemorySignalStateScore : $"<div style='display:inline-block' title='{d.MemorySignalStateRatio}% occurence of low memory<br/>{d.Pageouts} pageout(s)' data-placement='right'>" + $"<span class='{qualityIndicatorService.GetCssClassForScore(d.MemorySignalStateScore, false)}'>{d.MemorySignalStateScore}</span>" + $"</div>", IsDownload || d.ServerType != "SQL" ? d.FriendlyWaitsScore : $"<a href='{GetPageUrl(d.ServerId, "Waits", $"Server={d.ServerId}&Hour={d.SummaryDayHour.ToString("s")}")}' target='_self'>" + $"<b class='{qualityIndicatorService.GetCssClassForScore(d.WaitsScore, false)}'>{d.FriendlyWaitsScore}</b>" + $"</a>", IsDownload || d.ServerType != "SQL" ? d.FriendlyVirtualLogFilesScore :$"<div style='display:inline-block' title='{(d.MaxVirtualLogFiles > 0 ? d.MaxVirtualLogFiles + "virtual log file(s)" : string.Empty)}' data-placement='right'>" + $"<b class='{qualityIndicatorService.GetCssClassForScore(d.VirtualLogFilesScore, false)}'>{d.FriendlyVirtualLogFilesScore}</b>" + $"</div>", IsDownload || d.ServerType != "SQL" ? d.FriendlyLatencyScore : $"<div style='display:inline-block' " + $"title='{(!string.IsNullOrEmpty(d.HighestLatencyDatabase) ? string.Format("{0} ({1} File)<br/>Read Latency: {2} ms<br/>Write Latency: {3} ms", d.HighestLatencyDatabase, d.DatabaseFileType, d.ReadLatencyMs, d.WriteLatencyMs) : string.Empty)} ' data-placement='right'>" + $"<b class='{qualityIndicatorService.GetCssClassForScore(d.LatencyScore, false)}'>{d.FriendlyLatencyScore}</b>" + $"</div>", d.IsActiveWeeklySample ? "Yes" : "No" }).ToArray(); return(new kCura.PDD.Web.Controllers.FilterResult() { Data = aaData, TotalRecordCount = grid.Count }); }
private string FetchFileData(UptimeService svc, UptimeReportViewModel viewModel, IQualityIndicatorService qualityIndicatorService) { var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService); using (var sw = new System.IO.StringWriter()) { var heaaderArr = new string[] { "Hour", "Score", "Status", "Uptime" }; sw.WriteLine(string.Join(",", heaaderArr)); foreach (var row in filterResult.Data) { sw.WriteCsvSafeLine(row); } return(sw.ToString()); } }
private FilterResult FilterData(UptimeService svc, UptimeReportViewModel viewModel, bool isDownload, IQualityIndicatorService qualityIndicatorService) { var grid = svc.UptimeHours(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands); var aaData = grid.Data.Select(d => new string[] { $"{d.SummaryDayHour.ToShortDateString()} {d.SummaryDayHour.ToString("t")}", isDownload ? $"{d.Score} {(d.AffectedByMaintenanceWindow ? "(Affected By Maintenance Window)" : string.Empty)}" : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.Score, false)}'>{d.Score} {(d.AffectedByMaintenanceWindow ? "(Affected By Maintenance Window)" : string.Empty)}</span>", d.Status.ToString(), d.Uptime.ToString("N2") }).ToArray(); return(new FilterResult() { Data = aaData, TotalRecordCount = grid.Count }); }
public RecoverabilityIntegrityReport() : base(lookingGlassDependency: true) { _backupDbcc = this.GetBackupDbccService(); _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository)); }
private FilterResult FilterData(SystemLoadService svc, SystemLoadWaitsViewModel viewModel, bool isDownload, IQualityIndicatorService qualityIndicatorService) { var grid = svc.Waits(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands); var sysInfo = svc.ReadSystemInformation().ToList(); var aaData = grid.Data.Select(d => new string[] { $"{d.SummaryDayHour.ToShortDateString()} {d.SummaryDayHour.ToString("t")}", $"{d.Server} ({d.ServerId})", isDownload ? d.OverallScore.ToString() :$"<span class='{qualityIndicatorService.GetCssClassForScore(d.OverallScore, false)}'>{d.OverallScore}</span>", $"{d.SignalWaitsRatio}%", d.PercentOfCPUThreshold.ToString("f2"), isDownload ? d.WaitType : $"<div style='display:inline-block;' title='{d.WaitDescription}'>{d.WaitType}</div>", d.SignalWaitTime.ToString(), d.TotalWaitTime.ToString(), d.DifferentialWaitingTasksCount.ToString(), d.IsPoisonWait ? "Yes" : "No", d.IsActiveWeeklySample ? "Yes" : "No" }).ToArray(); return(new kCura.PDD.Web.Controllers.FilterResult() { Data = aaData, TotalRecordCount = grid.Count }); }
private string FetchFileData(SystemLoadService svc, SystemLoadWaitsViewModel viewModel, IQualityIndicatorService qualityIndicatorService) { var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService); using (var sw = new System.IO.StringWriter()) { var heaaderArr = new string[] { "Hour", "Server", "Waits Score", "Signal Waits Ratio", "Processor Time Utilization", "Wait Type", "Signal Wait Time (ms)", "Total Wait Time (ms)", "Waiting Task Count", "Poison Wait", "Weekly Sample" }; sw.WriteLine(string.Join(",", heaaderArr)); foreach (var row in filterResult.Data) { sw.WriteCsvSafeLine(row); } return(sw.ToString()); } }
public Waits() : base(lookingGlassDependency: true) { _systemLoad = new SystemLoadService(this.SqlRepo); _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository)); }
private FilterResult FilterData(BackupDbccService svc, RecoveryObjectivesViewModel viewModel, bool isDownload, IQualityIndicatorService qualityIndicatorService) { var grid = svc.RecoveryObjectivesSummary(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands); var aaData = grid.Data.Select(d => new string[] { $"{d.ServerName} ({d.ServerId})", d.DatabaseName, isDownload ? d.RPOScore.ToString() : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.RPOScore, false)}'>{d.RPOScore}</span>", isDownload ? d.RTOScore.ToString() :$"<span class='{qualityIndicatorService.GetCssClassForScore(d.RTOScore, false)}'>{d.RTOScore}</span>", d.PotentialDataLossMinutes.ToString(), d.EstimatedTimeToRecoverHours.ToString() }).ToArray(); return(new kCura.PDD.Web.Controllers.FilterResult() { Data = aaData, TotalRecordCount = grid.Count }); }
public ScoreImageService(IQualityIndicatorService indicatorService) { _indicatorService = indicatorService; }
private string FetchFileData(BackupDbccService svc, RecoveryObjectivesViewModel viewModel, IQualityIndicatorService qualityIndicatorService) { var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService); using (var sw = new System.IO.StringWriter()) { var heaaderArr = new string[] { "Server", "Database Name", "RPO Score", "RTO Score", "Potential Data Loss (Minutes)", "Estimated Time to Recover (Hours)" }; sw.WriteLine(string.Join(",", heaaderArr)); foreach (var row in filterResult.Data) { sw.WriteCsvSafeLine(row); } return(sw.ToString()); } }
private FilterResult FilterData(UserExperienceService svc, UserExperienceServerViewModel viewModel, bool isDownload, IQualityIndicatorService qualityIndicatorService) { var grid = svc.ServerWorkspaces(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands); var aaData = grid.Data.Select(d => new string[] { $"{d.SummaryDayHour.ToShortDateString()} {d.SummaryDayHour:t}", isDownload ? $"{d.Server} ({d.ServerId})" : string.Format(HoursLinkFormat, d.ServerId, string.Empty, $"{d.Server} ({d.ServerId})"), isDownload ? d.Score.ToString() :$"<span class='{qualityIndicatorService.GetCssClassForScore(d.Score, false)}'>{d.Score}</span>", isDownload ? $"{d.Workspace} ({d.WorkspaceId})" : string.Format(HoursLinkFormat, d.ServerId, $"&Workspace={d.WorkspaceId}", $"{d.Workspace} ({d.WorkspaceId})"), d.TotalLongRunning.ToString(), d.TotalUsers.ToString(), d.TotalSearchAudits.ToString(), d.TotalNonSearchAudits.ToString(), d.TotalAudits.ToString(), d.TotalExecutionTime.ToString(), d.IsActiveWeeklySample ? "Yes" : "No" }).ToArray(); return(new FilterResult() { Data = aaData, TotalRecordCount = grid.Count }); }