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 }); }
public HttpResponseMessage GenerateCSV() { //Initialize service and model properties var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper()); var sqlRepo = new SqlServerRepository(connectionFactory); var reportRepository = new LegacyRecoverabilityIntegrityReportRepository(connectionFactory); var svc = new BackupDbccService(sqlRepo, reportRepository); var qualityIndicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(new ConfigurationRepository(connectionFactory))); var model = PopulateModelSettings(); model.GridConditions.StartRow = 1; model.GridConditions.EndRow = int.MaxValue; //Get the data var fetchedData = FetchFileData(svc, model, qualityIndicatorService); //Serialize response HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK); message.Content = new StringContent(fetchedData); message.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/csv"); message.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment"); message.Content.Headers.ContentDisposition.FileName = string.Format("RecoveryObjectives-{0}.csv", DateTime.Now.ToString("yyyyMMdd-HHmmss")); return(message); }
private FilterResult FilterData(BackupDbccService svc, BackupDbccViewModel viewModel, bool IsDownload) { var grid = svc.BackupDbccHistory(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands); var aaData = grid.Data.Select(d => new string[] { String.Format("{0} ({1})", d.Server, d.ServerId), IsDownload ? d.Database : String.Format(DatabaseInfoFormat, d.Workspace, d.Database), d.FriendlyIsBackup, d.FriendlyLastActivityDate, d.FriendlyGapResolutionDate, IsDownload ? d.GapSize.ToString() : string.Format(@"<b class=""{0}"">{1}</b>", d.GapSize <= 9 ? "grid-item-healthy" : d.GapResolutionDate.HasValue ? "grid-item-warning" : "grid-item-critical", d.GapSize.ToString()) }).ToArray(); return(new kCura.PDD.Web.Controllers.FilterResult() { Data = aaData, TotalRecordCount = grid.Count }); }
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 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)); }
/// <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); }
/// <summary> /// Translates a Backup/DBCC view into grid data /// </summary> /// <param name="viewModel"></param> /// <returns></returns> private DataTableResponse FetchGapGridData(BackupDbccService svc, BackupDbccViewModel viewModel) { var data = FilterData(svc, viewModel, false); 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); }
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 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 string FetchFileData(BackupDbccService svc, BackupDbccViewModel viewModel) { var filterResult = FilterData(svc, viewModel, true); using (var sw = new System.IO.StringWriter()) { var heaaderArr = new string[] { "Server", "Database", "Activity Type", "Last Activity", "Resolution Date", "Gap Size" }; sw.WriteLine(string.Join(",", heaaderArr)); foreach (var row in filterResult.Data) { sw.WriteCsvSafeLine(row); } return(sw.ToString()); } }
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 HttpResponseMessage Databases() { //Initialize service and model properties var connectionFactory = new HelperConnectionFactory(ConnectionHelper.Helper()); var sqlRepo = new SqlServerRepository(connectionFactory); var reportRepository = new LegacyRecoverabilityIntegrityReportRepository(connectionFactory); var svc = new BackupDbccService(sqlRepo, reportRepository); var model = PopulateModelSettings(); var qualityIndicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(new ConfigurationRepository(connectionFactory))); var session = (HttpSessionState)GetSession(); session[DataTableSessionConstants.RecoveryObjectivesState] = model; //Get the data var dtResponse = FetchGridData(svc, model, qualityIndicatorService); //Serialize response var json = dtResponse.ToJson(); var response = Request.CreateResponse(HttpStatusCode.OK); response.Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); return(response); }
/// <summary> /// Pulls query parameters from the request and converts them to grid and filter conditions for the Backup/DBCC View /// </summary> /// <returns></returns> private RecoveryObjectivesViewModel PopulateModelSettings() { var queryParams = this.requestService.GetQueryParamsDecoded(Request); return(BackupDbccService.PopulateRecoveryObjectivesModelSettings(queryParams)); }
/// <summary> /// Pulls query parameters from the request and converts them to grid and filter conditions for the Backup/DBCC View /// </summary> /// <returns></returns> private RecoverabilityIntegrityViewModel PopulateHoursModelSettings() { var queryParams = this.requestService.GetQueryParamsDecoded(Request); return(BackupDbccService.PopulateRecoverabilityIntegrityHoursModelSettings(queryParams)); }
/// <summary> /// Pulls query parameters from the request and converts them to grid and filter conditions for the Backup/DBCC View /// </summary> /// <returns></returns> private BackupDbccViewModel PopulateGapModelSettings() { var queryParams = this.requestService.GetQueryParamsDecoded(Request); return(BackupDbccService.PopulateGapModelSettings(queryParams)); }
public RecoverabilityIntegrityReport() : base(lookingGlassDependency: true) { _backupDbcc = this.GetBackupDbccService(); _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository)); }