Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Discount eligibility expression evaluation

18 views
Skip to first unread message

Raffaele

unread,
Jul 1, 2009, 12:19:01 PM7/1/09
to

Hi,
I'm tring to evaluate eligibility expression in discount items.
Here my code:

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.

0 new messages