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;
}