+
+ ${LocalizedStrings.API_VERSION}: ${this._assessmentResult.apiVersion}
+ ${LocalizedStrings.DEFAULT_RULESET_VERSION}: ${this._assessmentResult.items[0].rulesetVersion}
+
+
+ ${LocalizedStrings.SECTION_TITLE_SQL_SERVER}: ${serverInfo.serverEdition} ${serverInfo.serverVersion}
+ ${LocalizedStrings.SERVER_INSTANCENAME}: ${this.instanceName(serverInfo)}
+
+
+ `;
+ }
+
+ private buildResultsSection(): string {
+ let resultByTarget: { [targetType: number]: { [targetName: string]: azdata.SqlAssessmentResultItem[] } } = [];
+ this._assessmentResult.items.forEach(resultItem => {
+ if (resultByTarget[resultItem.targetType] === undefined) {
+ resultByTarget[resultItem.targetType] = Object.create([]);
+ }
+ if (resultByTarget[resultItem.targetType][resultItem.targetName] === undefined) {
+ resultByTarget[resultItem.targetType][resultItem.targetName] = [];
+ }
+ resultByTarget[resultItem.targetType][resultItem.targetName].push(resultItem);
+ });
+
+ let result = '';
+ if (resultByTarget[azdata.sqlAssessment.SqlAssessmentTargetType.Server] !== undefined) {
+ Object.keys(resultByTarget[azdata.sqlAssessment.SqlAssessmentTargetType.Server]).forEach(instanceName => {
+ result += this.buildTargetAssessmentSection(resultByTarget[azdata.sqlAssessment.SqlAssessmentTargetType.Server][instanceName]);
+ });
+ }
+ if (resultByTarget[azdata.sqlAssessment.SqlAssessmentTargetType.Database] !== undefined) {
+ Object.keys(resultByTarget[azdata.sqlAssessment.SqlAssessmentTargetType.Database]).forEach(dbName => {
+ result += this.buildTargetAssessmentSection(resultByTarget[azdata.sqlAssessment.SqlAssessmentTargetType.Database][dbName]);
+ });
+
+ }
+
+ return result;
+ }
+
+ private buildTargetAssessmentSection(targetResults: azdata.SqlAssessmentResultItem[]): string {
+ let content = `
+
+
${targetResults[0].targetType === azdata.sqlAssessment.SqlAssessmentTargetType.Server ? LocalizedStrings.RESULTS_FOR_INSTANCE : LocalizedStrings.RESULTS_FOR_DATABASE}: ${targetResults[0].targetName}
+ ${this.buildSeveritySection(LocalizedStrings.REPORT_ERROR, targetResults.filter(item => item.level === 'Error'))}
+ ${this.buildSeveritySection(LocalizedStrings.REPORT_WARNING, targetResults.filter(item => item.level === 'Warning'))}
+ ${this.buildSeveritySection(LocalizedStrings.REPORT_INFO, targetResults.filter(item => item.level === 'Information'))}
+
`;
+ return content;
+ }
+ private buildSeveritySection(severityName: string, items: azdata.SqlAssessmentResultItem[]) {
+ if (items.length === 0) {
+ return '';
+ }
+
+ return `
+