ContentSelector contentSelector =
CommerceContext.Current.TargetingSystem.SelectionContexts["discounts"].GetSelector();
MarketingContext marketingContext =
MarketingContext.Create(CommerceContext.Current.SiteName, null,
Microsoft.CommerceServer.AuthorizationMode.NoAuthorization);
TargetingProfileCollection profiles = new
TargetingProfileCollection();
string connString =
CommerceContext.Current.Resources["Marketing"]["connstr_db_marketing"].ToString();
MarketingExpressionEvaluator evaluator = new
MarketingExpressionEvaluator(connString,
CommerceContext.Current.DebugContext);
contentSelector.ItemsRequested = 1000;
contentSelector.TraceMode = false;
contentSelector.GetContent();
profiles.Add("Farmacia", CommerceContext.Current.UserProfile);
evaluator.LoadAll();
foreach (ListDictionary item in contentSelector.AllContentItems)
{
int itemId = (int)item["item_id"];
Discount d =
(Discount)marketingContext.CampaignItems.GetCampaignItem(itemId);
foreach (ExpressionRef expression in
d.EligibilityRequirements)
{
Expression es = null;
if (expression is LocalExpressionRef)
{
es = ((LocalExpressionRef)expression).Expression;
}
else if (expression is GlobalExpressionRef)
{
es =
marketingContext.Expressions.GetExpression(((GlobalExpressionRef)expression).ExpressionId);
}
else if (expression is AlwaysTrueExpressionRef)
{
}
ExpressionEvaluator.ExpressionResult result =
evaluator.Evaluate(es.Id, profiles);
}
}
Unfortunately, the Evaluate function returns always "UndefinedResult" even
if in the basketpipeline the expression is evaluated correctly.
Any idea?
Best Regards.