Exemplo n.º 1
0
        public void TestGetCertainSportAbilityTestStandardResults()
        {
            IComputingService target = new ComputingService();

            CertainSportAbilityTestOriginalResult originalResult = new CertainSportAbilityTestOriginalResult
            {
                SportType = "sport_for_test",
                Birthdate = new DateTime(2000, 3, 5),
                TestDate  = new DateTime(2010, 6, 7),
                Gender    = Gender.FEMALE,
                RefId     = "",
                SubScores = new CertainSportAbilityTestOriginalSubScore[] {
                    new CertainSportAbilityTestOriginalSubScore {
                        SubType = "800m", Value = "4:05"
                    },
                    new CertainSportAbilityTestOriginalSubScore {
                        SubType = "NeckLength", Value = "14"
                    },
                    new CertainSportAbilityTestOriginalSubScore {
                        SubType = "Expressiveness", Value = "具有较强的感染力"
                    },
                }
            };


            var actual = target.GetCertainSportAbilityTestStandardResults(new CertainSportAbilityTestOriginalResult[] { originalResult });
        }
        private CertainSportAbilityTestStandardResult GetCertainSportAbilityTestStandardResult(CertainSportAbilityTestOriginalResult originalResult, CertainSportAbilityTestEvaluationCriteriaSportBundle sportBundle)
        {
            CertainSportAbilityTestStandardResult standardResult = new CertainSportAbilityTestStandardResult();

            int age = GetCertainSportAbilityTestAge(originalResult.Birthdate, originalResult.TestDate);

            Core.Domain.Models.Shared.Gender gender = ConvertToDomain(originalResult.Gender);

            var sport = sportBundle.Sport;

            List <CertainSportAbilityTestStandardSubScore> standardSubScoreList = new List <CertainSportAbilityTestStandardSubScore>();

            foreach (var originalSubScore in originalResult.SubScores)
            {
                //确定子项目
                var subSport = sportBundle.SubSports.Single(item => item.Sport == sport && item.Code == originalSubScore.SubType);

                //确定评分标准集,符合年龄、性别条件
                var subSportParametersSet = sportBundle.SubSportParametersSets.Single(item => item.SubSport == subSport && item.AgeMin <= age && item.AgeMax >= age && (item.Gender == null || item.Gender == gender));

                CertainSportAbilityTestStandardSubScore standardSubScore = GetCertainSportAbilityTestStandardSubScore(originalSubScore.Value, subSportParametersSet);

                standardSubScoreList.Add(standardSubScore);
            }
            standardResult.SubScores = standardSubScoreList.ToArray();

            int overallScore = standardSubScoreList.Sum(item => item.Value);

            var sportParameter = sport.Parameters.Where(item => overallScore >= item.Score && (item.Gender == null || item.Gender == gender) && (item.AgeMin == null || item.AgeMin <= age) && (item.AgeMax == null || item.AgeMax <= age)).OrderByDescending(item => item.Score).FirstOrDefault();

            standardResult.OverallScore = overallScore.ToString();
            if (sportParameter != null)
            {
                standardResult.Level = sportParameter.Level;
            }
            standardResult.RefId = originalResult.RefId;

            return(standardResult);
        }