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