Пример #1
0
        /// <summary>
        /// Scores the test.
        /// </summary>
        /// <param name="assessmentResponse">The assessment response.</param>
        /// <returns>returns a AssessmentResults object</returns>
        static public AssessmentResults GetResult(Dictionary <string, int> assessmentResponse)
        {
            AssessmentResults testResults = new AssessmentResults();

            testResults.LastSaveDate = RockDateTime.Now;
            var zScores = new Dictionary <Guid, double>();

            foreach (var spiritualGiftDefinedValue in constructData.Keys)
            {
                var    spiritualGift = constructData[spiritualGiftDefinedValue];
                double totalResponse = 0;
                foreach (var construct in spiritualGift.Constructs)
                {
                    if (assessmentResponse.ContainsKey(construct))
                    {
                        totalResponse += assessmentResponse[construct];
                    }
                }

                var zScore = Math.Round((totalResponse - spiritualGift.Mean) / spiritualGift.StandardDeviation, 1);
                zScores.AddOrReplace(spiritualGiftDefinedValue, zScore);
            }

            testResults.DominantGifts   = zScores.Where(a => a.Value >= minDominantGiftScore).OrderByDescending(a => a.Value).Select(a => a.Key).ToList();
            testResults.SupportiveGifts = zScores.Where(a => a.Value >= minSupportiveGiftScore && a.Value <= maxSupportiveGiftScore).OrderByDescending(a => a.Value).Select(a => a.Key).ToList();
            testResults.OtherGifts      = zScores.Where(a => a.Value <= maxOtherGiftScore).OrderByDescending(a => a.Value).Select(a => a.Key).ToList();
            return(testResults);
        }
Пример #2
0
        /// <summary>
        /// Scores the test.
        /// </summary>
        /// <param name="selectedResponseIDs">a List of ResponseIDs to be scored.</param>
        /// <returns>a struct TestResults object with final scores.</returns>
        static public AssessmentResults Score(List <string> selectedResponseIDs)
        {
            List <DiscService.ResponseItem> responseList = DiscService.GetResponses();

            // Holds the most and least totals for each Letter attribute
            Dictionary <string, int[]> results = new Dictionary <string, int[]>();

            results["S"] = new int[] { 0, 0 };
            results["C"] = new int[] { 0, 0 };
            results["I"] = new int[] { 0, 0 };
            results["N"] = new int[] { 0, 0 }; // This is intentionally not used after most/least totalling (foreach loop below). Placebo questions?
            results["D"] = new int[] { 0, 0 };

            foreach (string selectedResponseID in selectedResponseIDs)
            {
                string responseID = selectedResponseID.Substring(0, 3);
                string MorL       = selectedResponseID.Substring(3, 1);

                DiscService.ResponseItem selectedResponse = responseList.Find(
                    delegate(DiscService.ResponseItem responseItem)
                {
                    return(responseItem.ResponseID == responseID);
                }
                    );

                if (MorL == "m")
                {
                    results[selectedResponse.MostScore][0]++;
                }
                else
                {
                    results[selectedResponse.LeastScore][1]++;
                }
            }

            int nbS = 27 - results["S"][1];
            int nbC = 26 - results["C"][1];
            int nbI = 26 - results["I"][1];
            int nbD = 27 - results["D"][1];

            decimal decX = results["S"][0] + results["C"][0] + results["I"][0] + results["D"][0];
            decimal decY = nbS + nbC + nbI + nbD;

            AssessmentResults testResults = new AssessmentResults();

            if (decX > 0 && decY > 0)
            {
                testResults.AdaptiveBehaviorS = Convert.ToInt32((results["S"][0] / decX * 100));
                testResults.AdaptiveBehaviorC = Convert.ToInt32((results["C"][0] / decX * 100));
                testResults.AdaptiveBehaviorI = Convert.ToInt32((results["I"][0] / decX * 100));
                testResults.AdaptiveBehaviorD = Convert.ToInt32((results["D"][0] / decX * 100));

                testResults.NaturalBehaviorS = Convert.ToInt32((nbS / decY * 100));
                testResults.NaturalBehaviorC = Convert.ToInt32((nbC / decY * 100));
                testResults.NaturalBehaviorI = Convert.ToInt32((nbI / decY * 100));
                testResults.NaturalBehaviorD = Convert.ToInt32((nbD / decY * 100));
            }
            return(testResults);
        }
Пример #3
0
        /// <summary>
        /// Loads and returns saved Assessment scores for the Person.
        /// </summary>
        /// <param name="person">The Person to get the scores for.</param>
        /// <returns>AssessmentResults</returns>
        static public AssessmentResults LoadSavedAssessmentResults(Person person)
        {
            AssessmentResults savedScores = new AssessmentResults();

            person.LoadAttributes();

            var discAttributes = person.Attributes.Values.Where(a => a.Categories.Any(c => c.Guid == new Guid("0B187C81-2106-4875-82B6-FBF1277AE23B"))).Select(a => a.Key);

            foreach (string attrib in discAttributes)
            {
                switch (attrib)
                {
                case AttributeKeys.AdaptiveD:
                    savedScores.AdaptiveBehaviorD = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.AdaptiveI:
                    savedScores.AdaptiveBehaviorI = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.AdaptiveS:
                    savedScores.AdaptiveBehaviorS = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.AdaptiveC:
                    savedScores.AdaptiveBehaviorC = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.NaturalD:
                    savedScores.NaturalBehaviorD = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.NaturalI:
                    savedScores.NaturalBehaviorI = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.NaturalS:
                    savedScores.NaturalBehaviorS = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.NaturalC:
                    savedScores.NaturalBehaviorC = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.PersonalityType:
                    savedScores.PersonalityType = person.AttributeValues[attrib].Value;
                    break;

                case AttributeKeys.LastSaveDate:
                    DateTime lastAssessmentDate = DateTime.MinValue;
                    bool     bCatch             = DateTime.TryParse(person.AttributeValues[attrib].Value, out lastAssessmentDate);
                    savedScores.LastSaveDate = lastAssessmentDate;
                    break;
                }
            }
            return(savedScores);
        }
Пример #4
0
        /// <summary>
        /// Saves Assessment results to a Person's PersonProperties
        /// </summary>
        /// <param name="person">The person.</param>
        /// <param name="assessmentResults">The assessment results.</param>
        static public void SaveAssessmentResults(Person person, AssessmentResults assessmentResults)
        {
            person.LoadAttributes();

            person.SetAttributeValue(ATTRIBUTE_DOMINANT_GIFTS, assessmentResults.DominantGifts.AsDelimited(","));
            person.SetAttributeValue(ATTRIBUTE_SUPPORTIVE_GIFTS, assessmentResults.SupportiveGifts.AsDelimited(","));
            person.SetAttributeValue(ATTRIBUTE_OTHER_GIFTS, assessmentResults.OtherGifts.AsDelimited(","));
            person.SetAttributeValue(ATTRIBUTE_LAST_SAVE_DATE, assessmentResults.LastSaveDate);
            person.SaveAttributeValues();
        }
