public void TestGetPersonalityTestComplexResults_CPQ() { IComputingService target = new ComputingService(); PersonalityTestElementStandardResult standardResult = new PersonalityTestElementStandardResult(); standardResult.Age = 10; standardResult.RefId = ""; standardResult.Scores = new PersonalityTestElementStandardScore[] { new PersonalityTestElementStandardScore { Element = (PersonalityElement)0, Value = -2 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)1, Value = -2 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)3, Value = 2 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)2, Value = 0 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)5, Value = 0 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)4, Value = 0 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)6, Value = -1 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)7, Value = 0 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)8, Value = -1 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)9, Value = 1 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)12, Value = 1 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)13, Value = 0 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)16, Value = -2 }, new PersonalityTestElementStandardScore { Element = (PersonalityElement)17, Value = 1 } }; var actual = target.GetPersonalityTestComplexResults(new PersonalityTestElementStandardResult[] { standardResult }); }
private PersonalityTestElementStandardResult GetPersonalityTestElementStandardResult(PersonalityTestPaperResult paperResult, PersonalityTestQuestionsSet questionsSet, PersonalityTestElementStandardParametersSet elementStandardParametersSet) { var dicElementOriginalValue = new Dictionary <Core.Domain.Models.PersonalityTest.PersonalityElement, int>(); foreach (var questionAnswer in paperResult.QuestionAnswers) { var question = questionsSet.Questions.SingleOrDefault(item => item.Code == questionAnswer.QuestionCode); if (question == null) { continue; } Core.Domain.Models.PersonalityTest.PersonalityElement element; if (!Enum.TryParse <Core.Domain.Models.PersonalityTest.PersonalityElement>(question.Element.ToString(), out element)) { throw new ArgumentException("Wrong Personality Element"); } if (!dicElementOriginalValue.ContainsKey(element)) { dicElementOriginalValue.Add(element, 0); } foreach (var choiceScore in question.ChoiceScores) { if (choiceScore.Choice == questionAnswer.Answer) { dicElementOriginalValue[element] += choiceScore.Score; break; } } } var elementStandardScoreList = new List <PersonalityTestElementStandardScore>(); foreach (Core.Domain.Models.PersonalityTest.PersonalityElement element in dicElementOriginalValue.Keys) { int originalValue = dicElementOriginalValue[element]; PersonalityTestElementStandardParameter elementStandardParameter = elementStandardParametersSet.Parameters.Single(item => item.Element == element); int standardScoreValue = elementStandardParameter.Segments.Single(item => originalValue >= item.OriginalScoreMin && originalValue <= item.OriginalScoreMax).StandardScore; PersonalityTestElementStandardScore elementStandardScore = new PersonalityTestElementStandardScore(); App.Models.PersonalityElement appElement; if (Enum.TryParse <App.Models.PersonalityElement>(element.ToString(), out appElement)) { elementStandardScore.Element = appElement; elementStandardScore.Value = standardScoreValue; elementStandardScore.OriginalValue = originalValue; elementStandardScoreList.Add(elementStandardScore); } else { throw new ArgumentException("Wrong Personality Element"); } } PersonalityTestElementStandardResult elementStandardResult = new PersonalityTestElementStandardResult(); elementStandardResult.Age = paperResult.Age; elementStandardResult.Scores = elementStandardScoreList.ToArray(); elementStandardResult.RefId = paperResult.RefId; return(elementStandardResult); }
private PersonalityTestComplexResult GetPersonalityTestComplexResult(PersonalityTestElementStandardResult standardResult) { List <PersonalityTestComplexScore> scores = new List <PersonalityTestComplexScore>(); Dictionary <App.Models.PersonalityElement, int> dicElementValue = new Dictionary <Models.PersonalityElement, int>(); foreach (var score in standardResult.Scores) { dicElementValue.Add(score.Element, score.Value); } if (standardResult.Age > 14) { //16PF测试 #region A1 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.A1; score.Value = ((38 + 2 * dicElementValue[Models.PersonalityElement.L] + 3 * dicElementValue[Models.PersonalityElement.O] + 4 * dicElementValue[Models.PersonalityElement.Q4]) - (2 * dicElementValue[Models.PersonalityElement.C] + 2 * dicElementValue[Models.PersonalityElement.H] + 2 * dicElementValue[Models.PersonalityElement.Q2])) / 10; scores.Add(score); } #endregion #region A2 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.A2; score.Value = ((2 * dicElementValue[Models.PersonalityElement.A] + 3 * dicElementValue[Models.PersonalityElement.E] + 4 * dicElementValue[Models.PersonalityElement.F] + 5 * dicElementValue[Models.PersonalityElement.H]) - (2 * dicElementValue[Models.PersonalityElement.Q2] + 11)) / 10; scores.Add(score); } #endregion #region A3 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.A3; score.Value = ((77 + 2 * dicElementValue[Models.PersonalityElement.C] + 2 * dicElementValue[Models.PersonalityElement.E] + 2 * dicElementValue[Models.PersonalityElement.F] + 2 * dicElementValue[Models.PersonalityElement.N]) - (4 * dicElementValue[Models.PersonalityElement.A] + 6 * dicElementValue[Models.PersonalityElement.I] + 2 * dicElementValue[Models.PersonalityElement.M])) / 10; scores.Add(score); } #endregion #region A3 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.A3; score.Value = ((77 + 2 * dicElementValue[Models.PersonalityElement.C] + 2 * dicElementValue[Models.PersonalityElement.E] + 2 * dicElementValue[Models.PersonalityElement.F] + 2 * dicElementValue[Models.PersonalityElement.N]) - (4 * dicElementValue[Models.PersonalityElement.A] + 6 * dicElementValue[Models.PersonalityElement.I] + 2 * dicElementValue[Models.PersonalityElement.M])) / 10; scores.Add(score); } #endregion #region A4 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.A4; score.Value = ((4 * dicElementValue[Models.PersonalityElement.E] + 3 * dicElementValue[Models.PersonalityElement.M] + 4 * dicElementValue[Models.PersonalityElement.Q1] + 4 * dicElementValue[Models.PersonalityElement.Q2]) - (3 * dicElementValue[Models.PersonalityElement.A] + 2 * dicElementValue[Models.PersonalityElement.G])) / 10; scores.Add(score); } #endregion #region B1 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.B1; score.Value = dicElementValue[Models.PersonalityElement.C] + dicElementValue[Models.PersonalityElement.F] + (11 - dicElementValue[Models.PersonalityElement.O]) + (11 - dicElementValue[Models.PersonalityElement.Q4]); scores.Add(score); } #endregion #region B2 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.B2; score.Value = dicElementValue[Models.PersonalityElement.Q3] * 2 + dicElementValue[Models.PersonalityElement.G] * 2 + dicElementValue[Models.PersonalityElement.C] * 2 + dicElementValue[Models.PersonalityElement.E] + dicElementValue[Models.PersonalityElement.N] + dicElementValue[Models.PersonalityElement.Q2] + dicElementValue[Models.PersonalityElement.Q1]; scores.Add(score); } #endregion #region B3 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.B3; score.Value = (11 - dicElementValue[Models.PersonalityElement.A]) * 2 + dicElementValue[Models.PersonalityElement.B] * 2 + dicElementValue[Models.PersonalityElement.E] + (11 - dicElementValue[Models.PersonalityElement.F]) * 2 + dicElementValue[Models.PersonalityElement.H] + dicElementValue[Models.PersonalityElement.I] * 2 + dicElementValue[Models.PersonalityElement.M] + (11 - dicElementValue[Models.PersonalityElement.N]) + dicElementValue[Models.PersonalityElement.Q1] + dicElementValue[Models.PersonalityElement.Q3] * 2; scores.Add(score); } #endregion #region B4 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.B4; score.Value = dicElementValue[Models.PersonalityElement.B] + dicElementValue[Models.PersonalityElement.G] + dicElementValue[Models.PersonalityElement.Q3] + (11 - dicElementValue[Models.PersonalityElement.F]); scores.Add(score); } #endregion } else { // CPQ测试 #region A1 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.A1; score.Value = Convert.ToInt32(0.2 * (dicElementValue[Models.PersonalityElement.D] + dicElementValue[Models.PersonalityElement.O] + dicElementValue[Models.PersonalityElement.Q4] + dicElementValue[Models.PersonalityElement.Q3]) - 0.1 * (dicElementValue[Models.PersonalityElement.C] + dicElementValue[Models.PersonalityElement.H]) + 4.4); scores.Add(score); } #endregion #region A2 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.A2; score.Value = Convert.ToInt32(0.33 * (dicElementValue[Models.PersonalityElement.A] + dicElementValue[Models.PersonalityElement.F] + dicElementValue[Models.PersonalityElement.H]) + 0.66); scores.Add(score); } #endregion #region A3 { PersonalityTestComplexScore score = new PersonalityTestComplexScore(); score.Category = PersonalityComplexCategory.A3; score.Value = Convert.ToInt32(0.13 * (dicElementValue[Models.PersonalityElement.I] + dicElementValue[Models.PersonalityElement.O] + dicElementValue[Models.PersonalityElement.Q4] - dicElementValue[Models.PersonalityElement.C] - dicElementValue[Models.PersonalityElement.E] - dicElementValue[Models.PersonalityElement.F] - dicElementValue[Models.PersonalityElement.H]) + 0.07 * (dicElementValue[Models.PersonalityElement.D] + dicElementValue[Models.PersonalityElement.J]) + 5.45); scores.Add(score); } #endregion } PersonalityTestComplexResult complexResult = new PersonalityTestComplexResult(); complexResult.Scores = scores.ToArray(); complexResult.RefId = standardResult.RefId; return(complexResult); }