private void AddMissingDimensionsAndLevels(Models.AssessmentScoringResult result) { List <Models.DimensionResult> dimensions = result.DimensionResults.ToList(); foreach (var item in _dimensionCapabilityCount) { Models.DimensionResult dimension = null; if (dimensions.Any(i => i.DimensionId == item.Item1)) { dimension = dimensions.First(i => i.DimensionId == item.Item1); } else { dimension = new Models.DimensionResult() { DimensionId = item.Item1 }; dimensions.Add(dimension); } AddMissingLevels(dimension, item.Item2); } result.DimensionResults = dimensions; }
public Models.AssessmentScoringResult CalculateScore(IEnumerable<Models.AssessmentScoringItem> assessmentItems) { var result = new Models.AssessmentScoringResult(); if (assessmentItems == null) { result.DimensionResults = new List<Models.DimensionResult>(); } result.TotalUserCount = assessmentItems.GroupBy(i => i.UserId).Count(); var groupByDimension = assessmentItems.GroupBy(i => i.DimensionId); var dimensionResults = groupByDimension.Select(i => new Models.DimensionResult() { DimensionId = i.Key, ResponseCount = i.Count(), Levels = i.GroupBy(j => j.Level) .Select(k => new Models.LevelResult() { Level = k.Key, ResponseCount = k.Count(x=>x.CapabilityAchieved), TargetCapabilityCount = GetCapabilityCountForLevel(i.Key, k.Key), LevelAchieved = k.Count(x => x.CapabilityAchieved) == result.TotalUserCount * GetCapabilityCountForLevel(i.Key, k.Key) }) }); result.DimensionResults = dimensionResults; AddMissingDimensionsAndLevels(result); return result; }
public Models.AssessmentScoringResult CalculateScore(IEnumerable <Models.AssessmentScoringItem> assessmentItems) { var result = new Models.AssessmentScoringResult(); if (assessmentItems == null) { result.DimensionResults = new List <Models.DimensionResult>(); } result.TotalUserCount = assessmentItems.GroupBy(i => i.UserId).Count(); var groupByDimension = assessmentItems.GroupBy(i => i.DimensionId); var dimensionResults = groupByDimension.Select(i => new Models.DimensionResult() { DimensionId = i.Key, ResponseCount = i.Count(), Levels = i.GroupBy(j => j.Level) .Select(k => new Models.LevelResult() { Level = k.Key, ResponseCount = k.Count(x => x.CapabilityAchieved), TargetCapabilityCount = GetCapabilityCountForLevel(i.Key, k.Key), LevelAchieved = k.Count(x => x.CapabilityAchieved) == result.TotalUserCount * GetCapabilityCountForLevel(i.Key, k.Key) }) }); result.DimensionResults = dimensionResults; AddMissingDimensionsAndLevels(result); return(result); }