protected float EvaluateLong(int gameId, int actorId, EvaluationCriteria completionCriteria) { var evaluationDataController = new EvaluationDataController(EvaluationDataLogger, ContextFactory, completionCriteria.EvaluationDataCategory); switch (completionCriteria.CriteriaQueryType) { case CriteriaQueryType.Any: var any = evaluationDataController.List(gameId, actorId, completionCriteria.EvaluationDataKey, EvaluationDataType.Long); return(!any.Any() ? 0 : any.Max(value => CompareValues(long.Parse(value.Value), long.Parse(completionCriteria.Value), completionCriteria.ComparisonType, completionCriteria.EvaluationDataType))); case CriteriaQueryType.Sum: var sum = evaluationDataController.SumLong(gameId, actorId, completionCriteria.EvaluationDataKey); return(CompareValues(sum, long.Parse(completionCriteria.Value), completionCriteria.ComparisonType, completionCriteria.EvaluationDataType)); case CriteriaQueryType.Latest: if (!evaluationDataController.TryGetLatest(gameId, actorId, completionCriteria.EvaluationDataKey, out var latest, EvaluationDataType.Long)) { return(0); } return(CompareValues(long.Parse(latest.Value), long.Parse(completionCriteria.Value), completionCriteria.ComparisonType, completionCriteria.EvaluationDataType)); case CriteriaQueryType.Count: var count = evaluationDataController.List(gameId, actorId, completionCriteria.EvaluationDataKey, EvaluationDataType.Long).Count; return(CompareValues(count, long.Parse(completionCriteria.Value), completionCriteria.ComparisonType, EvaluationDataType.Long)); default: return(0); } }
protected float EvaluateManyLong(int gameId, List <int> actors, EvaluationCriteria completionCriteria) { var evaluationDataController = new EvaluationDataController(EvaluationDataLogger, ContextFactory, completionCriteria.EvaluationDataCategory); switch (completionCriteria.CriteriaQueryType) { case CriteriaQueryType.Sum: var totalSum = actors.Sum(a => evaluationDataController.SumLong(gameId, a, completionCriteria.EvaluationDataKey)); return(CompareValues(totalSum, long.Parse(completionCriteria.Value), completionCriteria.ComparisonType, completionCriteria.EvaluationDataType)); case CriteriaQueryType.Count: var count = actors .Sum(actorId => evaluationDataController .List(gameId, actorId, completionCriteria.EvaluationDataKey, EvaluationDataType.Long) .Count); return(CompareValues(count, long.Parse(completionCriteria.Value), completionCriteria.ComparisonType, EvaluationDataType.Long)); default: return(0); } }