Satrabel.OpenUrlRewriter.Components.CacheController.GetRedirectModuleRule C# (CSharp) Метод

GetRedirectModuleRule() приватный Метод

private GetRedirectModuleRule ( string CultureCode, int TabId, string Url ) : Satrabel.HttpModules.Provider.UrlRule
CultureCode string
TabId int
Url string
Результат Satrabel.HttpModules.Provider.UrlRule
        private UrlRule GetRedirectModuleRule(string CultureCode, int TabId, string Url)
        {
            Url = Url.ToLower();
            UrlRule rule = null;
            bool RemoveTab = TabId == Null.NullInteger;
            var rules = _rules.Where(r => r.RuleType == UrlRuleType.Module && r.RedirectDestination == Url && r.Action == UrlRuleAction.Rewrite /*&& r.RemoveTab == RemoveTab*/);
            //with tabid
            if (TabId != Null.NullInteger)
            {
                var tabRules = rules.Where(r => r.TabId == TabId);
                rule = GetFirstRule(tabRules, CultureCode);
            }
            //without tabid
            //if (rule == null) 22/3/2016
            else
            {
                rule = GetFirstRule(rules, CultureCode);
            }
            if (rule != null)
            {
                rule = new UrlRule()
                {
                    CultureCode = rule.CultureCode,
                    TabId = rule.TabId,
                    RuleType = rule.RuleType,
                    Action = UrlRuleAction.Redirect,
                    Url = rule.RedirectDestination,
                    RedirectDestination = rule.Url,
                    RemoveTab = rule.RemoveTab
                };
            }
            if (rule == null)
            {
                // try to find a rule with de begin of url match a rule RedirectDestination
                rules = _rules.Where(r => r.RuleType == UrlRuleType.Module && Url.StartsWith(r.RedirectDestination+"/")  && r.Action == UrlRuleAction.Rewrite /*&& r.RemoveTab == RemoveTab*/);
                //with tabid
                if (TabId != Null.NullInteger)
                {
                    var tabRules = rules.Where(r => r.TabId == TabId);
                    rule = GetFirstRule(tabRules, CultureCode);
                }
                //without tabid
                //if (rule == null) 22/3/2016
                else
                {
                    rule = GetFirstRule(rules, CultureCode);
                }
                if (rule != null)
                {
                    rule = new UrlRule()
                    {
                        CultureCode = rule.CultureCode,
                        TabId = rule.TabId,
                        RuleType = rule.RuleType,
                        Action = UrlRuleAction.Redirect,
                        Url = rule.RedirectDestination,
                        RedirectDestination = rule.Url,
                        RemoveTab = rule.RemoveTab
                    };
                }

            }
            return rule;
        }