コード例 #1
0
        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 });
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }