Пример #1
0
        private void GenerateReportPage(XtraTabPage pTabPage)
        {
            /**
             * if from send email, we will need to use the private var -> m_TabPage.
             * so we can be able to call the public methods preview report and create pdf via the send email.
             * we create the pool handle on the tab page itself.
             *
             * Important Note: we dont need threading when send email since we only load one tab.
             *
             * will be utilized also when called from web portal.
             */
            #region Code Logic
            if (CallingEnvironment == eCallingEnvironment.BrightSales_SendEmail || m_IsWebPortalCall) {
                //m_TabPage = pTabPage.Tag as ReportPage;
                m_TabPage = pTabPage as ReportPage;
                if (m_TabPage != null) {
                    try {
                        view_configuration _eftConfig = null;
                        using (BrightPlatformEntities _efDbContext = new BrightPlatformEntities(m_DatabaseConnection)) {
                            _eftConfig = _efDbContext.view_configuration.FirstOrDefault(i => i.id == m_TabPage.ConfigData.id);
                            _efDbContext.Detach(_eftConfig);

                            int _CampaignId = (int)_efDbContext.subcampaigns.FirstOrDefault(i => i.id == _eftConfig.subcampaign_id).campaign_id;
                            int _CustomerId = (int)_efDbContext.campaigns.FirstOrDefault(i => i.id == _CampaignId).customers.id;
                            m_TabPage.CustomerId = _CustomerId;
                        }

                        m_TabPage.VerifyPoolHandler();
                        if (string.IsNullOrEmpty(_eftConfig.xml_config) || _eftConfig.xml_config.Equals("<view />"))
                            return;

                        /**
                         * [jeff 05.14.2012]: https://brightvision.jira.com/browse/PLATFORM-1381
                         * add second parameter to determine the selected display mode of the export view.
                         * if no 2nd parameter defined, default will be loaded.
                         */
                        m_TabPage.ViewType = DisplayMode;
                        Dictionary<string, string> _drConfigData = new Dictionary<string,string>();
                        if (DisplayMode == eDisplayMode.AccountsContacts_WithDialogData)
                            _drConfigData = DatabaseUtility.GetViews(m_TabPage.ConfigData.id, ExportView.eExportViewDisplayMode.Default, m_DatabaseConnection, AccountId);

                        else if (DisplayMode == eDisplayMode.AccountsContacts_WithCallAttempts)
                            _drConfigData = DatabaseUtility.GetViews(m_TabPage.ConfigData.id, ExportView.eExportViewDisplayMode.AccountsAndContactsHavingSubCampaignCallAttemps, m_DatabaseConnection, AccountId);

                        if (_drConfigData == null)
                            throw new Exception("No data was found.");

                        string _XmlData = string.Empty;
                        var datasource = this.GetXmlData(_eftConfig.xml_config, _drConfigData, ref _XmlData);
                        System.Threading.Thread.Sleep(1500);

                        if (m_TabPage != null) {
                            m_TabPage.ViewType = DisplayMode;
                            m_TabPage.DataSource = datasource;
                            m_TabPage.XmlConfig = _eftConfig.xml_config;
                            m_TabPage.XmlConfigData = _XmlData;

                            if (m_IsWebPortalCall) {
                                if (!string.IsNullOrEmpty(m_GridFilterString))
                                    m_TabPage.GridFilterString = m_GridFilterString;
                                if (!string.IsNullOrEmpty(m_GridSortInfo))
                                    m_TabPage.GridSortInfo = m_GridSortInfo;
                                if (!string.IsNullOrEmpty(m_GridColumnsInfo))
                                    m_TabPage.GridColumnsInfo = m_GridColumnsInfo;
                            }
                        }

                        if (datasource != null && datasource.Rows.Count > 0) {
                            m_TabPage.ViewConfigName = _eftConfig.name;
                            m_TabPage.ViewConfigId = _eftConfig.id;
                            m_TabPage.SubCampaignId = _eftConfig.subcampaign_id;
                            m_TabPage.CampaignInfo = CampaignInfo;
                        }
                    }
                    catch (Exception e) {
                        if (m_IsWebPortalCall)
                            throw e;

                        NotificationDialog.Error("Reports", string.Format("{0}{1}{2}", e.Message, Environment.NewLine, e.InnerException.Message));
                    }

                    if (OnReportPageCompleted != null)
                        OnReportPageCompleted(this, new EventArgs());
                }
            }
            #endregion

            /**
             * if not send email, just use method level report page var, so we can be able to display
             * multiple tab pages on a tab control calling this module.
             * we create the pool handle right on this method.
             */
            #region Code Logic
            else {
                ReportPage _TabPage = pTabPage.Tag as ReportPage;
                if (_TabPage != null) {
                    Action _action = delegate() {
                        try {
                            view_configuration _eftConfig = null;
                            using (BrightPlatformEntities _efDbContext = new BrightPlatformEntities(m_DatabaseConnection)) {
                                _eftConfig = _efDbContext.view_configuration.FirstOrDefault(i => i.id == _TabPage.ConfigData.id);
                                _efDbContext.Detach(_eftConfig);

                                int _CampaignId = (int)_efDbContext.subcampaigns.FirstOrDefault(i => i.id == _eftConfig.subcampaign_id).campaign_id;
                                int _CustomerId = (int)_efDbContext.campaigns.FirstOrDefault(i => i.id == _CampaignId).customers.id;
                                _TabPage.CustomerId = _CustomerId;
                            }

                            if (!IsHandleCreated)
                                this.CreateHandle();

                            _TabPage.Invoke(new MethodInvoker(delegate {
                                _TabPage.SetButtonState(false);
                                _TabPage.InitRecordCount();
                            }));

                            if (string.IsNullOrEmpty(_eftConfig.xml_config) || _eftConfig.xml_config.Equals("<view />")) {
                                _TabPage.Invoke(new MethodInvoker(delegate {
                                    _TabPage.HideLoadingInfo();
                                }));
                                return;
                            }

                            /**
                                * [jeff 05.14.2012]: https://brightvision.jira.com/browse/PLATFORM-1381
                                * add second parameter to determine the selected display mode of the export view.
                                * if no 2nd parameter defined, default will be loaded.
                                */
                            _TabPage.ViewType = DisplayMode;
                            Dictionary<string, string> _drConfigData = new Dictionary<string, string>();
                            if (DisplayMode == eDisplayMode.AccountsContacts_WithDialogData)
                                _drConfigData = DatabaseUtility.GetViews(_TabPage.ConfigData.id, ExportView.eExportViewDisplayMode.Default);

                            else if (DisplayMode == eDisplayMode.AccountsContacts_WithCallAttempts)
                                _drConfigData = DatabaseUtility.GetViews(_TabPage.ConfigData.id, ExportView.eExportViewDisplayMode.AccountsAndContactsHavingSubCampaignCallAttemps);

                            if (_drConfigData == null)
                                throw new Exception("No data was found.");

                            string _XmlData = string.Empty;
                            var datasource = this.GetXmlData(_eftConfig.xml_config, _drConfigData, ref _XmlData);
                            System.Threading.Thread.Sleep(1500);

                            if (_TabPage != null) {
                                _TabPage.ViewType = DisplayMode;
                                _TabPage.DataSource = datasource;
                                _TabPage.XmlConfig = _eftConfig.xml_config;
                                _TabPage.XmlConfigData = _XmlData;

                                if (m_IsWebPortalCall) {
                                    if (!string.IsNullOrEmpty(m_GridFilterString))
                                        _TabPage.GridFilterString = m_GridFilterString;
                                    if (!string.IsNullOrEmpty(m_GridSortInfo))
                                        _TabPage.GridSortInfo = m_GridSortInfo;
                                    if (!string.IsNullOrEmpty(m_GridColumnsInfo))
                                        _TabPage.GridColumnsInfo = m_GridColumnsInfo;
                                }
                            }

                            if (datasource != null && datasource.Rows.Count > 0) {
                                _TabPage.ViewConfigName = _eftConfig.name;
                                _TabPage.ViewConfigId = _eftConfig.id;
                                _TabPage.SubCampaignId = _eftConfig.subcampaign_id;

                                _TabPage.Invoke(new MethodInvoker(delegate {
                                    _TabPage.SetButtonState(true);
                                    _TabPage.SetRecordCount(datasource.Rows.Count);
                                }));
                            }
                        }
                        catch (Exception e) {
                            _TabPage.Invoke(new MethodInvoker(delegate {
                                NotificationDialog.Error("Reports", string.Format("{0}{1}", e.Message, Environment.NewLine));
                            }));
                        }
                    };

                    bw = new BackgroundWorker();
                    bw.DoWork += (sender, e) => { _action(); };
                    bw.RunWorkerCompleted += (sender, e) => { _TabPage.ImageIndex = -1; };
                    bw.RunWorkerAsync();
                }
            }
            #endregion
        }