예제 #1
0
        public static DIC_MyFirstDictionaryFilter CreateDefault(MainPageUrlBuilder url, DBDataContext db, bool showHistory, List <MainPageUrlBuilder.FilterParameter> controlFilterParameters)
        {
            var filter = new DIC_MyFirstDictionaryFilter();
            var newUrl = url != null?url.Clone() : new MainPageUrlBuilder();

            newUrl.ShowHistory = showHistory;
            newUrl.SelectMode  = "none";
            newUrl.ViewMode    = "none";
            foreach (var item in controlFilterParameters)
            {
                newUrl.ControlFilterParameters.Add(item.Clone());
            }
            filter.SetUrl(newUrl);
            filter.SetDB(db);
            filter.ShowHistory = showHistory;
            return(filter);
        }
        private static void Export(HttpContext context, string queryParameters, IDataSourceView4 dataSourceView, IExportJournal journal, ICollection <string> selectedValues)
        {
            if (!dataSourceView.CheckPermit() || !dataSourceView.CheckPermitExport())
            {
                context.Response.StatusCode = 404;
                context.Response.End();
                return;
            }

            var data = selectedValues != null && selectedValues.Count > 0
                           ? dataSourceView.GetSelectIRowByID(queryParameters, selectedValues.ToArray())
                           : dataSourceView.GetSelectIRow(queryParameters);
            var log = InitializerSection.GetSection().LogMonitor;

            log.Init();
            var exportData = data.ToList();

            journal.Url = new MainPageUrlBuilder("/MainPage.aspx/data/" + journal.TableName + "Journal" + queryParameters);
            journal.PrepareExportData(exportData);
            var args = new JournalExportEventArgs
            {
                CheckPermit  = true,
                Columns      = GridHtmlGenerator.GetColumnsForExport(journal.GetColumns()),
                FilterValues = journal.GetFilterValues(),
                Format       = "Excel",
                Header       = journal.TableHeader,
                LogMonitor   = log,
                Control      = new AccessControl(dataSourceView.CheckPermitExport),
                Data         = exportData,
            };
            var url = new MainPageUrlBuilder
            {
                UserControl   = journal.TableName + "Journal",
                IsDataControl = true,
                ShowHistory   = true,
            };

            args.ViewJournalUrl = new StringBuilder();
            url.CreateUrl(args.ViewJournalUrl);
            args.ViewJournalUrl.Append("?id.EqualsCollection=");

            var stream = WebSpecificInstances.GetExcelExporter().GetExcelStream(args);

            PageHelper.DownloadFile(stream, journal.TableHeader + "." + args.FileNameExtention, context.Response);
        }
예제 #3
0
 public static object Execute(Page page, MainPageUrlBuilder url, string functionClassName)
 {
     if (functionClassName != null)
     {
         var functionClassType = BuildManager.GetType(functionClassName, false, true);
         if (functionClassType != null)
         {
             var function = (QueryBuilder)Activator.CreateInstance(functionClassType);
             if (page == null)
             {
                 using (page = new Page())
                     return(function.Execute(url, page));
             }
             return(function.Execute(url, page));
         }
     }
     return(null);
 }
예제 #4
0
        /// <summary>
        /// Получить вырожение для фильтрации данных по текущей ссылке.
        /// </summary>
        /// <param name="url">Текущая ссылка.</param>
        /// <param name="exp">Вырожение предоставляющее объект строки, типа таблицы навигатора.</param>
        /// <param name="referenceKey">Ключ ссылки в строке браузера.</param>
        /// <returns>Возвращет вырожение в виде результата boolean, если нет необходимости в фильтрации, то возвращается null.</returns>
        public virtual Expression FilterData(MainPageUrlBuilder url, Expression exp, string referenceKey)
        {
            var value = GetKeyValue(url.QueryParameters, referenceKey, false);

            if (string.IsNullOrEmpty(value))
            {
                return(null);
            }
            var key = (long)DataSourceViewGetName.GetKey(value);

            if (QueryParameters == null)
            {
                return(Expression.Equal(Expression.Property(exp, "id"), Expression.Constant(key)));
            }
            var parameterKey = string.IsNullOrEmpty(referenceKey) ? TableNameKey : referenceKey + ".id.Equals";

            return(Expression.Equal(Expression.Property(exp, "id"), QueryParameters.GetExpression(parameterKey, key)));
        }
