private void UpdateAssessedInstancesDataset()

in src/Assessment/Parser/AzureSQLAssessedInstancesParser.cs [135:210]


        private void UpdateAssessedInstancesDataset(Dictionary<string, AzureSQLInstanceDataset> AzureSQLInstancesData, string key, AzureSQLAssessedInstanceValue value, AssessmentInformation assessmentInfo, string currencySymbol)
        {
            if (AzureSQLInstancesData.ContainsKey(key))
                return;

            AzureSQLInstancesData.Add(key, new AzureSQLInstanceDataset());

            AzureSQLInstancesData[key].MemoryInUseMB = value.Properties.MemoryInUseInMB;
            AzureSQLInstancesData[key].RecommendedAzureSqlTargetType = value.Properties.RecommendedAzureSqlTargetType;
            AzureSQLInstancesData[key].RecommendedSuitability = value.Properties.RecommendedSuitability;

            if (assessmentInfo.AssessmentName.Contains("Dev"))
                AzureSQLInstancesData[key].Environment = "Dev";
            else if (assessmentInfo.AssessmentName.Contains("Prod"))
                AzureSQLInstancesData[key].Environment = "Prod";

            AzureSQLInstancesData[key].AzureSQLMISkuServiceTier = value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku?.AzureSqlServiceTier;
            AzureSQLInstancesData[key].AzureSQLMISkuComputeTier = value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku?.AzureSqlComputeTier;
            AzureSQLInstancesData[key].AzureSQLMISkuHardwareGeneration = value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku?.AzureSqlHardwareGeneration;
            AzureSQLInstancesData[key].AzureSQLMISkuStorageMaxSizeInMB = value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku == null ? 0.0 : value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku.StorageMaxSizeInMB;
            AzureSQLInstancesData[key].AzureSQLMISkuPredictedDataSizeInMB = value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku == null ? 0.0 : value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku.PredictedDataSizeInMB;
            AzureSQLInstancesData[key].AzureSQLMISkuPredictedLogSizeInMB = value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku == null ? 0.0 : value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku.PredictedLogSizeInMB;
            AzureSQLInstancesData[key].AzureSQLMISkuCores = value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku == null ? 0 : value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku.Cores;
            AzureSQLInstancesData[key].AzureSQLMITargetType = value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku == null ? 0 : value.Properties.AzureSqlMISuitabilityDetails.AzureSqlSku.AzureSqlTargetType;
            AzureSQLInstancesData[key].AzureSQLMIMonthlyStorageCost = value.Properties.AzureSqlMISuitabilityDetails.MonthlyStorageCost;
            AzureSQLInstancesData[key].AzureSQLMIMonthlyLicenseCost = value.Properties.AzureSqlMISuitabilityDetails.MonthlyLicenseCost;
            AzureSQLInstancesData[key].AzureSQLMIMigrationTargetPlatform = value.Properties.AzureSqlMISuitabilityDetails.MigrationTargetPlatform;
            AzureSQLInstancesData[key].AzureSQLMISuitability = value.Properties.AzureSqlMISuitabilityDetails.Suitability;
            AzureSQLInstancesData[key].AzureSQLMIMonthlySecurityCost = UtilityFunctions.GetSecurityCost(value.Properties.AzureSqlMISuitabilityDetails.CostComponents);
            AzureSQLInstancesData[key].AzureSQLMIMigrationIssues = GetMigrationIssueList(value.Properties.AzureSqlMISuitabilityDetails.MigrationIssues);

            AzureSQLInstancesData[key].AzureSQLVMFamily = value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku?.VirtualMachineSize?.AzureVmFamily;
            AzureSQLInstancesData[key].AzureSQLVMCores = value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku == null ? 0 : value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku.VirtualMachineSize.Cores;
            AzureSQLInstancesData[key].AzureSQLVMSkuName = value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku?.VirtualMachineSize?.AzureSkuName;
            AzureSQLInstancesData[key].AzureSQLVMAvailableCores = value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku == null ? 0 : value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku.VirtualMachineSize.AvailableCores;
            AzureSQLInstancesData[key].AzureSQLVMMaxNetworkInterfaces = value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku == null ? 0 : value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku.VirtualMachineSize.MaxNetworkInterfaces;
            AzureSQLInstancesData[key].AzureSQLVMDataDisks = value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku == null ? new List<AssessedDisk>() : ConvertDataAndLogDiskToAssessedDiskList(value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku.DataDiskSizes);
            AzureSQLInstancesData[key].AzureSQLVMLogDisks = value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku == null ? new List<AssessedDisk>() : ConvertDataAndLogDiskToAssessedDiskList(value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku.LogDiskSizes);
            AzureSQLInstancesData[key].AzureSQLVMTargetType = value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku == null ? 0 : value.Properties.AzureSqlVMSuitabilityDetails.AzureSqlSku.AzureSqlTargetType;
            AzureSQLInstancesData[key].AzureSQLVMMonthlyLicenseCost = value.Properties.AzureSqlVMSuitabilityDetails.MonthlyLicenseCost;
            AzureSQLInstancesData[key].AzureSQLVMMonthlyStorageCost = value.Properties.AzureSqlVMSuitabilityDetails.MonthlyStorageCost;
            AzureSQLInstancesData[key].AzureSQLVMMigrationTargetPlatform = value.Properties.AzureSqlVMSuitabilityDetails.MigrationTargetPlatform;
            AzureSQLInstancesData[key].AzureSQLVMMonthlySecurityCost = UtilityFunctions.GetSecurityCost(value.Properties.AzureSqlVMSuitabilityDetails.CostComponents);
            AzureSQLInstancesData[key].AzureSQLVMSuitability = value.Properties.AzureSqlVMSuitabilityDetails.Suitability;
            AzureSQLInstancesData[key].AzureSQLVMMigrationIssues = GetMigrationIssueList(value.Properties.AzureSqlVMSuitabilityDetails.MigrationIssues);

            AzureSQLInstancesData[key].MachineArmId = value.Properties.MachineArmId?.ToLower();
            AzureSQLInstancesData[key].MachineName = value.Properties.MachineName;
            AzureSQLInstancesData[key].InstanceName = value.Properties.InstanceName;
            AzureSQLInstancesData[key].SQLInstanceSDSArmId = value.Properties.SqlInstanceSDSArmId?.ToLower();
            AzureSQLInstancesData[key].SQLEdition = value.Properties.SqlEdition;
            AzureSQLInstancesData[key].SQLVersion = value.Properties.SqlVersion;
            AzureSQLInstancesData[key].SupportStatus = value.Properties.ProductSupportStatus == null ? new EnumDescriptionHelper().GetEnumDescription(SupportabilityStatus.Unknown) : new EnumDescriptionHelper().GetEnumDescription(value.Properties.ProductSupportStatus.SupportStatus);
            AzureSQLInstancesData[key].NumberOfCoresAllocated = value.Properties.NumberOfCoresAllocated;
            AzureSQLInstancesData[key].PercentageCoresUtilization = value.Properties.PercentageCoresUtilization;
            AzureSQLInstancesData[key].LogicalDisks = GetAssessedLogicalDiskList(value.Properties.LogicalDisks);
            AzureSQLInstancesData[key].ConfidenceRatingInPercentage = value.Properties.ConfidenceRatingInPercentage;
            AzureSQLInstancesData[key].CreatedTimestamp = value.Properties.CreatedTimestamp;

            AzureSQLInstancesData[key].DatabaseSummaryNumberOfUserDatabases = value.Properties.DatabaseSummary == null ? 0 : value.Properties.DatabaseSummary.NumberOfUserDatabases;
            AzureSQLInstancesData[key].DatabaseSummaryTotalDiscoveredUserDatabases = value.Properties.DatabaseSummary == null ? 0 : value.Properties.DatabaseSummary.TotalDiscoveredUserDatabases;
            AzureSQLInstancesData[key].DatabaseSummaryTotalDatabaseSizeInMB = value.Properties.DatabaseSummary == null ? 0 : value.Properties.DatabaseSummary.TotalDatabaseSizeInMB;
            AzureSQLInstancesData[key].DatabaseSumaryLargestDatabaseSizeInMB = value.Properties.DatabaseSummary == null ? 0 : value.Properties.DatabaseSummary.LargestDatabaseSizeInMB;

            AzureSQLInstancesData[key].GroupName = assessmentInfo.GroupName;

            if (AzureSQLInstancesData[key].Environment.Equals("Dev"))
            {
                AzureSQLInstancesData[key].MonthlyAzureBackupCostEstimate = 0;
                AzureSQLInstancesData[key].MonthlyAzureSiteRecoveryCostEstimate = 0;
                return;
            }

            AzureSQLInstancesData[key].MonthlyAzureSiteRecoveryCostEstimate = UtilityFunctions.GetAzureSiteRecoveryMonthlyCostEstimate(currencySymbol);
            AzureSQLInstancesData[key].MonthlyAzureBackupCostEstimate = UtilityFunctions.GetAzureBackupMonthlyCostEstimate(AzureSQLInstancesData[key].LogicalDisks, currencySymbol);
        }