Пример #5
0
        /// <summary>
        /// Loads and returns saved Assessment scores for the Person.
        /// </summary>
        /// <param name="person">The Person to get the scores for.</param>
        /// <returns>AssessmentResults</returns>
        static public AssessmentResults LoadSavedAssessmentResults(Person person)
        {
            AssessmentResults savedScores = new AssessmentResults();

            person.LoadAttributes();
            savedScores.DominantGifts   = person.GetAttributeValues(ATTRIBUTE_DOMINANT_GIFTS).AsGuidList();
            savedScores.SupportiveGifts = person.GetAttributeValues(ATTRIBUTE_SUPPORTIVE_GIFTS).AsGuidList();
            savedScores.OtherGifts      = person.GetAttributeValues(ATTRIBUTE_OTHER_GIFTS).AsGuidList();
            savedScores.LastSaveDate    = person.GetAttributeValue(ATTRIBUTE_LAST_SAVE_DATE).AsDateTime();

            return(savedScores);
        }
Пример #6
0
        /// <summary>
        /// Saves Assessment results to a Person's PersonProperties
        /// </summary>
        /// <param name="person">The person.</param>
        /// <param name="assessmentResults">The assessment results.</param>
        static public void SaveAssessmentResults(Person person, AssessmentResults assessmentResults)
        {
            person.LoadAttributes();

            person.SetAttributeValue(ATTRIBUTE_EQ_CONSTRUCTS_SELF_AWARENESS, assessmentResults.SelfAwareConstruct);
            person.SetAttributeValue(ATTRIBUTE_EQ_CONSTRUCTS_SELF_REGULATING, assessmentResults.SelfRegulatingConstruct);
            person.SetAttributeValue(ATTRIBUTE_EQ_CONSTRUCTS_OTHERS_AWARENESS, assessmentResults.OtherAwarenessContruct);
            person.SetAttributeValue(ATTRIBUTE_EQ_CONSTRUCTS_OTHERS_REGULATING, assessmentResults.OthersRegulatingConstruct);
            person.SetAttributeValue(ATTRIBUTE_EQ_SCALES_PROBLEM_SOLVING, assessmentResults.EQ_ProblemSolvingScale);
            person.SetAttributeValue(ATTRIBUTE_EQ_SCALES_UNDER_STRESS, assessmentResults.EQ_UnderStressScale);
            person.SaveAttributeValues();
        }
Пример #7
0
        /// <summary>
        /// Scores the test.
        /// </summary>
        /// <param name="moreN">The more n.</param>
        /// <param name="moreD">The more d.</param>
        /// <param name="moreI">The more i.</param>
        /// <param name="moreS">The more s.</param>
        /// <param name="moreC">The more c.</param>
        /// <param name="lessN">The less n.</param>
        /// <param name="lessD">The less d.</param>
        /// <param name="lessI">The less i.</param>
        /// <param name="lessS">The less s.</param>
        /// <param name="lessC">The less c.</param>
        /// <returns>returns a AssessmentResults object</returns>
        static public AssessmentResults Score(int moreN, int moreD, int moreI, int moreS, int moreC, int lessN, int lessD, int lessI, int lessS, int lessC)
        {
            // Holds the most and least totals for each Letter attribute
            Dictionary <string, int[]> results = new Dictionary <string, int[]>();

            results["S"] = new int[] { 0, 0 };
            results["C"] = new int[] { 0, 0 };
            results["I"] = new int[] { 0, 0 };
            results["N"] = new int[] { 0, 0 }; // This is intentionally not used after most/least totalling (foreach loop below). Placebo questions?
            results["D"] = new int[] { 0, 0 };

            results["S"][0] = moreS;
            results["S"][1] = lessS;
            results["C"][0] = moreC;
            results["C"][1] = lessC;
            results["I"][0] = moreI;
            results["I"][1] = lessI;
            results["N"][0] = moreN;
            results["N"][1] = lessN;
            results["D"][0] = moreD;
            results["D"][1] = lessD;

            int nbS = 27 - results["S"][1];
            int nbC = 26 - results["C"][1];
            int nbI = 26 - results["I"][1];
            int nbD = 27 - results["D"][1];

            decimal decX = results["S"][0] + results["C"][0] + results["I"][0] + results["D"][0];
            decimal decY = nbS + nbC + nbI + nbD;

            AssessmentResults testResults = new AssessmentResults();

            if (decX > 0 && decY > 0)
            {
                testResults.AdaptiveBehaviorS = Convert.ToInt32((results["S"][0] / decX * 100));
                testResults.AdaptiveBehaviorC = Convert.ToInt32((results["C"][0] / decX * 100));
                testResults.AdaptiveBehaviorI = Convert.ToInt32((results["I"][0] / decX * 100));
                testResults.AdaptiveBehaviorD = Convert.ToInt32((results["D"][0] / decX * 100));

                testResults.NaturalBehaviorS = Convert.ToInt32((nbS / decY * 100));
                testResults.NaturalBehaviorC = Convert.ToInt32((nbC / decY * 100));
                testResults.NaturalBehaviorI = Convert.ToInt32((nbI / decY * 100));
                testResults.NaturalBehaviorD = Convert.ToInt32((nbD / decY * 100));
                testResults.LastSaveDate     = RockDateTime.Now;

                // Determine the Natural personality type
                testResults.PersonalityType = DetermineNaturalPersonalityType(testResults);
            }

            return(testResults);
        }
