public static async Task <DashboardsViewModel> GetDashboards(string dashboardId) { var client = GetPowerBiClient(); var dashboards = (await client.Dashboards.GetDashboardsInGroupAsync(appWorkspaceId)).Value; var viewModel = new DashboardsViewModel { Dashboards = dashboards.ToList() }; if (!string.IsNullOrEmpty(dashboardId)) { Dashboard dashboard = dashboards.Where(d => d.Id == dashboardId).First(); var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view"); var token = client.Dashboards.GenerateTokenInGroupAsync(appWorkspaceId, dashboard.Id, generateTokenRequestParameters).Result; var embedConfig = new EmbedConfiguration() { EmbedToken = token, EmbedUrl = dashboard.EmbedUrl, Id = dashboard.Id }; viewModel.CurrentDashboard = new DashboardViewModel { Dashboard = dashboard, EmbedConfig = embedConfig }; } return(viewModel); }
public static async Task <ReportsViewModel> GetReports(string reportId, string datasetId) { var client = GetPowerBiClient(); var reports = (await client.Reports.GetReportsInGroupAsync(appWorkspaceId)).Value; var datasets = (await client.Datasets.GetDatasetsInGroupAsync(appWorkspaceId)).Value; var viewModel = new ReportsViewModel { Reports = reports.ToList(), Datasets = datasets.ToList() }; viewModel.ReportMode = !string.IsNullOrEmpty(reportId) ? ReportMode.ExistingReport : !string.IsNullOrEmpty(datasetId) ? ReportMode.NewReport : ReportMode.NoReport; switch (viewModel.ReportMode) { case ReportMode.ExistingReport: Report report = reports.Where(r => r.Id == reportId).First(); var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "edit"); var token = client.Reports.GenerateTokenInGroupAsync(appWorkspaceId, report.Id, generateTokenRequestParameters).Result; // create embed info for existing report var embedConfig = new EmbedConfiguration() { EmbedToken = token, EmbedUrl = report.EmbedUrl, Id = report.Id }; // add report data to view model viewModel.CurrentReport = new ReportViewModel { Report = report, EmbedConfig = embedConfig }; break; case ReportMode.NewReport: var dataset = datasets.Where(ds => ds.Id == datasetId).First(); var generateTokenRequestParametersForCreate = new GenerateTokenRequest(datasetId: dataset.Id, accessLevel: "Create"); var tokenForCreate = client.Reports.GenerateTokenForCreateInGroupAsync(appWorkspaceId, generateTokenRequestParametersForCreate).Result; // create embed info for existing report var embedConfigForCreate = new EmbedConfiguration() { DatasetId = datasetId, EmbedUrl = "https://app.powerbi.com/reportEmbed", EmbedToken = tokenForCreate }; // add report data to view model viewModel.CurrentDataset = new DatasetViewModel { dataset = dataset, EmbedConfig = embedConfigForCreate }; break; } return(viewModel); }