예제 #1
0
        /// <summary>
        /// Start backup all workspace and reports
        /// </summary>
        /// <returns></returns>
        public bool RunAll()
        {
            var workspaces = PowerBIOperation.GetGroups().Result;

            var workspaceTasks = new List <Task>();

            foreach (var workspace in workspaces)
            {
                workspaceTasks.Add(Task.Factory.StartNew(this.UploadReports, workspace));
            }

            // Wait for all the tasks to finish.
            Task.WaitAll(workspaceTasks.ToArray());

            return(true);
        }
예제 #2
0
        private void UploadReportFile(object uploadSet)
        {
            var vm   = (UploadSetViewModel)uploadSet;
            var file = PowerBIOperation.ExportReport(vm.Workspace.Id, vm.Report.Id).Result;

            if (file != null)
            {
                var datePostfix = BackupConfiguration.AddDatePostfix ? DateTime.Now.ToString("_yyyyMMdd") : "";
                var timePostfix = BackupConfiguration.AddTimePostfix ? DateTime.Now.ToString("_HHmmss") : "";

                string localPath = $"./{BackupConfiguration.Folder}/{vm.Workspace.Name}/{vm.Report.Name}/";
                string fileName  = $"{vm.Report.Name}{datePostfix}{timePostfix}.{BackupConfiguration.FileExtension}";

                var blobResult = AzureBlobOperation.UploadBlobAsync(localPath, fileName, file).Result;
            }
        }
예제 #3
0
        private void UploadReports(object group)
        {
            var workspace   = (Group)group;
            var reports     = PowerBIOperation.GetReports(workspace.Id);
            var reportTasks = new List <Task>();

            foreach (var report in reports.Result)
            {
                // Start the thread with a ParameterizedThreadStart.
                UploadSetViewModel uploadSetViewModel = new UploadSetViewModel
                {
                    Report    = report,
                    Workspace = workspace
                };

                reportTasks.Add(Task.Factory.StartNew(this.UploadReportFile, uploadSetViewModel));
            }

            // Wait for all the tasks to finish.
            Task.WaitAll(reportTasks.ToArray());
        }