Пример #8
0
        /// <summary>
        /// Scores the test.
        /// </summary>
        /// <param name="assessmentResponse">The assessment response.</param>
        /// <returns>returns a AssessmentResults object</returns>
        static public AssessmentResults GetResult(Dictionary <string, int> assessmentResponse)
        {
            AssessmentResults testResults = new AssessmentResults
            {
                SpiritualGiftScores = new List <SpiritualGiftScore>(),
                LastSaveDate        = RockDateTime.Now
            };

            var zScores = new Dictionary <Guid, double>();

            foreach (var spiritualGiftDefinedValue in constructData.Keys)
            {
                var    spiritualGift = constructData[spiritualGiftDefinedValue];
                double totalResponse = 0;
                foreach (var construct in spiritualGift.Constructs)
                {
                    if (assessmentResponse.ContainsKey(construct))
                    {
                        totalResponse += assessmentResponse[construct];
                    }
                }

                var zScore = Math.Round((totalResponse - spiritualGift.Mean) / spiritualGift.StandardDeviation, 1);
                zScores.AddOrReplace(spiritualGiftDefinedValue, zScore);

                zScoreToPercentage.TryGetValue(zScore, out double percentage);

                testResults.SpiritualGiftScores.Add(new SpiritualGiftScore
                {
                    DefinedValueGuid  = spiritualGiftDefinedValue,
                    SpiritualGiftName = DefinedValueCache.Get(spiritualGiftDefinedValue)?.Value,
                    ZScore            = zScore,
                    Percentage        = percentage
                });
            }

            // Sort the scores from highest to lowest
            var orderedZScores = zScores.OrderByDescending(s => s.Value);

            // The DominantGifts should be populated based on the top 5 scores
            testResults.DominantGifts = orderedZScores.Take(5).Select(s => s.Key).ToList();

            // The SupportiveGifts should be populated based on a minimum score value, after bypassing the top 5
            testResults.SupportiveGifts = orderedZScores.Skip(5).Where(s => s.Value >= minSupportiveGiftScore).Select(s => s.Key).ToList();

            // The OtherGifts should be populated by all that remain
            testResults.OtherGifts = orderedZScores.Skip(5).Where(s => s.Value < minSupportiveGiftScore).Select(s => s.Key).ToList();

            return(testResults);
        }
Пример #9
0
        /// <summary>
        /// Scores the test.
        /// </summary>
        /// <param name="assessmentResponse">The assessment response.</param>
        /// <returns>returns a AssessmentResults object</returns>
        static public AssessmentResults GetResult(Dictionary <string, int> assessmentResponse)
        {
            AssessmentResults testResults = new AssessmentResults();
            var zScores         = new Dictionary <Guid, double>();
            var assessmentDatas = new Dictionary <Guid, Dictionary <string, string> >();
            var grandTotal      = assessmentResponse.Sum(a => Convert.ToDouble(a.Value));

            foreach (var conflictProfileDefinedValue in constructData.Keys)
            {
                var    conflictProfile = constructData[conflictProfileDefinedValue];
                double totalResponse   = 0;
                var    assessmentData  = new Dictionary <string, string>();
                foreach (var construct in conflictProfile.Constructs)
                {
                    if (assessmentResponse.ContainsKey(construct))
                    {
                        totalResponse += assessmentResponse[construct];
                        assessmentData.AddOrReplace(construct, assessmentResponse[construct].ToString());
                    }
                }

                var relativeProportion = (totalResponse / grandTotal) * 100;
                var zScore             = Math.Round((relativeProportion - conflictProfile.Mean) / conflictProfile.StandardDeviation, 1);
                zScores.AddOrReplace(conflictProfileDefinedValue, zScore);
                assessmentDatas.AddOrReplace(conflictProfileDefinedValue, assessmentData);
            }

            testResults.AssessmentData              = new AssessmentData();
            testResults.AssessmentData.Winning      = assessmentDatas[SystemGuid.DefinedValue.CONFLICT_PROFILE_WINNING.AsGuid()];
            testResults.AssessmentData.Resolving    = assessmentDatas[SystemGuid.DefinedValue.CONFLICT_PROFILE_RESOLVING.AsGuid()];
            testResults.AssessmentData.Compromising = assessmentDatas[SystemGuid.DefinedValue.CONFLICT_PROFILE_COMPROMISING.AsGuid()];
            testResults.AssessmentData.Avoiding     = assessmentDatas[SystemGuid.DefinedValue.CONFLICT_PROFILE_AVOIDING.AsGuid()];
            testResults.AssessmentData.Yielding     = assessmentDatas[SystemGuid.DefinedValue.CONFLICT_PROFILE_YEILDING.AsGuid()];

            testResults.ModeWinningScore      = GetPercentFromScore(zScores[SystemGuid.DefinedValue.CONFLICT_PROFILE_WINNING.AsGuid()]);
            testResults.ModeResolvingScore    = GetPercentFromScore(zScores[SystemGuid.DefinedValue.CONFLICT_PROFILE_RESOLVING.AsGuid()]);
            testResults.ModeCompromisingScore = GetPercentFromScore(zScores[SystemGuid.DefinedValue.CONFLICT_PROFILE_COMPROMISING.AsGuid()]);
            testResults.ModeAvoidingScore     = GetPercentFromScore(zScores[SystemGuid.DefinedValue.CONFLICT_PROFILE_AVOIDING.AsGuid()]);
            testResults.ModeYieldingScore     = GetPercentFromScore(zScores[SystemGuid.DefinedValue.CONFLICT_PROFILE_YEILDING.AsGuid()]);

            var totalPerc = testResults.ModeWinningScore + testResults.ModeResolvingScore
                            + testResults.ModeCompromisingScore + testResults.ModeAvoidingScore
                            + testResults.ModeYieldingScore;

            // Compute the optional "Conflict Engagement Profile" scores
            testResults.EngagementSolvingScore       = Math.Round((testResults.ModeResolvingScore + testResults.ModeCompromisingScore) * 100 / totalPerc, 1);
            testResults.EngagementAccommodatingScore = Math.Round((testResults.ModeAvoidingScore + testResults.ModeYieldingScore) * 100 / totalPerc, 1);
            testResults.EngagementWinningScore       = Math.Round(testResults.ModeWinningScore * 100 / totalPerc, 1);
            return(testResults);
        }
Пример #10
0
        /// <summary>
        /// Loads and returns saved Assessment scores for the Person.
        /// </summary>
        /// <param name="person">The Person to get the scores for.</param>
        /// <returns>AssessmentResults</returns>
        static public AssessmentResults LoadSavedAssessmentResults(Person person)
        {
            AssessmentResults savedScores = new AssessmentResults();
            var discAttributes            = person.Attributes.Values.Where(a => a.Categories.Any(c => c.Name == "DISC")).Select(a => a.Name);

            foreach (string attrib in discAttributes)
            {
                switch (attrib)
                {
                case "AdaptiveD":
                    savedScores.AdaptiveBehaviorD = AttributeValueLookup(person, attrib);
                    break;

                case "AdaptiveI":
                    savedScores.AdaptiveBehaviorI = AttributeValueLookup(person, attrib);
                    break;

                case "AdaptiveS":
                    savedScores.AdaptiveBehaviorS = AttributeValueLookup(person, attrib);
                    break;

                case "AdaptiveC":
                    savedScores.AdaptiveBehaviorC = AttributeValueLookup(person, attrib);
                    break;

                case "NaturalD":
                    savedScores.NaturalBehaviorD = AttributeValueLookup(person, attrib);
                    break;

                case "NaturalI":
                    savedScores.NaturalBehaviorI = AttributeValueLookup(person, attrib);
                    break;

                case "NaturalS":
                    savedScores.NaturalBehaviorS = AttributeValueLookup(person, attrib);
                    break;

                case "NaturalC":
                    savedScores.NaturalBehaviorC = AttributeValueLookup(person, attrib);
                    break;

                case "LastSaveDate":
                    DateTime lastAssessmentDate = DateTime.MinValue;
                    bool     bCatch             = DateTime.TryParse(person.AttributeValues[attrib][0].Value, out lastAssessmentDate);
                    savedScores.LastSaveDate = lastAssessmentDate;
                    break;
                }
            }
            return(savedScores);
        }
