예제 #1
0
        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);
            }
        }
예제 #2
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);
            }
        }