protected AbsResponseQuestion(Question question, List<int> checkIds)
 {
     if (checkIds.Count == 1)
     {
         isOneIdChecked = true;
     }
     QuestionID = question.QuestionID;
     ImageUrl = question.ImageUrl;
     Type = question.QuestionType.Type;
     LabelOrder = question.LabelOrder;
     QuestionTitle = question.QuestionTitle;
     NonChoiceScore = question.RealNoneChoiceScore().RoundTwo();
     var score = question.Answers.Sum(k => {
                 var point = k.RealScore();
                 if (!point.HasValue || point < 0) {
                     point = 0;
                 }
                 return point;
             });
     var calculateScore = (!score.HasValue || score < 0) ? 0 : score;
     ChoiceScore = calculateScore.RoundTwo();
     CheckedUserIds = checkIds;
     InTests = question.Test.UserInTests.FilterInTestsOnAttempSetting();
     InTestDetails = InTests.SelectMany(i => i.UserInTestDetails).Where(i => i.QuestionID == question.QuestionID);
 }
        public ResponseQuestionShort(Question question, List<int> checkIds)
            : base(question, checkIds)
        {
            var count = InTestDetails.Count();
            var point = InTestDetails.Sum(i => i.RealNonChoiceScore());
            decimal? averagePoint = decimal.Zero;
            if (count != 0) { averagePoint = point / count; }
            if (checkIds.Count == 0)
            {
                var id = checkIds.FirstOrDefault();
                if (id != 0)
                {
                    var detail = InTestDetails.FirstOrDefault(k => k.UserInTest.UserID == id);
                    if (detail != null)
                    {
                        averagePoint = detail.RealNonChoiceScore() ?? 0;
                    }
                }
            }
            var maxPoint = question.RealNoneChoiceScore().RoundTwo();
            _correctPraction = String.Format("{0:0.00} pt (of {1} pt)", averagePoint, maxPoint);

            if (checkIds.Count == 1)
            {
                var id = checkIds.FirstOrDefault();
                var detail = InTestDetails.FirstOrDefault(i => i.UserInTest.UserID == id);
                if (detail != null)
                {
                    _nonChoiceText = detail.AnswerContent;
                    _userNonScore = detail.RealNonChoiceScore();
                    _userNonScore = _userNonScore.RoundTwo();
                }
            }
        }