Пример #11
0
        /// <summary>
        /// Saves Assessment results to a Person's PersonProperties
        /// </summary>
        /// <param name="person">The person.</param>
        /// <param name="assessmentResults">The assessment results.</param>
        static public void SaveAssessmentResults(Person person, AssessmentResults assessmentResults)
        {
            person.LoadAttributes();

            person.SetAttributeValue(ATTRIBUTE_MODE_WINNING, assessmentResults.ModeWinningScore);
            person.SetAttributeValue(ATTRIBUTE_MODE_RESOLVING, assessmentResults.ModeResolvingScore);
            person.SetAttributeValue(ATTRIBUTE_MODE_COMPROMISING, assessmentResults.ModeCompromisingScore);
            person.SetAttributeValue(ATTRIBUTE_MODE_AVOIDING, assessmentResults.ModeAvoidingScore);
            person.SetAttributeValue(ATTRIBUTE_MODE_YEILDING, assessmentResults.ModeYieldingScore);
            person.SetAttributeValue(ATTRIBUTE_THEME_ACCOMMODATING, assessmentResults.EngagementAccommodatingScore);
            person.SetAttributeValue(ATTRIBUTE_THEME_WINNING, assessmentResults.EngagementWinningScore);
            person.SetAttributeValue(ATTRIBUTE_THEME_SOLVING, assessmentResults.EngagementSolvingScore);
            person.SaveAttributeValues();
        }
Пример #12
0
        /// <summary>
        /// Loads and returns saved Assessment scores for the Person.
        /// </summary>
        /// <param name="person">The Person to get the scores for.</param>
        /// <returns>AssessmentResults</returns>
        static public AssessmentResults LoadSavedAssessmentResults(Person person)
        {
            AssessmentResults savedScores = new AssessmentResults();

            person.LoadAttributes();
            savedScores.SelfAwareConstruct        = person.GetAttributeValue(ATTRIBUTE_EQ_CONSTRUCTS_SELF_AWARENESS).AsDecimal();
            savedScores.SelfRegulatingConstruct   = person.GetAttributeValue(ATTRIBUTE_EQ_CONSTRUCTS_SELF_REGULATING).AsDecimal();
            savedScores.OtherAwarenessContruct    = person.GetAttributeValue(ATTRIBUTE_EQ_CONSTRUCTS_OTHERS_AWARENESS).AsDecimal();
            savedScores.OthersRegulatingConstruct = person.GetAttributeValue(ATTRIBUTE_EQ_CONSTRUCTS_OTHERS_REGULATING).AsDecimal();
            savedScores.EQ_ProblemSolvingScale    = person.GetAttributeValue(ATTRIBUTE_EQ_SCALES_PROBLEM_SOLVING).AsDecimal();
            savedScores.EQ_UnderStressScale       = person.GetAttributeValue(ATTRIBUTE_EQ_SCALES_UNDER_STRESS).AsDecimal();

            return(savedScores);
        }
Пример #13
0
        /// <summary>
        /// Loads and returns saved Assessment scores for the Person.
        /// </summary>
        /// <param name="person">The Person to get the scores for.</param>
        /// <returns>AssessmentResults</returns>
        static public AssessmentResults LoadSavedAssessmentResults(Person person)
        {
            AssessmentResults savedScores = new AssessmentResults();

            person.LoadAttributes();

            var motivatorThemeScores = new Dictionary <DefinedValueCache, decimal>();
            var motivatorScores      = new Dictionary <DefinedValueCache, decimal>();

            var motivatorThemeTypes = DefinedTypeCache.Get(SystemGuid.DefinedType.MOTIVATOR_THEME_TYPE.AsGuid());

            foreach (var motivatorThemeType in motivatorThemeTypes.DefinedValues)
            {
                var scoreKey = motivatorThemeType.GetAttributeValue("AttributeScoreKey");
                motivatorThemeScores.Add(motivatorThemeType, person.GetAttributeValue(scoreKey).AsDecimal());
            }

            savedScores.MotivatorThemeScores = motivatorThemeScores
                                               .OrderByDescending(a => a.Value)
                                               .Select(a => new MotivatorScore()
            {
                DefinedValue = a.Key,
                Value        = a.Value
            })
                                               .ToList();

            var motivatorTypes = DefinedTypeCache.Get(SystemGuid.DefinedType.MOTIVATOR_TYPE.AsGuid());

            foreach (var motivatorType in motivatorTypes.DefinedValues)
            {
                var scoreKey = motivatorType.GetAttributeValue("AttributeScoreKey");
                motivatorScores.Add(motivatorType, person.GetAttributeValue(scoreKey).AsDecimal());
            }


            savedScores.MotivatorScores = motivatorScores
                                          .OrderByDescending(a => a.Value)
                                          .Select(a => new MotivatorScore()
            {
                DefinedValue = a.Key,
                Value        = a.Value
            })
                                          .ToList();

            savedScores.TopFiveMotivatorScores = savedScores.MotivatorScores.Take(5).ToList();
            savedScores.GrowthScore            = person.GetAttributeValue(ATTRIBUTE_MOTIVATOR_GROWTHPROPENSITY).AsDecimal();

            return(savedScores);
        }
Пример #14
0
        /// <summary>
        /// Determines the natural personality type. This is the highest score and the next highest
        /// if the score is over the midline (we're definining midline as over 24).
        /// </summary>
        /// <param name="results">The AssessmentResults</param>
        /// <returns></returns>
        public static string DetermineNaturalPersonalityType(AssessmentResults results)
        {
            var personalityType = string.Empty;
            Dictionary <string, int> dictionary = new Dictionary <string, int>();

            dictionary["D"] = results.NaturalBehaviorD;
            dictionary["I"] = results.NaturalBehaviorI;
            dictionary["S"] = results.NaturalBehaviorS;
            dictionary["C"] = results.NaturalBehaviorC;

            List <KeyValuePair <string, int> > list = dictionary.ToList();

            list.Sort((x, y) => y.Value.CompareTo(x.Value));
            personalityType = string.Format("{0}{1}", list[0].Key, (list[1].Value > 50) ? list[1].Key : string.Empty);
            return(personalityType);
        }
