Ejemplo n.º 1
0
        List<Models.Assessment.Assessment> MapAssessmentList(List<QuestionAnswer> query)
        {
            var list = new List<Models.Assessment.Assessment>();

            Models.Assessment.Assessment model = null;
            Models.Assessment.Question q = null;
            Models.Assessment.Answer a = null;
            int totalPages = 0;

            long responseId = -1;
            int qNo = -1;
            int aNo = -1;

            bool next_r = false;
            bool next_q = false;
            bool next_a = false;

            foreach (var item in query.OrderBy(x => x.ResponseId).ThenBy(x => x.QuestionNo).ThenBy(x => x.AnswerNo))
            {
                next_r = item.ResponseId != responseId;
                next_q = item.QuestionNo != qNo || next_r;
                next_a = item.AnswerNo != aNo || next_q;

                responseId = item.ResponseId;
                qNo = item.QuestionNo;
                aNo = item.AnswerNo;

                if (next_r)
                {
                    model = new Models.Assessment.Assessment();
                    list.Add(model);

                    model.ResponseId = item.ResponseId;
                    model.DateCreated = item.DateCreated;
                    model.Score = item.ScoreOverall;

                    model.CampaignId = item.CampaignId;
                    model.CampaignGuid = item.CampaignGuid;
                    model.CampaignName = item.CampaignName;
                    model.CampaignDescription = item.CampaignDescription;

                    totalPages = 0;
                }

                if (next_q)
                {
                    q = new Models.Assessment.Question();
                    model.Questions.Add(q);

                    q.OrderNo = item.QuestionNo;
                    q.AssessmentQuestionId = item.AssessmentQuestionId;
                    q.Type = (Models.Assessment.AnswerType)item.AnswerType;
                    q.Section = item.Section;
                    q.PageNo = item.PageNo;
                    q.Text = item.QuestionText;
                    q.AltText = item.AltText;
                    q.ValidationText = item.ValidationText;
                    q.Optional = item.Optional;
                    q.QuestionGroup = item.QuestionGroup;
                    q.QuestionGroupId = item.QuestionGroupId;

                    q.Name = "Q" + q.OrderNo;
                }

                if (next_a)
                {
                    a = new Models.Assessment.Answer();
                    q.Answers.Add(a);
                    if (item.AlternativeAnswer) q.AltAnswer = a;

                    a.OrderNo = item.AnswerNo;
                    a.QuestionItemId = item.QuestionItemId;
                    a.AnswerChoiceId = item.AnswerChoiceId;
                    a.Type = (Models.Assessment.AnswerType)item.ChoiceType;
                    a.Text = item.AnswerText;
                    a.Value = item.Encrypted ? _aes.Decrypt(item.Value) : item.Value;
                    a.DefaultValue = item.Encrypted ? _aes.Decrypt(item.DefaultValue) : item.DefaultValue;
                    a.Encrypted = item.Encrypted;
                    a.AlternativeAnswer = item.AlternativeAnswer;
                    a.AltQuestionItemId = item.AltQuestionItemId;
                    a.Score = item.Score;

                    // to be used as HTML input element name
                    a.Name = string.Format("Q{0}-{1}", q.OrderNo, a.OrderNo);
                }

                if (item.PageNo.HasValue && item.PageNo > totalPages) totalPages = (int)item.PageNo;
                model.TotalPages = totalPages;
            }

            return list;
        }
Ejemplo n.º 2
0
        Models.Assessment.Assessment MapAssessment(List<QuestionAnswer> query)
        {
            var model = new Models.Assessment.Assessment();
            Models.Assessment.Question q = null;
            Models.Assessment.Answer a = null;
            int totalPages = 0;

            int qNo = -1;
            int aNo = -1;

            bool next_q = false;
            bool next_a = false;

            foreach (var item in query.OrderBy(x => x.QuestionNo).ThenBy(x => x.AnswerNo))
            {
                next_q = item.QuestionNo != qNo;
                next_a = item.AnswerNo != aNo || next_q;

                qNo = item.QuestionNo;
                aNo = item.AnswerNo;

                if (next_q)
                {
                    q = new Models.Assessment.Question();
                    model.Questions.Add(q);

                    q.OrderNo = item.QuestionNo;
                    q.AssessmentQuestionId = item.AssessmentQuestionId;
                    q.Type = (Models.Assessment.AnswerType)item.AnswerType;
                    q.Section = item.Section;
                    q.PageNo = item.PageNo;
                    q.Text = item.QuestionText;
                    q.AltText = item.AltText;
                    q.ValidationText = item.ValidationText;
                    q.Optional = item.Optional;
                    q.QuestionGroup = item.QuestionGroup;
                    q.QuestionGroupId = item.QuestionGroupId;

                    q.Name = "Q" + q.OrderNo;
                }

                if (next_a)
                {
                    a = new Models.Assessment.Answer();
                    q.Answers.Add(a);
                    if (item.AlternativeAnswer) q.AltAnswer = a;

                    a.OrderNo = item.AnswerNo;
                    a.QuestionItemId = item.QuestionItemId;
                    a.AnswerChoiceId = item.AnswerChoiceId;
                    a.Type = (Models.Assessment.AnswerType)item.ChoiceType;
                    a.Text = item.AnswerText;
                    a.Value = item.Encrypted ? _aes.Decrypt(item.Value) : item.Value;
                    a.DefaultValue = item.Encrypted ? _aes.Decrypt(item.DefaultValue) : item.DefaultValue;
                    a.Encrypted = item.Encrypted;
                    a.AlternativeAnswer = item.AlternativeAnswer;
                    a.AltQuestionItemId = item.AltQuestionItemId;
                    a.Score = item.Score;

                    if (a.Type == Models.Assessment.AnswerType.Checkbox)
                    {
                        bool selected = false;
                        bool.TryParse(a.Value, out selected);
                        a.Selected = selected;
                    }
                    else
                    {
                        a.Selected = true;
                    }

                    // to be used as HTML input element name
                    a.Name = string.Format("Q{0}-{1}", q.OrderNo, a.OrderNo);
                }

                if (item.PageNo.HasValue && item.PageNo > totalPages) totalPages = (int)item.PageNo;
            }

            model.TotalPages = totalPages;

            return model;
        }