예제 #5
0
        protected bool SetUserControl(MainPageUrlBuilder urlBuilder)
        {
            if (string.IsNullOrEmpty(TableName))
            {
                return(false);
            }
            urlBuilder.IsRead         = false;
            urlBuilder.IsNew          = false;
            urlBuilder.IsSelect       = false;
            urlBuilder.IsFilterWindow = false;
            switch (DefaultDestination)
            {
            case MenuDefaultDestination.Journal:
                urlBuilder.UserControl = TableName + "Journal";
                break;

            case MenuDefaultDestination.Read:
                if (Menu.BaseNavigatorControl.BaseNavigatorValues.ContainsKey(TableType))
                {
                    urlBuilder.UserControl = TableName + "Edit";
                    urlBuilder.IsRead      = true;
                }
                else
                {
                    urlBuilder.UserControl = TableName + "Journal";
                }
                break;

            case MenuDefaultDestination.Edit:
                if (Menu.BaseNavigatorControl.BaseNavigatorValues.ContainsKey(TableType))
                {
                    urlBuilder.UserControl = TableName + "Edit";
                }
                else
                {
                    urlBuilder.UserControl = TableName + "Journal";
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return(true);
        }
예제 #6
0
        public static void ChangeUrlToParent(MainPageUrlBuilder url, string referenceName, string toTableName)
        {
            referenceName += ".";
            var changeKeys = url.QueryParameters.Where(r => r.Key.StartsWith(referenceName)).ToList();

            foreach (var parameter in changeKeys)
            {
                url.QueryParameters.Remove(parameter.Key);
                var newKey = parameter.Key.Remove(0, referenceName.Length);
                if (newKey.Contains("."))
                {
                    url.QueryParameters[newKey] = parameter.Value;
                }
                else
                {
                    url.QueryParameters["ref" + toTableName] = parameter.Value;
                }
            }
        }
예제 #7
0
        /// <summary>
        /// Изменить наименования ссылок на родителей, режется по переданной ссылке.
        /// </summary>
        /// <param name="urlClone"></param>
        /// <param name="referenceKey"></param>
        /// <returns></returns>
        protected internal IDictionary <string, string> MoveQueryParametersToUp(MainPageUrlBuilder urlClone, string referenceKey)
        {
            var oldParameters = urlClone.QueryParameters;
            var newParams     = new Dictionary <string, string>(oldParameters.Count);

            if (referenceKey == "")
            {
                foreach (var param in oldParameters)
                {
                    newParams[param.Key] = param.Value;
                }
            }
            else
            {
                var thisKey = referenceKey + ".id";
                referenceKey += ".";
                var index = referenceKey.Length;
                foreach (var param in oldParameters)
                {
                    if (thisKey.Equals(param.Key, StringComparison.OrdinalIgnoreCase))
                    {
                        newParams[TableNameKey] = param.Value;
                    }
                    else if (param.Key.StartsWith(referenceKey))
                    {
                        newParams[param.Key.Substring(index)] = param.Value;
                    }
                    else if (param.Key.Equals(TableNameKey))
                    {
                        if (!newParams.ContainsKey(param.Key) && !string.IsNullOrEmpty(param.Value))
                        {
                            newParams[param.Key] = param.Value;
                        }
                    }
                    else if (!param.Key.Contains('.'))
                    {
                        newParams[param.Key] = param.Value;
                    }
                }
            }
            urlClone.QueryParameters = newParams;
            return(oldParameters);
        }
        public void RaisePostBackEvent(string eventArgument)
        {
            string component = GlobalObject.decodeURIComponent(eventArgument);

            Url.SetFilter(GetFilterTableName(), component);
            if (Url != MainPageUrlBuilder.Current)
            {
                MainPageUrlBuilder.Current.SetFilter(component, GetFilterTableName());
            }
            MainPageUrlBuilder.ChangedUrl();
            filterValues = MainPageUrlBuilder.GetFilterItemsDicByFilterContent(component);
            OnFilterApply(EventArgs.Empty);
            var updatePanel = ControlHelper.FindControl <UpdatePanel>(this);

            if (updatePanel != null)
            {
                updatePanel.Update();
            }
        }
예제 #9
0
        /// <summary>
        /// Изменяем урл приводя его к урлу родительского журнала.
        /// </summary>
        /// <param name="urlBuilder"></param>
        /// <param name="menuItem"></param>
        private static void MoveReferenceToParent(MainPageUrlBuilder urlBuilder, BaseMenuItem menuItem, BaseMenuItem parentItem)
        {
            if (string.IsNullOrEmpty(menuItem.ReferenceName))
            {
                return;
            }
            var keys = urlBuilder.QueryParameters.Keys.Where(r => r.EndsWith(".id")).ToList();

            if (keys.Count == 0)
            {
                return;
            }

            var newValues = new Dictionary <string, string>();

            foreach (var key in keys)
            {
                if (key == menuItem.ReferenceName + ".id")
                {
                    var value = urlBuilder.QueryParameters[key];
                    urlBuilder.QueryParameters.Remove(key);
                    urlBuilder.QueryParameters["ref" + parentItem.TableName] = value;
                }
                else if (key.StartsWith(menuItem.ReferenceName))
                {
                    var value = urlBuilder.QueryParameters[key];
                    urlBuilder.QueryParameters.Remove(key);
                    var newKey = key.Substring(menuItem.ReferenceName.Length + 1);
                    newValues[newKey] = value;
                }
                else
                {
                    urlBuilder.QueryParameters.Remove(key);
                }
                foreach (var newValue in newValues)
                {
                    urlBuilder.QueryParameters[newValue.Key] = newValue.Value;
                }
            }
        }
예제 #10
0
 protected string GetLookUrl(MainPageUrlBuilder urlClone)
 {
     urlClone.UserControl = TableName + "Edit";
     urlClone.IsRead      = true;
     return(urlClone.CreateUrl());
 }
예제 #11
0
        /// <summary>
        /// Получить ссылки на родительскую таблицу.
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="url"></param>
        /// <param name="urlClone"></param>
        /// <param name="referenceKey"></param>
        /// <param name="navigatorControl"></param>
        /// <returns></returns>
        public bool GetNavigatorToParent(HtmlTextWriter writer, MainPageUrlBuilder url, MainPageUrlBuilder urlClone, string referenceKey, BaseNavigatorControl navigatorControl)
        {
            var args = GetVisibleArgs(url.QueryParameters, referenceKey, navigatorControl.BaseNavigatorValues);

            if (!args.VisibleLookButton && !args.VisibleLookButton)
            {
                return(false);
            }

            var value = GetKeyValue(url.QueryParameters, referenceKey, false);
            IDictionary <string, string> oldParameters;

            if (value != null && !string.IsNullOrEmpty(CustomNavigatorUserControl))
            {
                var control = navigatorControl.NavigatorCustomControls[this];
                control.SetValue(value);
                control.BaseNavigatorValues = navigatorControl.BaseNavigatorValues;

                oldParameters            = MoveQueryParametersToUp(urlClone, referenceKey);
                control.LookUrl          = GetLookUrl(urlClone);
                control.JournalUrl       = GetJournalUrl(urlClone);
                urlClone.QueryParameters = oldParameters;

                //navigatorControl.AddControl(control);
                control.Initialize();
                control.RenderControl(writer);
                return(true);
            }
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "font13");
            writer.RenderBeginTag(HtmlTextWriterTag.Span);
            writer.RenderBeginTag(HtmlTextWriterTag.B);
            writer.Write(HttpUtility.HtmlAttributeEncode(GetHeaderToParent(value)));

            string name;

            if (!string.IsNullOrEmpty(value) && (name = GetRowName(value)) != null)
            {
                writer.Write(": ");
                writer.RenderEndTag(); //B
                if (DisableHtmlAttributeEncode)
                {
                    writer.Write(name);
                }
                else
                {
                    writer.Write(HttpUtility.HtmlAttributeEncode(name));
                }
            }
            else
            {
                writer.RenderEndTag(); //B
                args.VisibleLookButton = false;
            }
            writer.Write("&nbsp;<b>&gt;</b>");
            oldParameters = MoveQueryParametersToUp(urlClone, referenceKey);
            if (args.VisibleLookButton)
            {
                writer.Write("&nbsp;");
                writer.AddAttribute(HtmlTextWriterAttribute.Href, GetLookUrl(urlClone));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write(Resources.SView);
                writer.RenderEndTag();

                if (args.VisibleToJournalButton)
                {
                    writer.Write("&nbsp;-");
                }
            }
            if (args.VisibleToJournalButton)
            {
                writer.Write("&nbsp;");
                writer.AddAttribute(HtmlTextWriterAttribute.Href, GetJournalUrl(urlClone));
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write(Resources.SToJournal);
                writer.RenderEndTag();
            }
            urlClone.QueryParameters = oldParameters;
            writer.RenderEndTag(); //span
            return(true);
        }
예제 #12
0
        public void SetToJournal(BaseJournalUserControl journal, bool skipFilters, bool skipNavigators)
        {
            journal.BaseJournal.GroupColumns.Clear();
            journal.BaseJournal.GroupColumns.AddRange(Grouping);
            journal.StorageValues = StorageValues;
            journal.ValuesLoaded  = true;
            if (!string.IsNullOrEmpty(PageUrl))
            {
                if (!skipNavigators && !skipFilters)
                {
                    journal.Url = new MainPageUrlBuilder(PageUrl);
                    journal.Url.ReportPluginName = ReportPluginName;
                    journal.Url.CheckUseSession();
                    if (journal.Url.UserControl.Equals(MainPageUrlBuilder.Current.UserControl))
                    {
                        MainPageUrlBuilder.Current = journal.Url;
                        MainPageUrlBuilder.ChangedUrl();
                    }
                }
                else
                {
                    var url  = journal.Url;
                    var lUrl = new MainPageUrlBuilder(PageUrl);
                    if (!skipNavigators)
                    {
                        foreach (var key in url.QueryParameters.Keys.ToList())
                        {
                            if (key.Contains("."))
                            {
                                url.QueryParameters.Remove(key);
                            }
                        }
                        foreach (var queryParameter in lUrl.QueryParameters)
                        {
                            if (queryParameter.Key.Contains("."))
                            {
                                url.QueryParameters[queryParameter.Key] = queryParameter.Value;
                            }
                        }
                    }
                    if (!skipFilters)
                    {
                        url.SetFilter(journal.BaseFilter.TableName, lUrl.GetFilterItemsDic(journal.BaseFilter.TableName));

                        /*foreach (var key in url.QueryParameters.Keys.ToList())
                         * {
                         *  if (!key.Contains(".")) url.QueryParameters.Remove(key);
                         * }
                         * foreach (var queryParameter in lUrl.QueryParameters)
                         * {
                         *  if (!queryParameter.Key.Contains("."))
                         *      url.QueryParameters[queryParameter.Key] = queryParameter.Value;
                         * }*/
                    }
                }
            }
            journal.FixedHeader       = IsFixedHeader;
            journal.FixedColumnsCount = FixedColumnsCount;
            journal.FixedRowsCount    = FixedRowsCount;
            journal.BaseJournal.BaseInnerHeader.ColumnHierarchy = ColumnHierarchy;
            journal.StorageValues = StorageValues;
            journal.BaseJournal.BaseInnerHeader.RowsProperties = HeaderRowsProperties;
            journal.BaseJournal.RowsProperties     = DataRowsProperties;
            journal.BaseJournal.CellsProperties    = DataCellProperties;
            journal.BaseJournal.ConcatenateColumns = ConcatenateColumns;
            if (journal.BaseJournal.SelectingColumnControl != null && ConcatenateColumns != null)
            {
                journal.BaseJournal.SelectingColumnControl.SetConcatenateColumnProperties(ConcatenateColumns);
            }
            if (OrderByColumns != null)
            {
                journal.BaseJournal.DefaultOrder = OrderByColumns;
            }
        }
        public override void Execute(WizardController wizardController, WizardStep step, MainPageUrlBuilder url)
        {
            var navigator = CreateNavigator(step.ToForm);

            if (!ChangeUrlToDestination(wizardController.Navigator, navigator, url))
            {
                return;
            }

            url.UserControl = navigator.CurrentNavigator.TableName + "Journal";
            url.IsNew       = false;
            url.IsRead      = false;
            NextUrlBuilder  = url;
        }
예제 #14
0
 public static void InitializeSelectMode(this TablePanel tablePanel, MainPageUrlBuilder url)
 {
     InitializeSelectMode(tablePanel, url, null);
 }
예제 #15
0
 public abstract void Execute(WizardController wizardController, WizardStep step, MainPageUrlBuilder url);
예제 #16
0
 /// <summary>
 /// Обход по дочерним для определения ссылок на журналы
 /// </summary>
 /// <param name="urlBuilder"></param>
 /// <param name="detectedMenu"></param>
 /// <returns></returns>
 protected MainPageUrlBuilder InitMenuByChilds(MainPageUrlBuilder urlBuilder, bool detectedMenu)
 {
     if (!detectedMenu)
     {
         //если урл не определен, то обходим по дочкам и смотрим более подходящий
         var list = new List <MainPageUrlBuilder>();
         foreach (var item in Childs)
         {
             item.Parent = this;
             var itemUrl = item.InitMenu(urlBuilder.Clone(), false);
             if (itemUrl != null)
             {
                 list.Add(itemUrl);
             }
         }
         MainPageUrlBuilder resultUrl = null;
         if (list.Count == 1)
         {
             resultUrl = list[0];
         }
         else if (list.Count > 0)
         {
             #region определение более подходящего меню
             MainPageUrlBuilder maxUrl = null;
             var maxValue = 0;
             foreach (var itemUrl in list)
             {
                 var countData = itemUrl.QueryParameters.Keys.
                                 Where(key => key.EndsWith(".id"));
                 if (countData.FirstOrDefault() == null)
                 {
                     continue;
                 }
                 var maxInner = countData.
                                Select(key => key.Count(c => c == '.')).
                                Max();
                 if (maxInner > maxValue)
                 {
                     maxValue = maxInner;
                     maxUrl   = itemUrl;
                 }
             }
             resultUrl = maxUrl ?? list[0];
             #endregion
         }
         if (resultUrl == null)
         {
             return(null);
         }
         //если определяется нормальная ссылка, то обходим дочек еще раз
         foreach (var item in Childs)
         {
             if (item.DetectedUrlBuilder != resultUrl)//пропускаем тот журнал что вернул урл
             {
                 var url = resultUrl.Clone();
                 MoveReferenceToChilds(item, GetMenuItem(), url);
                 item.InitMenu(url, true);
             }
         }
         return(resultUrl);
     }
     //если урл определено, то обходим по дочкам и отдаем им урл, изменяя параметры родительских таблиц (учитываем референс)
     foreach (var item in Childs)
     {
         item.Parent = this;
         var url = urlBuilder.Clone();
         MoveReferenceToChilds(item, GetMenuItem(), url);
         item.InitMenu(url, true);
     }
     return(null);
 }
 public abstract string GetNavigatorInfoRowName(Type type, string referenceName, MainPageUrlBuilder urlBuilder);
예제 #18
0
        /// <summary>
        /// Изменяем урл приводя его к урлу дочернего журнала.
        /// </summary>
        /// <param name="menuItem"></param>
        /// <param name="parentMenuItem"></param>
        /// <param name="url"></param>
        private static void MoveReferenceToChilds(BaseMenuItem menuItem, BaseMenuItem parentMenuItem, MainPageUrlBuilder url)
        {
            if (string.IsNullOrEmpty(menuItem.ReferenceName))
            {
                return;
            }
            var keys   = url.QueryParameters.Keys.Where(r => r.EndsWith(".id")).ToList();
            var refKey = "ref" + parentMenuItem.TableName;

            if (!parentMenuItem._isCurrentTable &&
                menuItem.Menu.BaseNavigatorControl.BaseNavigatorValues.ContainsKey(parentMenuItem.TableType) &&
                menuItem.Menu.BaseNavigatorControl.BaseNavigatorValues[parentMenuItem.TableType] != null)
            {
                //проставление референса по родительской таблице, если она выбрана
                //смотрим в навигаторе потому как навигатор хранит выбранные записи по референсам (в урле хранится лишнее)
                var value = menuItem.Menu.BaseNavigatorControl.BaseNavigatorValues[parentMenuItem.TableType].ToString();
                url.QueryParameters[refKey] = value;
                url.QueryParameters[menuItem.ReferenceName + ".id"] = value;
            }
            if (keys.Count == 0 && !parentMenuItem._isCurrentTable)
            {
                return;
            }

            foreach (var key in keys)
            {
                var value = url.QueryParameters[key];
                url.QueryParameters.Remove(key);
                url.QueryParameters[menuItem.ReferenceName + "." + key] = value;
            }
            //проставляем референс по выбранной записи
            //смотрим в этой коллекции потому как в текущем журнале изменяется выбранная в урле
            if (parentMenuItem._isCurrentTable && url.QueryParameters.ContainsKey(refKey))
            {
                var value = url.QueryParameters[refKey];
                url.QueryParameters[menuItem.ReferenceName + ".id"] = value;
            }
        }
예제 #19
0
        public override void Execute(WizardController wizardController, WizardStep step, MainPageUrlBuilder url)
        {
            var navigator     = CreateNavigator(step.ToForm);
            var navigatorInfo = CreateNavigatorInfo(step.ToFormNavigatorInfo);

            if (!ChangeUrlToDestination(wizardController.Navigator, navigator, url))
            {
                return;
            }

            // для строк один к одному проверяем наличие записи
            if (navigatorInfo.IsOneToOne)
            {
                var source   = (IDataSourceViewGetName)navigator.CurrentNavigator.DataSource;
                var paramKey = "ref" + navigatorInfo.TableName;

                if (url.QueryParameters.ContainsKey(paramKey))
                {
                    var key = url.QueryParameters[paramKey];
                    if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(source.GetName(key)))
                    {
                        return;
                    }
                }
            }

            url.UserControl = navigator.CurrentNavigator.TableName + "Edit";
            url.IsNew       = true;
            url.IsRead      = false;
            NextUrlBuilder  = url;
        }