Пример #15
0
        /// <summary>
        /// Loads and returns saved Assessment scores for the Person.
        /// </summary>
        /// <param name="person">The Person to get the scores for.</param>
        /// <returns>AssessmentResults</returns>
        static public AssessmentResults LoadSavedAssessmentResults(Person person)
        {
            AssessmentResults savedScores = new AssessmentResults();

            person.LoadAttributes();
            savedScores.ModeWinningScore             = person.GetAttributeValue(ATTRIBUTE_MODE_WINNING).AsDecimal();
            savedScores.ModeResolvingScore           = person.GetAttributeValue(ATTRIBUTE_MODE_RESOLVING).AsDecimal();
            savedScores.ModeCompromisingScore        = person.GetAttributeValue(ATTRIBUTE_MODE_COMPROMISING).AsDecimal();
            savedScores.ModeAvoidingScore            = person.GetAttributeValue(ATTRIBUTE_MODE_AVOIDING).AsDecimal();
            savedScores.ModeYieldingScore            = person.GetAttributeValue(ATTRIBUTE_MODE_YEILDING).AsDecimal();
            savedScores.EngagementAccommodatingScore = person.GetAttributeValue(ATTRIBUTE_THEME_ACCOMMODATING).AsDecimal();
            savedScores.EngagementWinningScore       = person.GetAttributeValue(ATTRIBUTE_THEME_WINNING).AsDecimal();
            savedScores.EngagementSolvingScore       = person.GetAttributeValue(ATTRIBUTE_THEME_SOLVING).AsDecimal();

            return(savedScores);
        }
Пример #16
0
        /// <summary>
        /// Description for Matrix Summary
        /// </summary>
        /// <param name="groupId"></param>
        /// <param name="clientId"></param>
        /// <returns></returns>
        ///
        public List <AssessmentResults> GetDescriptionsummary(int groupId, Guid agencyid)
        {
            List <AssessmentResults> resultList = new List <AssessmentResults>();
            AssessmentResults        results    = null;

            try
            {
                string  queryCommand = "GETDESCRIPTIONSUMMARY";
                DataSet ds           = new DataSet();
                command.Connection  = Connection;
                command.CommandText = "USP_MatrixSummary";
                command.Parameters.Clear();
                command.Parameters.AddWithValue("@AssessmentGroupId", groupId);
                //  command.Parameters.AddWithValue("@ClientId", clientId);
                command.Parameters.AddWithValue("@AgencyId", agencyid);
                command.Parameters.AddWithValue("@Command", queryCommand);
                command.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter da = new SqlDataAdapter(command);
                da.Fill(ds);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        results = new AssessmentResults();
                        results.AssessmentResultId = Convert.ToInt64(dr["AssessmentResultId"]);
                        results.Description        = dr["Description"].ToString();
                        results.MatrixValue        = Convert.ToInt64(dr["MatrixValue"]);
                        // results.MatrixId = (dr["AssessmentNumber"].ToString() == "") ? 0 : Convert.ToInt32(dr["AssessmentNumber"]);
                        resultList.Add(results);
                    }
                }
            }
            catch (Exception ex)
            {
                clsError.WriteException(ex);
            }
            finally
            {
                Connection.Close();
                command.Dispose();
            }
            return(resultList);
        }
Пример #17
0
        /// <summary>
        /// Scores the test.
        /// </summary>
        /// <param name="assessmentResponse">The assessment response.</param>
        /// <returns>returns a AssessmentResults object</returns>
        static public AssessmentResults GetResult(Dictionary <string, int> assessmentResponse)
        {
            AssessmentResults testResults = new AssessmentResults();
            var zScores         = new Dictionary <Guid, double>();
            var assessmentDatas = new Dictionary <Guid, Dictionary <string, string> >();
            var grandTotal      = assessmentResponse.Sum(a => Convert.ToDouble(a.Value));

            foreach (var conflictProfileDefinedValue in constructData.Keys)
            {
                var    conflictProfile = constructData[conflictProfileDefinedValue];
                double totalResponse   = 0;
                var    assessmentData  = new Dictionary <string, string>();
                foreach (var construct in conflictProfile.Constructs)
                {
                    if (assessmentResponse.ContainsKey(construct))
                    {
                        totalResponse += assessmentResponse[construct];
                        assessmentData.AddOrReplace(construct, assessmentResponse[construct].ToString());
                    }
                }

                var zScore = Math.Round((totalResponse - conflictProfile.Mean) / conflictProfile.StandardDeviation, 1);
                zScores.AddOrReplace(conflictProfileDefinedValue, zScore);
                assessmentDatas.AddOrReplace(conflictProfileDefinedValue, assessmentData);
            }

            testResults.AssessmentData                     = new AssessmentData();
            testResults.AssessmentData.SelfAware           = assessmentDatas[SystemGuid.Attribute.PERSON_EQ_CONSTRUCTS_SELF_AWARENESS.AsGuid()];
            testResults.AssessmentData.SelfRegulate        = assessmentDatas[SystemGuid.Attribute.PERSON_EQ_CONSTRUCTS_SELF_REGULATING.AsGuid()];
            testResults.AssessmentData.OthersAware         = assessmentDatas[SystemGuid.Attribute.PERSON_EQ_CONSTRUCTS_OTHERS_AWARENESS.AsGuid()];
            testResults.AssessmentData.OthersRegulate      = assessmentDatas[SystemGuid.Attribute.PERSON_EQ_CONSTRUCTS_OTHERS_REGULATING.AsGuid()];
            testResults.AssessmentData.EQ_InProblemSolving = assessmentDatas[SystemGuid.Attribute.PERSON_EQ_SCALES_PROBLEM_SOLVING.AsGuid()];
            testResults.AssessmentData.EQ_UnderStress      = assessmentDatas[SystemGuid.Attribute.PERSON_EQ_SCALES_UNDER_STRESS.AsGuid()];

            testResults.SelfAwareConstruct        = GetPercentFromScore(zScores[SystemGuid.Attribute.PERSON_EQ_CONSTRUCTS_SELF_AWARENESS.AsGuid()]);
            testResults.SelfRegulatingConstruct   = GetPercentFromScore(zScores[SystemGuid.Attribute.PERSON_EQ_CONSTRUCTS_SELF_REGULATING.AsGuid()]);
            testResults.OtherAwarenessContruct    = GetPercentFromScore(zScores[SystemGuid.Attribute.PERSON_EQ_CONSTRUCTS_OTHERS_AWARENESS.AsGuid()]);
            testResults.OthersRegulatingConstruct = GetPercentFromScore(zScores[SystemGuid.Attribute.PERSON_EQ_CONSTRUCTS_OTHERS_REGULATING.AsGuid()]);
            testResults.EQ_ProblemSolvingScale    = GetPercentFromScore(zScores[SystemGuid.Attribute.PERSON_EQ_SCALES_PROBLEM_SOLVING.AsGuid()]);
            testResults.EQ_UnderStressScale       = GetPercentFromScore(zScores[SystemGuid.Attribute.PERSON_EQ_SCALES_UNDER_STRESS.AsGuid()]);
            return(testResults);
        }
