Guest User

Untitled

a guest
Jul 17th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.60 KB | None | 0 0
  1. private List<EntityModelData> EvaluateEntities(List<EntityModelData> entityModels, IDictionary<string, string> claims)
  2. {
  3. var entities = new List<EntityModelData>();
  4.  
  5. if(entityModels != null)
  6. {
  7. foreach (var entityModel in entityModels)
  8. {
  9. var evaluation = true;
  10.  
  11. if(entityModel.ExtensionData != null && entityModel.ExtensionData.ContainsKey("TargetGroupConditions"))
  12. {
  13. Log.Info("TargetGroupConditions found for CP: {0}", entityModel.Id);
  14. var targetGroupConditions = entityModel.ExtensionData["TargetGroupConditions"] as Condition[];
  15.  
  16. foreach (var condition in targetGroupConditions)
  17. {
  18. var result = false;
  19.  
  20. if (condition is CustomerCharacteristicCondition)
  21. {
  22. var customerCharacteristicCondition = condition as CustomerCharacteristicCondition;
  23.  
  24. Log.Info("Condition: {0}:{1}", customerCharacteristicCondition.Name, customerCharacteristicCondition.Value);
  25.  
  26. if (claims.TryGetValue(customerCharacteristicCondition.Name, out string value))
  27. {
  28. switch (customerCharacteristicCondition.Operator)
  29. {
  30. case ConditionOperator.Equals:
  31. result = customerCharacteristicCondition.Value.Equals(value);
  32. break;
  33. case ConditionOperator.GreaterThan:
  34. result = int.Parse(value) > int.Parse(customerCharacteristicCondition.Value.ToString());
  35. break;
  36. case ConditionOperator.LessThan:
  37. result = int.Parse(value) < int.Parse(customerCharacteristicCondition.Value.ToString());
  38. break;
  39. case ConditionOperator.NotEqual:
  40. result = !customerCharacteristicCondition.Value.Equals(value);
  41. break;
  42. case ConditionOperator.StringEquals:
  43. result = customerCharacteristicCondition.Value.ToString().Equals(value);
  44. break;
  45. case ConditionOperator.Contains:
  46. result = value.Contains(customerCharacteristicCondition.Value.ToString());
  47. break;
  48. case ConditionOperator.StartsWith:
  49. result = value.StartsWith(customerCharacteristicCondition.Value.ToString());
  50. break;
  51. case ConditionOperator.EndsWith:
  52. result = value.EndsWith(customerCharacteristicCondition.Value.ToString());
  53. break;
  54. default:
  55. result = false;
  56. break;
  57. }
  58.  
  59. Log.Info("Result: ", result);
  60.  
  61. result = customerCharacteristicCondition.Negate ? !(result) : result;
  62. }
  63. }
  64.  
  65. evaluation = evaluation && result;
  66. }
  67. }
  68.  
  69. if (evaluation)
  70. {
  71. entities.Add(entityModel);
  72. }
  73. }
  74. }
  75.  
  76. return entities;
  77. }
Add Comment
Please, Sign In to add comment