An individual response to a question.

Properties: QuestionNumber, ResponseNumber, ResponseID (QuestionNumber + ResponseNumber), ResponseText, MostScore, and LeastScore.

Ejemplo n.º 1
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);
        }