Пример #18
0
        /// <summary>
        /// Scores the test.
        /// </summary>
        /// <param name="moreD">The more d.</param>
        /// <param name="moreI">The more i.</param>
        /// <param name="moreS">The more s.</param>
        /// <param name="moreC">The more c.</param>
        /// <param name="lessD">The less d.</param>
        /// <param name="lessI">The less i.</param>
        /// <param name="lessS">The less s.</param>
        /// <param name="lessC">The less c.</param>
        /// <returns>
        /// returns a AssessmentResults object
        /// </returns>
        static public AssessmentResults Score(int moreD, int moreI, int moreS, int moreC, int lessD, int lessI, int lessS, int lessC)
        {
            AssessmentResults testResults = new AssessmentResults();

            testResults.AdaptiveBehaviorS = GetAdaptiveScoreValue(AttributeKeys.AdaptiveS, moreS);
            testResults.AdaptiveBehaviorC = GetAdaptiveScoreValue(AttributeKeys.AdaptiveC, moreC);
            testResults.AdaptiveBehaviorI = GetAdaptiveScoreValue(AttributeKeys.AdaptiveI, moreI);
            testResults.AdaptiveBehaviorD = GetAdaptiveScoreValue(AttributeKeys.AdaptiveD, moreD);

            testResults.NaturalBehaviorS = GetNaturalScoreValue(AttributeKeys.NaturalS, lessS);
            testResults.NaturalBehaviorC = GetNaturalScoreValue(AttributeKeys.NaturalC, lessC);
            testResults.NaturalBehaviorI = GetNaturalScoreValue(AttributeKeys.NaturalI, lessI);
            testResults.NaturalBehaviorD = GetNaturalScoreValue(AttributeKeys.NaturalD, lessD);
            testResults.LastSaveDate     = RockDateTime.Now;

            // Determine the Natural personality type
            testResults.PersonalityType = DetermineNaturalPersonalityType(testResults);

            return(testResults);
        }
Пример #19
0
        /// <summary>
        /// Saves Assessment results to a Person's PersonProperties
        /// </summary>
        /// <param name="person">The person.</param>
        /// <param name="assessmentResults">The assessment results.</param>
        static public void SaveAssessmentResults(Person person, AssessmentResults assessmentResults)
        {
            person.LoadAttributes();

            var topFiveMotivatorScores = assessmentResults.MotivatorScores.OrderByDescending(x => x.Value).Take(5).Select(x => x.DefinedValue.Guid).ToList().AsDelimited(",");

            person.SetAttributeValue(ATTRIBUTE_MOTIVATOR_TOP_5_MOTIVATORS, topFiveMotivatorScores);

            //var motivatorTypes = DefinedTypeCache.Get( SystemGuid.DefinedType.MOTIVATOR_TYPE.AsGuid() );
            foreach (var motivatorScore in assessmentResults.MotivatorScores)
            {
                var scoreKey = motivatorScore.DefinedValue.GetAttributeValue("AttributeScoreKey");
                person.SetAttributeValue(scoreKey, motivatorScore.Value);
            }

            //var motivatorClusterTypes = DefinedTypeCache.Get( SystemGuid.DefinedType.MOTIVATOR_THEME_TYPE.AsGuid() );
            foreach (var motivatorThemeScore in assessmentResults.MotivatorThemeScores)
            {
                var scoreKey = motivatorThemeScore.DefinedValue.GetAttributeValue("AttributeScoreKey");
                person.SetAttributeValue(scoreKey, motivatorThemeScore.Value);
            }

            person.SaveAttributeValues();
        }
Пример #20
0
        /// <summary>
        /// Loads and returns saved Assessment scores for the Person.
        /// </summary>
        /// <param name="person">The Person to get the scores for.</param>
        /// <returns>AssessmentResults</returns>
        static public AssessmentResults LoadSavedAssessmentResults( Person person )
        {
            AssessmentResults savedScores = new AssessmentResults();

            person.LoadAttributes();

            var discAttributes = person.Attributes.Values.Where( a => a.Categories.Any( c => c.Guid == new Guid( "0B187C81-2106-4875-82B6-FBF1277AE23B" ) ) ).Select( a => a.Key );

            foreach ( string attrib in discAttributes )
            {
                switch ( attrib )
                {
                    case AttributeKeys.AdaptiveD:
                        savedScores.AdaptiveBehaviorD = AttributeValueLookup( person, attrib );
                        break;
                    case AttributeKeys.AdaptiveI:
                        savedScores.AdaptiveBehaviorI = AttributeValueLookup( person, attrib );
                        break;
                    case AttributeKeys.AdaptiveS:
                        savedScores.AdaptiveBehaviorS = AttributeValueLookup( person, attrib );
                        break;
                    case AttributeKeys.AdaptiveC:
                        savedScores.AdaptiveBehaviorC = AttributeValueLookup( person, attrib );
                        break;
                    case AttributeKeys.NaturalD:
                        savedScores.NaturalBehaviorD = AttributeValueLookup( person, attrib );
                        break;
                    case AttributeKeys.NaturalI:
                        savedScores.NaturalBehaviorI = AttributeValueLookup( person, attrib );
                        break;
                    case AttributeKeys.NaturalS:
                        savedScores.NaturalBehaviorS = AttributeValueLookup( person, attrib );
                        break;
                    case AttributeKeys.NaturalC:
                        savedScores.NaturalBehaviorC = AttributeValueLookup( person, attrib );
                        break;
                    case AttributeKeys.PersonalityType:
                        savedScores.PersonalityType = person.AttributeValues[attrib].Value;
                        break;
                    case AttributeKeys.LastSaveDate:
                        DateTime lastAssessmentDate = DateTime.MinValue;
                        bool bCatch = DateTime.TryParse( person.AttributeValues[attrib].Value, out lastAssessmentDate );
                        savedScores.LastSaveDate = lastAssessmentDate;
                        break;
                }
            }
            return savedScores;
        }
Пример #21
0
        /// <summary>
        /// Determines the natural personality type. This is the highest score and the next highest 
        /// if the score is over the midline (we're definining midline as over 24).
        /// </summary>
        /// <param name="results">The AssessmentResults</param>
        /// <returns></returns>
        public static string DetermineNaturalPersonalityType( AssessmentResults results )
        {
            var personalityType = string.Empty;
            Dictionary<string, int> dictionary = new Dictionary<string, int>();
            dictionary["D"] = results.NaturalBehaviorD;
            dictionary["I"] = results.NaturalBehaviorI;
            dictionary["S"] = results.NaturalBehaviorS;
            dictionary["C"] = results.NaturalBehaviorC;

            List<KeyValuePair<string, int>> list = dictionary.ToList();
            list.Sort( ( x, y ) => y.Value.CompareTo( x.Value ) );
            personalityType = string.Format( "{0}{1}", list[0].Key, ( list[1].Value > 24 ) ? list[1].Key : string.Empty );
            return personalityType;
        }
