示例#1
0
        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;
        }
示例#3
0
        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);
        }