internal OutboundRule CreateOutboundRuleFromOutboundRuleItem(OutboundRuleItem outboundRuleItem, RedirectFolderItem redirectFolderItem) { var outboundRule = outboundRuleItem.ToOutboundRule(); return(outboundRule); }
public static OutboundRule ToOutboundRule(this OutboundRuleItem outboundRuleItem) { if (outboundRuleItem == null) { return(null); } var conditionItems = GetBaseConditionItems(outboundRuleItem); var outboundRule = new OutboundRule { ItemId = outboundRuleItem.ID.Guid, Name = outboundRuleItem.Name }; SetBaseRule(outboundRuleItem.BaseRuleItem, outboundRule); SetOutboundMatch(outboundRuleItem.OutboundMatchItem, outboundRule); GetPrecondition(outboundRuleItem.OutboundPreconditionItem, outboundRule); if (string.IsNullOrEmpty(outboundRuleItem.BaseRuleItem.BaseMatchItem.MatchPatternItem.Pattern.Value)) { Log.Warn(logObject, outboundRuleItem.Database, "No pattern set on rule with ItemID: {0}", outboundRuleItem.ID); return(null); } if (outboundRuleItem.Action == null) { Log.Warn(logObject, outboundRuleItem.Database, "No action set on rule with ItemID: {0}", outboundRuleItem.ID); return(null); } var baseActionItem = outboundRuleItem.Action.TargetItem; IBaseAction baseAction = null; if (baseActionItem != null) { var baseActionItemTemplateId = baseActionItem.TemplateID.ToString(); if (baseActionItemTemplateId.Equals(OutboundRewriteItem.TemplateId, StringComparison.InvariantCultureIgnoreCase)) { baseAction = new OutboundRewriteItem(baseActionItem).ToOutboundRewriteAction(); } } outboundRule.Action = baseAction; if (conditionItems != null) { SetConditions(conditionItems, outboundRule); } return(outboundRule); }
public List <OutboundRule> GetOutboundRules() { if (db == null) { return(null); } var redirectFolderItems = GetRedirectFolderItems(); if (redirectFolderItems == null) { return(null); } var outboundRules = new List <OutboundRule>(); foreach (var redirectFolderItem in redirectFolderItems) { Log.Debug(this, db, "Loading Outbound Rules from RedirectFolder: {0}", redirectFolderItem.Name); var folderDescendants = redirectFolderItem.Axes.GetDescendants() .Where(x => x.TemplateID == new ID(new Guid(OutboundRuleItem.TemplateId))); foreach (var descendantItem in folderDescendants) { if (descendantItem.TemplateID == new ID(new Guid(OutboundRuleItem.TemplateId))) { var outboundRuleItem = new OutboundRuleItem(descendantItem); Log.Debug(this, db, "Loading OutboundRule: {0}", outboundRuleItem.Name); var outboundRule = CreateOutboundRuleFromOutboundRuleItem(outboundRuleItem, redirectFolderItem); if (outboundRule != null && outboundRule.Enabled) { outboundRules.Add(outboundRule); } } } } return(outboundRules); }