Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private List<EntityModelData> EvaluateEntities(List<EntityModelData> entityModels, IDictionary<string, string> claims)
- {
- var entities = new List<EntityModelData>();
- if(entityModels != null)
- {
- foreach (var entityModel in entityModels)
- {
- var evaluation = true;
- if(entityModel.ExtensionData != null && entityModel.ExtensionData.ContainsKey("TargetGroupConditions"))
- {
- Log.Info("TargetGroupConditions found for CP: {0}", entityModel.Id);
- var targetGroupConditions = entityModel.ExtensionData["TargetGroupConditions"] as Condition[];
- foreach (var condition in targetGroupConditions)
- {
- var result = false;
- if (condition is CustomerCharacteristicCondition)
- {
- var customerCharacteristicCondition = condition as CustomerCharacteristicCondition;
- Log.Info("Condition: {0}:{1}", customerCharacteristicCondition.Name, customerCharacteristicCondition.Value);
- if (claims.TryGetValue(customerCharacteristicCondition.Name, out string value))
- {
- switch (customerCharacteristicCondition.Operator)
- {
- case ConditionOperator.Equals:
- result = customerCharacteristicCondition.Value.Equals(value);
- break;
- case ConditionOperator.GreaterThan:
- result = int.Parse(value) > int.Parse(customerCharacteristicCondition.Value.ToString());
- break;
- case ConditionOperator.LessThan:
- result = int.Parse(value) < int.Parse(customerCharacteristicCondition.Value.ToString());
- break;
- case ConditionOperator.NotEqual:
- result = !customerCharacteristicCondition.Value.Equals(value);
- break;
- case ConditionOperator.StringEquals:
- result = customerCharacteristicCondition.Value.ToString().Equals(value);
- break;
- case ConditionOperator.Contains:
- result = value.Contains(customerCharacteristicCondition.Value.ToString());
- break;
- case ConditionOperator.StartsWith:
- result = value.StartsWith(customerCharacteristicCondition.Value.ToString());
- break;
- case ConditionOperator.EndsWith:
- result = value.EndsWith(customerCharacteristicCondition.Value.ToString());
- break;
- default:
- result = false;
- break;
- }
- Log.Info("Result: ", result);
- result = customerCharacteristicCondition.Negate ? !(result) : result;
- }
- }
- evaluation = evaluation && result;
- }
- }
- if (evaluation)
- {
- entities.Add(entityModel);
- }
- }
- }
- return entities;
- }
Add Comment
Please, Sign In to add comment