Пример #22
0
        /// <summary>
        /// Scores the test.
        /// </summary>
        /// <param name="moreN">The more n.</param>
        /// <param name="moreD">The more d.</param>
        /// <param name="moreI">The more i.</param>
        /// <param name="moreS">The more s.</param>
        /// <param name="moreC">The more c.</param>
        /// <param name="lessN">The less n.</param>
        /// <param name="lessD">The less d.</param>
        /// <param name="lessI">The less i.</param>
        /// <param name="lessS">The less s.</param>
        /// <param name="lessC">The less c.</param>
        /// <returns>returns a AssessmentResults object</returns>
        static public AssessmentResults Score( int moreN, int moreD, int moreI, int moreS, int moreC, int lessN, int lessD, int lessI, int lessS, int lessC )
        {
            // Holds the most and least totals for each Letter attribute
            Dictionary<string, int[]> results = new Dictionary<string, int[]>();
            results["S"] = new int[] { 0, 0 };
            results["C"] = new int[] { 0, 0 };
            results["I"] = new int[] { 0, 0 };
            results["N"] = new int[] { 0, 0 }; // This is intentionally not used after most/least totalling (foreach loop below). Placebo questions?
            results["D"] = new int[] { 0, 0 };

            results["S"][0] = moreS;
            results["S"][1] = lessS;
            results["C"][0] = moreC;
            results["C"][1] = lessC;
            results["I"][0] = moreI;
            results["I"][1] = lessI;
            results["N"][0] = moreN;
            results["N"][1] = lessN;
            results["D"][0] = moreD;
            results["D"][1] = lessD;

            int nbS = 27 - results["S"][1];
            int nbC = 26 - results["C"][1];
            int nbI = 26 - results["I"][1];
            int nbD = 27 - results["D"][1];

            decimal decX = results["S"][0] + results["C"][0] + results["I"][0] + results["D"][0];
            decimal decY = nbS + nbC + nbI + nbD;

            AssessmentResults testResults = new AssessmentResults();
            if ( decX > 0 && decY > 0 )
            {
                testResults.AdaptiveBehaviorS = Convert.ToInt32( ( results["S"][0] / decX * 100 ) );
                testResults.AdaptiveBehaviorC = Convert.ToInt32( ( results["C"][0] / decX * 100 ) );
                testResults.AdaptiveBehaviorI = Convert.ToInt32( ( results["I"][0] / decX * 100 ) );
                testResults.AdaptiveBehaviorD = Convert.ToInt32( ( results["D"][0] / decX * 100 ) );

                testResults.NaturalBehaviorS = Convert.ToInt32( ( nbS / decY * 100 ) );
                testResults.NaturalBehaviorC = Convert.ToInt32( ( nbC / decY * 100 ) );
                testResults.NaturalBehaviorI = Convert.ToInt32( ( nbI / decY * 100 ) );
                testResults.NaturalBehaviorD = Convert.ToInt32( ( nbD / decY * 100 ) );
                testResults.LastSaveDate = RockDateTime.Now;

                // Determine the Natural personality type
                testResults.PersonalityType = DetermineNaturalPersonalityType( testResults );
            }

            return testResults;
        }
Пример #23
0
        /// <summary>
        /// Scores the test.
        /// </summary>
        /// <param name="selectedResponseIDs">a List of ResponseIDs to be scored.</param>
        /// <returns>a struct TestResults object with final scores.</returns>
        public static AssessmentResults Score(List<string> selectedResponseIDs)
        {
            List<DiscService.ResponseItem> responseList = DiscService.GetResponses();

            // Holds the most and least totals for each Letter attribute
            Dictionary<string, int[]> results = new Dictionary<string, int[]>();
            results["S"] = new int[] { 0, 0 };
            results["C"] = new int[] { 0, 0 };
            results["I"] = new int[] { 0, 0 };
            results["N"] = new int[] { 0, 0 }; // This is intentionally not used after most/least totalling (foreach loop below). Placebo questions?
            results["D"] = new int[] { 0, 0 };

            foreach (string selectedResponseID in selectedResponseIDs)
            {
                string responseID = selectedResponseID.Substring(0, 3);
                string MorL = selectedResponseID.Substring(3, 1);

                DiscService.ResponseItem selectedResponse = responseList.Find(
                    delegate(DiscService.ResponseItem responseItem)
                    {
                        return responseItem.ResponseID == responseID;
                    }
                );

                if (MorL == "m")
                    results[selectedResponse.MostScore][0]++;
                else
                    results[selectedResponse.LeastScore][1]++;
            }

            int nbS = 27 - results["S"][1];
            int nbC = 26 - results["C"][1];
            int nbI = 26 - results["I"][1];
            int nbD = 27 - results["D"][1];

            decimal decX = results["S"][0] + results["C"][0] + results["I"][0] + results["D"][0];
            decimal decY = nbS + nbC + nbI + nbD;

            AssessmentResults testResults = new AssessmentResults();
            if (decX > 0 && decY > 0)
            {
                testResults.AdaptiveBehaviorS = Convert.ToInt32((results["S"][0] / decX * 100));
                testResults.AdaptiveBehaviorC = Convert.ToInt32((results["C"][0] / decX * 100));
                testResults.AdaptiveBehaviorI = Convert.ToInt32((results["I"][0] / decX * 100));
                testResults.AdaptiveBehaviorD = Convert.ToInt32((results["D"][0] / decX * 100));

                testResults.NaturalBehaviorS = Convert.ToInt32((nbS / decY * 100));
                testResults.NaturalBehaviorC = Convert.ToInt32((nbC / decY * 100));
                testResults.NaturalBehaviorI = Convert.ToInt32((nbI / decY * 100));
                testResults.NaturalBehaviorD = Convert.ToInt32((nbD / decY * 100));
            }
            return testResults;
        }
