public async Task <EmbedConfig> EmbedReport(EmbedReportRequestVM embedReportRequest) { var embedRequest = new EmbedReportRequest { Credential = new UserData { SecretId = embedReportRequest.Credential.SecretId, TenantId = embedReportRequest.Credential.TenantId, ApplicationId = embedReportRequest.Credential.ApplicationId }, EmbedRoles = embedReportRequest.EmbedRoles, ReportId = embedReportRequest.ReportId, EmbedUserName = embedReportRequest.EmbedUserName, WorkSpaceId = embedReportRequest.WorkSpaceId, EmbedReportUrl = embedReportRequest.EmbedReportUrl, ParaMeters = embedReportRequest.ParaMeters.Select(s => new EmbededReportDataSetParam { ParaType = s.ParaType, ParamName = s.ParamName, ParamValue = s.ParamValue }).ToArray() }; var result = await _powerService.ClientEmbedReport(embedRequest); var responseData = result; return(responseData); }
private async Task <bool> UpdateAndRefreshDataSet(PowerBIClient pClient, EmbedReportRequest embedReportRequest, string groupId, string reportId, string dataSetId) { try { var dataset = await pClient.Datasets.GetDatasetByIdInGroupWithHttpMessagesAsync(groupId, dataSetId); var data = await pClient.Datasets.GetParametersInGroupWithHttpMessagesAsync(groupId, dataSetId); var ParamList = new List <UpdateDatasetParameterDetails>(); ParamList.Add(new UpdateDatasetParameterDetails { Name = "ConnectionUrl", NewValue = embedReportRequest.EmbedReportUrl }); await pClient.Datasets.UpdateParametersInGroupWithHttpMessagesAsync(groupId, dataSetId, new UpdateDatasetParametersRequest { UpdateDetails = ParamList }); await pClient.Datasets.RefreshDatasetInGroupWithHttpMessagesAsync(groupId, dataSetId); await pClient.Reports.RebindReportInGroupWithHttpMessagesAsync(groupId, reportId, new RebindReportRequest { DatasetId = dataset.Body.Id }); return(true); } catch (Exception exp) { return(false); } }
public async Task <EmbedConfig> ClientEmbedReport(EmbedReportRequest embedReportRequest) { if (string.IsNullOrWhiteSpace(embedReportRequest.EmbedReportUrl)) { throw new ValidationException(PowerResource.EmbedReportUrlIsMissingError); } if (string.IsNullOrWhiteSpace(embedReportRequest.WorkSpaceId)) { throw new ValidationException(PowerResource.ValidationError_EmbedWorkSpaceMissingForClone); } if (string.IsNullOrWhiteSpace(embedReportRequest.ReportId)) { throw new ValidationException(PowerResource.ValidationError_EmbedReportsMissingError); } if (embedReportRequest.Credential == null) { throw new ValidationException(PowerResource.ValidationErrorCredentialMissingError); } return(await EmbedReport(embedReportRequest)); }
private async Task <EmbedConfig> EmbedReport(EmbedReportRequest embedReportRequest) { var config = new EmbedConfig(); UserCredential = embedReportRequest.Credential; try { var data = await AuthenticateAsync(); using (var pClient = new PowerBIClient(new Uri(POWER_BI_API_URL), PTokenCredentials)) { var groups = await pClient.Groups.GetGroupsWithHttpMessagesAsync(); var group = groups.Body.Value.FirstOrDefault(s => s.Id == embedReportRequest.WorkSpaceId); if (group == null) { throw new ValidationException(PowerResource.ValidationErrorParentGroupNotFoundError); } var reports = await pClient.Reports.GetReportsInGroupAsync(group.Id); if (!reports.Value.Any()) { config.ErrorMessage = PowerResource.EmbedReportNotFoundError; return(config); } var embeddingReport = reports.Value.FirstOrDefault(s => s.Id == embedReportRequest.ReportId); if (embeddingReport == null) { config.ErrorMessage = PowerResource.EmbedReportNotFoundError; } var dataSet = await pClient.Datasets.GetDatasetByIdInGroupAsync(group.Id, embeddingReport.DatasetId); config.IsEffectiveIdentityRequired = dataSet.IsEffectiveIdentityRequired; config.IsEffectiveIdentityRolesRequired = dataSet.IsEffectiveIdentityRolesRequired; var upDateResponse = await UpdateAndRefreshDataSet(pClient, embedReportRequest, group.Id, embeddingReport.Id, dataSet.Id); if (upDateResponse) { GenerateTokenRequest generateTokenRequestParameters; if (!string.IsNullOrWhiteSpace(embedReportRequest.EmbedUserName)) { var rls = new EffectiveIdentity(embedReportRequest.EmbedUserName, new List <string> { embeddingReport.DatasetId }); if (!string.IsNullOrWhiteSpace(embedReportRequest.EmbedRoles)) { var rolesList = new List <string>(); rolesList.AddRange(embedReportRequest.EmbedRoles.Split(',')); rls.Roles = rolesList; } generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view", identities: new List <EffectiveIdentity> { rls }); } else { generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view"); } var tokenResponse = await pClient.Reports.GenerateTokenInGroupAsync(group.Id, embeddingReport.Id, generateTokenRequestParameters); if (tokenResponse == null) { config.ErrorMessage = "Failed to generate embed token."; return(config); } config.EmbedToken = tokenResponse; config.EmbedUrl = embeddingReport.EmbedUrl; config.Id = embeddingReport.Id; return(config); } } } catch (Exception e) { Console.WriteLine(e); throw; } return(null); }