예제 #20
0
 public static object Execute(MainPageUrlBuilder url, string functionClassName)
 {
     using (var page = new Page())
         return(Execute(page, url, functionClassName));
 }
예제 #21
0
 protected internal string GetJournalUrl(MainPageUrlBuilder urlClone)
 {
     urlClone.UserControl = TableName + "Journal";
     urlClone.IsRead      = false;
     return(urlClone.CreateUrl());
 }
 public override void SetUrl(MainPageUrlBuilder url)
 {
     base.SetUrl(url);
     ParseFilterParameters();
 }
        protected void CreateReport(string culture, bool isSubscriptions)
        {
            if (webReportManager.Plugin == null)
            {
                return;
            }
            errorDisplay.Text = "";
            ValidateReportEventArgs args = new ValidateReportEventArgs();

            if (!webReportManager.Validate(args))
            {
                errorDisplay.ShowError(webReportManager.ErrorText);
                WriteErrors(errorDisplay, args);
                return;
            }
            //webReportManager.ShowReport();
            //StiWebViewer1.Report = webReportManager.Report;
            //StiWebViewer1.ResetCurrentPage();
            if (webReportManager.Plugin != null)
            {
                StorageValues values = webReportManager.GetValues();
                var           sid    = new byte[] { };
                switch (this.Context.User.Identity.AuthenticationType)
                {
                case "Windows":
                    var windowsIdentity = (WindowsIdentity)this.Context.User.Identity;
                    sid = new byte[windowsIdentity.User.BinaryLength];
                    windowsIdentity.User.GetBinaryForm(sid, 0);
                    break;

                case "Forms":     // note: Получение сида при идентификации по формам.
                    sid = Encoding.Default.GetBytes(User.GetSID());
                    break;
                }

                if (((IWebReportPlugin)webReportManager.Plugin).AllowSaveValuesConditions)
                {
                    StorageValues.SetStorageValues(webReportManager.Plugin.GetType().FullName, sid, values);
                }
                if (!isSubscriptions)
                {
                    var redirectReportPlugin = webReportManager.Plugin as IRedirectReportPlugin;
                    var backPath             = Request.QueryString["backPath"];
                    var backText             = Request.QueryString["text"];

                    if (string.IsNullOrEmpty(backPath) && webReportManager.Plugin.Visible)
                    {
                        backPath = WebReportManager.GetReportUrl(
                            string.Empty,
                            webReportManager.Plugin.GetType().FullName,
                            string.Empty,
                            string.Empty,
                            false) + "&open=false&setDefaultParams=true";
                    }

                    if (string.IsNullOrEmpty(backText))
                    {
                        backText = Resources.SBack;
                    }

                    if (webReportManager.Plugin.Visible)
                    {
                        RememberReports(
                            WebReportManager.GetReportUrl(
                                string.Empty,
                                webReportManager.Plugin.GetType().FullName,
                                string.Empty,
                                string.Empty,
                                false) + "&open=false&setDefaultParams=true",
                            webReportManager.Plugin);
                    }

                    if (redirectReportPlugin != null)
                    {
                        if (redirectReportPlugin.LogViewReport)
                        {
                            Tools.Security.DBDataContext.AddViewReports(
                                Tools.Security.User.GetSID(),
                                HttpContext.Current.User.Identity.Name,
                                HttpContext.Current.User.Identity.Name,
                                ReportInitializerSection.GetReportInitializerSection().ReportPageViewer + "?ClassName="
                                + redirectReportPlugin.GetType().FullName,
                                HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority),
                                Environment.MachineName,
                                false,
                                redirectReportPlugin.GetType());
                        }

                        redirectReportPlugin.OpenReport(
                            webReportManager,
                            values,
                            Request.QueryString["rs:format"],
                            culture, HttpUtility.UrlEncode(backPath),
                            backText, Request.QueryString["rs:command"]);
                    }
                    else
                    {
                        var guid = SetSession(values, webReportManager);
                        Response.Redirect(
                            string.Format(
                                "{6}?reportName={0}&expword={4}&values={1}&text={2}&culture={5}&backPath={3}",
                                webReportManager.Plugin.GetType().FullName,
                                guid,
                                backText,
                                HttpUtility.UrlEncode(backPath),
                                Request.QueryString["expword"],
                                culture,
                                ReportInitializerSection.GetReportInitializerSection().ReportingStiReportResultPage));
                    }

                    //                    ScriptManager.RegisterStartupScript(btnCreateReport,
                    //                                                        GetType(),
                    //                                                        "open new window",
                    //                                                        string.Format("window.open('ReportResultPage.aspx?reportName={0}&refPerson={1}', '');",
                    //                                                                      webReportManager.Plugin.GetType().FullName,
                    //                                                                      refPerson,
                    //                                                                      Guid.NewGuid().ToString().Replace("-", "")),
                    //                                                        true);
                }
                else
                {
                    var guid = SetSession(values, webReportManager);
                    var url  = new MainPageUrlBuilder
                    {
                        UserControl   = "ReportSubscriptionsEdit",
                        IsDataControl = true,
                        IsNew         = true
                    };
                    url.CustomQueryParameters.Add("guid", guid);
                    /*Определение типа отчета*/
                    var isSqlReportingServices = Convert.ToByte(webReportManager.Plugin is ISqlReportingServicesPlugin);
                    url.CustomQueryParameters.Add("isSqlReportingServices", isSqlReportingServices.ToString());
                    url.CustomQueryParameters.Add("reportName", webReportManager.Plugin.GetType().FullName);
                    url.CustomQueryParameters.Add("qscommand", Request.QueryString["rs:command"]);
                    url.CustomQueryParameters.Add("culture", culture);
                    /*Определениe формата выгрузки отчета в зависимости от типа отчета*/
                    string format = "";
                    if (isSqlReportingServices == 0)
                    {
                        var webReportPlugin = (IWebReportPlugin)webReportManager.Plugin;
                        var stiPlugin       = (IStimulsoftReportPlugin)webReportPlugin;
                        var expToWord       = !string.IsNullOrEmpty(Request.QueryString["expword"]);
                        if (!expToWord && stiPlugin.AutoExportTo == null)
                        {
                            format = Request.QueryString["expword"];
                        }
                        else if (stiPlugin.AutoExportTo != null)
                        {
                            format = stiPlugin.AutoExportTo.Value.ToString();
                        }
                    }
                    else
                    {
                        format = Request.QueryString["rs:format"];
                    }
                    /**/
                    url.CustomQueryParameters.Add("format", format);
                    Page.Response.Redirect(url.CreateUrl(false, true));
                }
            }
        }
