Пример #1
0
        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);
        }
Пример #3
0
        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
            });
        }
Пример #4
0
        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));
        }
Пример #5
0
        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);
        }
Пример #7
0
        /// <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());
            }
        }
Пример #9
0
        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());
            }
        }
Пример #10
0
        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));
        }
Пример #14
0
        /// <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));
        }
Пример #15
0
        /// <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));
        }
Пример #16
0
 public RecoverabilityIntegrityReport()
     : base(lookingGlassDependency: true)
 {
     _backupDbcc       = this.GetBackupDbccService();
     _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository));
 }