/// <summary>
        /// Exports report
        /// </summary>
        /// <returns></returns>
        private async Task ExportReport()
        {
            ReportProjectItem reportProjItem = Project.Current.GetItems <ReportProjectItem>().FirstOrDefault(item => item.Name.Equals(ReportName));
            Report            report         = null;
            await QueuedTask.Run(() => report = reportProjItem?.GetReport());

            if (report == null)
            {
                MessageBox.Show($"{ReportName} report not found.");
                return;
            }

            //Define Export Options
            var exportOptions = new ReportExportOptions
            {
                ExportPageOption              = ExportPageOptions.ExportAllPages,
                TotalPageNumberOverride       = 12,
                StartingPageNumberLabelOffset = 0
            };
            //Create PDF format with appropriate settings
            PDFFormat pdfFormat = new PDFFormat();

            pdfFormat.Resolution     = 300;
            pdfFormat.OutputFileName = Path.Combine(Project.Current.HomeFolderPath, report.Name);
            await ExportAReportToPdf(report, pdfFormat, exportOptions, IsUseSelection);

            MessageBox.Show($"{ReportName} report exported to {pdfFormat.OutputFileName}");
        }
        public static Report GetReport(string reportName)
        {
            #region Get a specific report
            ReportProjectItem reportProjItem = Project.Current.GetItems <ReportProjectItem>().FirstOrDefault(item => item.Name.Equals(reportName));
            return(reportProjItem?.GetReport());

            #endregion
        }
        public static void ModifyReport(string reportName, FeatureLayer featureLayer)
        {
            var report = GetReport(reportName);

            #region Rename Report
            //Note: Call within QueuedTask.Run()
            ReportProjectItem reportProjItem = Project.Current.GetItems <ReportProjectItem>().FirstOrDefault(item => item.Name.Equals(reportName));
            reportProjItem.GetReport().SetName("RenamedReport");
            #endregion

            #region Modify the Report datasource
            //Note: Call within QueuedTask.Run()
            //Remove Groups
            // The fields in the datasource used for the report
            var listFields = new List <string> {
                "STATE_NAME"
            };
            report.RemoveGroups(listFields);

            //Add Group
            report.AddGroup("STATE_NAME", true, true, "");

            //Modify the Definition Query
            var defQuery = "STATE_NAME LIKE 'C%'";
            report.SetDefinitionQuery(defQuery);
            #endregion


            #region Modify the report Page
            //Note: Call within QueuedTask.Run()
            var cimReportPage = new CIMPage
            {
                Height          = 12,
                StretchElements = false,
                Width           = 6.5,
                ShowRulers      = true,
                ShowGuides      = true,
                Margin          = new CIMMargin {
                    Bottom = 1, Left = 1, Right = 1, Top = 1
                },
                Units = LinearUnit.Inches
            };
            report.SetPage(cimReportPage);
            //Change only the report's page height
            report.SetPageHeight(12);
            #endregion
        }
        public static Task <bool> DeleteReport(string reportName)
        {
            #region Delete a report
            //Note: Call within QueuedTask.Run()
            //Reference a reportitem in a project by name
            ReportProjectItem reportItem = Project.Current.GetItems <ReportProjectItem>().FirstOrDefault(item => item.Name.Equals(reportName));

            //Check for report item
            if (reportItem == null)
            {
                return(Task.FromResult <bool>(false));
            }

            //Delete the report from the project
            return(Task.FromResult <bool>(Project.Current.RemoveItem(reportItem)));

            #endregion
        }
        public static async void GetReport(string reportName)
        {
            #region Get a specific report
            ReportProjectItem reportProjItem = Project.Current.GetItems <ReportProjectItem>().FirstOrDefault(item => item.Name.Equals(reportName));
            Report            report         = reportProjItem?.GetReport();
            #endregion
            #region Open a Report project item in a new view
            //Open a report project item in a new view.
            //A report project item may exist but it may not be open in a view.

            //Reference a report project item by name
            ReportProjectItem reportPrjItem = Project.Current.GetItems <ReportProjectItem>().FirstOrDefault(item => item.Name.Equals("MyReport"));

            //Get the report associated with the report project item
            Report reportToOpen = await QueuedTask.Run(() => reportPrjItem.GetReport());

            //Create the new pane
            IReportPane iNewReporttPane = await ProApp.Panes.CreateReportPaneAsync(reportToOpen); //GUI thread

            #endregion
        }