예제 #24
0
        protected bool ChangeUrlToDestination(BaseNavigatorControl fromNavigator, BaseNavigatorControl destinationNavigator, MainPageUrlBuilder url)
        {
            if (fromNavigator.CurrentNavigator.TableType == destinationNavigator.CurrentNavigator.TableType)
            {
                return(true);
            }

            var childToCurrent = destinationNavigator.CurrentNavigator.ParentNavigators.FirstOrDefault(r => r.TableType == fromNavigator.CurrentNavigator.TableType);

            if (childToCurrent != null)
            {
                ChangeUrlToChild(url, childToCurrent.ReferenceName, fromNavigator.CurrentNavigator.TableName);
                return(true);
            }

            var toParent = fromNavigator.CurrentNavigator.ParentNavigators.FirstOrDefault(r => r.TableType == destinationNavigator.CurrentNavigator.TableType);

            if (toParent != null)
            {
                ChangeUrlToParent(url, toParent.ReferenceName, destinationNavigator.CurrentNavigator.TableName);
                return(true);
            }

            var parent = fromNavigator.CurrentNavigator.ParentNavigators
                         .Select(r => new { toParent = r, toChild = destinationNavigator.CurrentNavigator.ParentNavigators.FirstOrDefault(t => t.TableType == r.TableType) })
                         .FirstOrDefault(r => r.toChild != null);

            if (parent != null)
            {
                ChangeUrlToParent(url, parent.toParent.ReferenceName, parent.toParent.TableName);
                ChangeUrlToChild(url, parent.toChild.ReferenceName, parent.toParent.TableName);
                return(true);
            }

            var doubleParent = fromNavigator.CurrentNavigator.ParentNavigators
                               .SelectMany(r => r.ParentNavigators.Select(c => new { toParent0 = r, toParent1 = c }))
                               .Select(
                r => new
            {
                r.toParent0,
                r.toParent1,
                toChild = destinationNavigator.CurrentNavigator.ParentNavigators.FirstOrDefault(t => t.TableType == r.toParent1.TableType)
            })
                               .FirstOrDefault(r => r.toChild != null);

            if (doubleParent != null)
            {
                ChangeUrlToParent(url, doubleParent.toParent0.ReferenceName, doubleParent.toParent0.TableName);
                ChangeUrlToParent(url, doubleParent.toParent1.ReferenceName, doubleParent.toParent1.TableName);
                ChangeUrlToChild(url, doubleParent.toChild.ReferenceName, doubleParent.toParent1.TableName);
                return(true);
            }

            var tripleParent = fromNavigator.CurrentNavigator.ParentNavigators
                               .SelectMany(r => r.ParentNavigators.Select(c => new { toParent0 = r, toParent1 = c }))
                               .SelectMany(r => r.toParent1.ParentNavigators.Select(c => new { r.toParent0, r.toParent1, toParent2 = c }))
                               .Select(
                r => new
            {
                r.toParent0,
                r.toParent1,
                r.toParent2,
                toChild = destinationNavigator.CurrentNavigator.ParentNavigators.FirstOrDefault(t => t.TableType == r.toParent2.TableType)
            })
                               .FirstOrDefault(r => r.toChild != null);

            if (tripleParent != null)
            {
                ChangeUrlToParent(url, tripleParent.toParent0.ReferenceName, tripleParent.toParent0.TableName);
                ChangeUrlToParent(url, tripleParent.toParent1.ReferenceName, tripleParent.toParent1.TableName);
                ChangeUrlToParent(url, tripleParent.toParent2.ReferenceName, tripleParent.toParent2.TableName);
                ChangeUrlToChild(url, tripleParent.toChild.ReferenceName, tripleParent.toParent2.TableName);
                return(true);
            }

            return(false);
        }