Пример #24
0
        /// <summary>
        /// Loads and returns saved Assessment scores for the Person.
        /// </summary>
        /// <param name="person">The Person to get the scores for.</param>
        /// <returns>AssessmentResults</returns>
        public static AssessmentResults LoadSavedAssessmentResults(Person person)
        {
            AssessmentResults savedScores = new AssessmentResults();
            var discAttributes = person.AttributeCategories["DISC"];

            foreach (string attrib in discAttributes)
            {
                switch (attrib)
                {
                    case "AdaptiveD":
                        savedScores.AdaptiveBehaviorD = AttributeValueLookup(person, attrib);
                        break;
                    case "AdaptiveI":
                        savedScores.AdaptiveBehaviorI = AttributeValueLookup(person, attrib);
                        break;
                    case "AdaptiveS":
                        savedScores.AdaptiveBehaviorS = AttributeValueLookup(person, attrib);
                        break;
                    case "AdaptiveC":
                        savedScores.AdaptiveBehaviorC = AttributeValueLookup(person, attrib);
                        break;
                    case "NaturalD":
                        savedScores.NaturalBehaviorD = AttributeValueLookup(person, attrib);
                        break;
                    case "NaturalI":
                        savedScores.NaturalBehaviorI = AttributeValueLookup(person, attrib);
                        break;
                    case "NaturalS":
                        savedScores.NaturalBehaviorS = AttributeValueLookup(person, attrib);
                        break;
                    case "NaturalC":
                        savedScores.NaturalBehaviorC = AttributeValueLookup(person, attrib);
                        break;
                    case "LastSaveDate":
                        DateTime lastAssessmentDate = DateTime.MinValue;
                        bool bCatch = DateTime.TryParse(person.AttributeValues[attrib][0].Value, out lastAssessmentDate);
                        savedScores.LastSaveDate = lastAssessmentDate;
                        break;
                }
            }
            return savedScores;
        }
Пример #25
0
        /// <summary>
        /// Scores the test.
        /// </summary>
        /// <param name="assessmentResponse">The assessment response.</param>
        /// <returns>returns a AssessmentResults object</returns>
        public static AssessmentResults GetResult(Dictionary <string, int> assessmentResponse)
        {
            var assessmentResults   = new AssessmentResults();
            var motivatorThemeScore = new Dictionary <Guid, List <decimal> >();
            var motivatorScore      = new Dictionary <DefinedValueCache, decimal>();
            var grandTotal          = assessmentResponse.Sum(a => Convert.ToDouble(a.Value));

            foreach (var motivatorDefinedValueGuid in constructData.Keys)
            {
                var    conflictProfile = constructData[( Guid )motivatorDefinedValueGuid];
                double totalResponse   = 0;
                var    assessmentData  = new Dictionary <string, string>();
                foreach (var construct in questionData.Where((Func <MotivatorQuestion, bool>)(a => a.MotivatorId.AsGuid() == motivatorDefinedValueGuid)))
                {
                    if (assessmentResponse.ContainsKey(construct.Id))
                    {
                        totalResponse += assessmentResponse[construct.Id];
                        assessmentData.AddOrReplace(construct.Id, assessmentResponse[construct.Id].ToString());
                    }
                }

                var     zScore = Math.Round((totalResponse - conflictProfile.Mean) / conflictProfile.StandardDeviation, 1);
                decimal score  = GetPercentFromScore(zScore);

                // The Growth Propensity score needs to be stored in its own property for Lava merge.
                // Also needs to be a number and not a percentage.
                if (motivatorDefinedValueGuid == SystemGuid.DefinedValue.MOTIVATOR_GROWTH_PROPENSITY.AsGuid())
                {
                    assessmentResults.GrowthScore = score * 100;
                }

                var motivatorDefinedValue = DefinedValueCache.Get(( Guid )motivatorDefinedValueGuid);
                motivatorScore.AddOrReplace(motivatorDefinedValue, score);

                assessmentResults.AssessmentData.AddOrReplace(motivatorDefinedValue.Value, assessmentData);
            }

            assessmentResults.MotivatorScores = motivatorScore
                                                .OrderByDescending(a => a.Value)
                                                .Select(a => new MotivatorScore()
            {
                DefinedValue = a.Key,
                Value        = a.Value
            })
                                                .ToList();

            assessmentResults.TopFiveMotivatorScores = assessmentResults.MotivatorScores.Take(5).ToList();

            foreach (var m in assessmentResults.MotivatorScores)
            {
                var themeGuid = m.DefinedValue.GetAttributeValue("Theme").AsGuidOrNull();
                if (themeGuid.HasValue)
                {
                    if (!motivatorThemeScore.ContainsKey(themeGuid.Value))
                    {
                        motivatorThemeScore[themeGuid.Value] = new List <decimal>();
                    }

                    motivatorThemeScore[themeGuid.Value].Add(m.Value);
                }
            }

            foreach (var themeDefinedValueGuid in motivatorThemeScore.Keys)
            {
                var themeScore        = motivatorThemeScore[themeDefinedValueGuid].Sum() / motivatorThemeScore[themeDefinedValueGuid].Count();
                var themeDefinedValue = DefinedValueCache.Get(( Guid )themeDefinedValueGuid);
                assessmentResults.MotivatorThemeScores.Add(
                    new MotivatorScore()
                {
                    DefinedValue = themeDefinedValue,
                    Value        = themeScore
                });
            }

            return(assessmentResults);
        }
Пример #26
0
        /// <summary>
        /// Loads and returns saved Assessment scores for the Person.
        /// </summary>
        /// <param name="person">The Person to get the scores for.</param>
        /// <returns>AssessmentResults</returns>
        static public AssessmentResults LoadSavedAssessmentResults(Person person)
        {
            AssessmentResults savedScores = new AssessmentResults();

            person.LoadAttributes();

            var discAttributes = person.Attributes.Values.Where(a => a.Categories.Any(c => c.Guid == SystemGuid.Category.PERSON_ATTRIBUTES_DISC.AsGuid() || c.Guid == SystemGuid.Category.PERSON_ATTRIBUTES_PERSONALITY_ASSESSMENT_DATA.AsGuid())).Select(a => a.Key);

            foreach (string attrib in discAttributes)
            {
                switch (attrib)
                {
                case AttributeKeys.AdaptiveD:
                    savedScores.AdaptiveBehaviorD = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.AdaptiveI:
                    savedScores.AdaptiveBehaviorI = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.AdaptiveS:
                    savedScores.AdaptiveBehaviorS = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.AdaptiveC:
                    savedScores.AdaptiveBehaviorC = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.NaturalD:
                    savedScores.NaturalBehaviorD = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.NaturalI:
                    savedScores.NaturalBehaviorI = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.NaturalS:
                    savedScores.NaturalBehaviorS = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.NaturalC:
                    savedScores.NaturalBehaviorC = AttributeValueLookup(person, attrib);
                    break;

                case AttributeKeys.PersonalityType:
                    savedScores.PersonalityType = person.AttributeValues[attrib].Value;
                    break;

                case AttributeKeys.LastSaveDate:
                    DateTime lastAssessmentDate = DateTime.MinValue;
                    bool     bCatch             = DateTime.TryParse(person.AttributeValues[attrib].Value, out lastAssessmentDate);
                    savedScores.LastSaveDate = lastAssessmentDate;
                    break;

                case AttributeKeys.DISCProfile:
                    savedScores.DISCProfile = DefinedValueCache.Get(person.AttributeValues[attrib].Value);
                    break;
                }
            }
            return(savedScores);
        }