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); }