示例#1
0
        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);
        }
示例#2
0
        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);
        }