public void BindData()
        {
            if (CurrentMember != null)
            {
                try
                {
                    MembershipManager mgr = new MembershipManager();
                    CurrentMember = mgr.QuizResults_FillMember(CurrentMember);
                    savedQuiz = CurrentMember.CompletedQuizes.Where(i => i.QuizID == Sitecore.Context.Item.ID.ToGuid()).FirstOrDefault<Quiz>();
                }
                catch
                {

                }
            }

            ObjChecklistArticle = new ChecklistArticlePageItem(Sitecore.Context.Item);
            if (ObjChecklistArticle != null)
            {
                PageUrl = ObjChecklistArticle.GetUrl();

                if (ObjChecklistArticle.ShowPromotionalControl.Checked == true)
                {
                    sbSidebarPromo.Visible = true;
                }
                else
                {
                    sbSidebarPromo.Visible = false;
                }
                // Create the checklist from base object
                if (ObjChecklistArticle.InnerItem.GetChildren() != null)
                {
                    //Get HeaderItems for Header Repeater
                    List<HeaderCheckboxItem> AllHeaders = ChecklistArticlePageItem.GetAllHeaderItem(ObjChecklistArticle);
                    if (AllHeaders != null)
                    {
                        rptHeaderChkbox.DataSource = AllHeaders;
                        rptHeaderChkbox.DataBind();

                    }
                }
            }
        }
        private void SaveQuiz()
        {
            Guid thisGuid = Sitecore.Context.Item.ID.ToGuid();
            Quiz quiz = new Quiz();
            quiz.QuizID = thisGuid;
            Dictionary<string, QuestionAnswer> AnswerTracker = (Dictionary<string, QuestionAnswer>)Session["AnsweredQuestions"];

            foreach (KeyValuePair<string, QuestionAnswer> question in AnswerTracker)
            {
                quiz.MemberAnswers.Add(new QuizItem(new Guid(question.Key), question.Value.Answer));
            }

            try
            {
                MembershipManager mgr = new MembershipManager();
                mgr.QuizResults_SaveToDb(CurrentMember.MemberId, quiz);
            }
            catch
            { 
            
            }
        }
        /// <summary>
        /// Used to inflate a member's quiz items and the responses that the user has saved to the db so far
        /// </summary>
        /// <param name="member">An inflated website Member</param>
        /// <returns>The same member, but now with quiz results.</returns>
        public Member QuizResults_FillMember(Member member)
        {
            string sql = "SELECT QuizId, QuestionId, AnswerValue " +
                " FROM  QuizResults " +
                " WHERE (MemberId = @MemberId) " +
                " ORDER BY QuizId"; //ordering by QuizId will let us loop through rows and know when to make a new Quiz object. 

            //each time we encounter a new quizid we need to populate a new set of quiz answers
            //default guid is a throw away
            Quiz quiz = new Quiz();
            quiz.QuizID = Guid.NewGuid();
            try
            {
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["membership"].ConnectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand(sql, conn))
                    {
                        cmd.Parameters.AddWithValue("@MemberId", member.MemberId);
                        SqlDataReader reader = cmd.ExecuteReader();

                        if (reader.HasRows)
                        {
                            //first thing first. Clear out any existing items in the current member.
                            if (member.CompletedQuizes.Any())
                            {
                                member.CompletedQuizes.Clear();
                            }
                            bool firstrow = true;
                            while (reader.Read())
                            {
                                //see if we need a new quiz or of the existing quiz we are working with is still good.
                                if (quiz.QuizID != reader.GetGuid(0))// 0=QuizId. True when a new quiz is found. Always true for the first row.
                                {
                                    if (!firstrow)//dont add a filled quiz if this is the first read from the reader. New quiz id, but first quiz
                                    {
                                        //save the last quiz to the member
                                        member.CompletedQuizes.Add(quiz);//save the quiz that we were filling to the list.
                                    }
                                    else
                                    {
                                        firstrow = false;//this was the first row, now its not
                                    }
                                    quiz = new Quiz();//A new set of quiz answers was found. Setup a new quiz container
                                    quiz.QuizID = reader.GetGuid(0);// (0)=QuizId.
                                }
                                //every single row is always a new QuizItem
                                QuizItem quizItem = new QuizItem();
                                quizItem.QuestionId = reader.GetGuid(1);//(1)=QuestionId

                                //always check for nulls from a reader or it *will* eventually break.
                                if (!reader.IsDBNull(2))//(2)=AnswerValue
                                {
                                    quizItem.AnswerValue = reader.GetString(2);//(2)=AnswerValue
                                }
                                else
                                {
                                    quizItem.AnswerValue = string.Empty;
                                }
                                quiz.MemberAnswers.Add(quizItem);
                            }// * no matter what now, there is still a quiz that needs to still be added to member 
                            // * reader stops when there are no more rows to read, but we still haven't added the last quiz                            
                            member.CompletedQuizes.Add(quiz);
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
            return member; //if the member had any quiz results in the db, it is now inflated with them

        }
        /// <summary>
        /// We can come back to this later but right now we are going to blow out
        /// </summary>
        /// <param name="member"></param>
        /// <returns></returns>
        public bool QuizResults_SaveToDb(Guid MemberId, Quiz quiz)
        {
            bool success = false;
            //clear out the existing quiz
            if (!DeleteQuizResults(MemberId, quiz.QuizID))
            {
                throw new Exception("An error occured when trying to clear existing quiz data.");
            }
            //save the member's results
            string sql = " INSERT INTO QuizResults " +
                                   " (MemberId, QuizId, QuestionId, AnswerValue) " +
                           "  VALUES (@MemberId, @QuizId, @QuestionId, @AnswerValue) ";
            Guid QuizId = quiz.QuizID;

            try
            {
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["membership"].ConnectionString))
                {
                    conn.Open();
                    foreach (QuizItem memberAnswer in quiz.MemberAnswers)
                    {
                        //insert an answer row
                        using (SqlCommand cmd = new SqlCommand(sql, conn))
                        {
                            cmd.Parameters.AddWithValue("@MemberId", MemberId);
                            cmd.Parameters.AddWithValue("@QuizId", QuizId);
                            cmd.Parameters.AddWithValue("@QuestionId", memberAnswer.QuestionId);
                            cmd.Parameters.AddWithValue("@AnswerValue", memberAnswer.AnswerValue);
                            cmd.ExecuteNonQuery();
                            success = true;
                            cmd.Parameters.Clear();//clear out the existing params for the next iteration
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            success = true;

            return success;
        }
Пример #5
0
        protected void btnQuizReader_Click(object sender, EventArgs e)
        {
            Member m = new Member();
            m.MemberId = Guid.Parse("93e4c02c-3d3d-4ccd-95a3-180bb513e543"); //throw away user
            MembershipManager mgr = new MembershipManager();
            
            //to load up quizes and all of their answer values
            m = mgr.QuizResults_FillMember(m);

            Quiz quiz = new Quiz();
            quiz.QuizID = Guid.NewGuid();
            quiz.MemberAnswers.Add(new QuizItem(Guid.Parse("93e4c02c-3d3d-4ccd-95a3-180bb513e333"),"JUNKANSWER1"));
            quiz.MemberAnswers.Add(new QuizItem(Guid.Parse("93e4c02c-3d3d-4ccd-95a3-180bb513e444"), "JUNKANSWER2"));
            //to save a quiz to the db
            mgr.QuizResults_SaveToDb(m.MemberId, quiz);

        }