コード例 #1
0
ファイル: QuestionManage.cs プロジェクト: jonfee/Teamcores
        /// <summary>
        /// 获取并转换为<see cref="QuestionDetails"/>类型数据对象
        /// </summary>
        /// <returns></returns>
        public QuestionDetails ConvertToQuestionDetails()
        {
            if (Question == null)
            {
                return(null);
            }

            //科目名称
            var subjectName = SubjectsAccessor.GetName(Question.SubjectId);
            //课程标题
            var courseTitle = CourseAccessor.GetTitle(Question.CourseId);

            var details = new QuestionDetails
            {
                QuestionId  = Question.QuestionId,
                Answer      = QuestionTools.DeserializeAnswers(Question.Answer, Question.Type),
                Count       = Question.Count,
                CourseId    = Question.CourseId,
                CourseTitle = courseTitle,
                CreateTime  = Question.CreateTime,
                LastTime    = Question.LastTime,
                Marking     = Question.Marking,
                Status      = Question.Status,
                SubjectId   = Question.SubjectId,
                SubjectName = subjectName,
                Topic       = Question.Topic,
                Type        = Question.Type,
                UserId      = Question.UserId
            };

            return(details);
        }
コード例 #2
0
        public async Task <ActionResult <Question> > GetQuestion(int id)
        {
            // var student = db.Students.Include(i => i.ProgressReports).FirstOrDefault(st => st.Id == id);
            var question = await db
                           .Questions
                           .Include(i => i.Answers)
                           .FirstOrDefaultAsync(f => f.ID == id);

            if (question == null)
            {
                return(NotFound());
            }

            else
            {
                // create json object from model view
                var rv = new QuestionDetails
                {
                    ID           = question.ID,
                    Title        = question.Title,
                    QuestionBody = question.QuestionBody,
                    VoteScore    = question.VoteScore,
                    TimeStamp    = question.TimeStamp,
                    Answers      = question.Answers.Select(a => new CreatedAnswer
                    {
                        ID         = a.ID,
                        AnswerBody = a.AnswerBody,
                        VoteScore  = a.VoteScore,
                        TimeStamp  = a.TimeStamp,
                        QuestionId = a.QuestionId
                    }).ToList()
                };
                return(Ok(rv));
            }
        }
コード例 #3
0
        public ActionResult GetOneQuestion2(int id)
        {
            var db       = new DatabaseContext();
            var question = db.Questions.Include(i => i.Answers).FirstOrDefault(qu => qu.Id == id);

            if (question == null)
            {
                return(NotFound());
            }
            else
            {
                // create our json object///////////////////
                var rv = new QuestionDetails
                {
                    Id             = question.Id,
                    QuestionString = question.QuestionString,
                    VoteQuestion   = question.VoteQuestion,

                    Answers = question.Answers.Select(af => new CreatedAnswer
                    {
                        AnswerString = af.AnswerString,
                        VoteAnswer   = af.VoteAnswer,
                        //       QuestionId = af.QuestionId,
                        Id = af.Id
                    }).ToList()
                };
                return(Ok(rv));
            }
        }
コード例 #4
0
        public void TestSimulate()
        {
            string header;

            using (var stream = File.OpenText("./CourseListSimulatorHeader.txt"))
            {
                header = stream.ReadToEnd();
            }
            var domain = new Uri("http://learn.open.com.cn");
            var agent  = new Agent(domain, header);
            var courseListSimulator = new CourseListSimulator(agent, "http://learn.open.com.cn/StudentCenter/MyWork/GetOnlineJsonAll?t=0.40281778743324614", HttpMethod.Get, "t =0.8017772560482458", header);
            var courses             = courseListSimulator.Simulate(null);
            var wrongQuestionsList  = new List <WrongQuestions>();

            foreach (var course in courses)
            {
                foreach (var exercise in course.Exercises)
                {
                    var wrongQuestionSimulator = new WrongQuestionSimulator(agent, exercise);
                    var result = wrongQuestionSimulator.Simulate(null);
                    if (result.Count() != 0)
                    {
                        var wrongQuestions = new WrongQuestions(result)
                        {
                            ExecriseName = exercise.Name, CourseName = course.CourseName
                        };
                        wrongQuestionsList.Add(wrongQuestions);
                    }
                }
            }

            var rt = new List <QuestionDetails>();

            foreach (var wrongQuestions in wrongQuestionsList)
            {
                var item = new QuestionDetails();
                foreach (var wrongQuestion in wrongQuestions)
                {
                    var questionDetailSimualtor = new QuestionDetailSimulator(agent, wrongQuestion);
                    var result = questionDetailSimualtor.SimulateOne(null);
                    item.Add(result);
                }
                rt.Add(item);
            }
            Assert.IsTrue(rt.Count > 0);
        }
コード例 #5
0
    private void GetQuestions(XmlDocument XMLQuestion)
    {
        XmlNode AllQuestions;

        AllQuestions = XMLQuestion.DocumentElement.SelectSingleNode("Questions");


        foreach (XmlNode QuestionDetails in AllQuestions.SelectNodes("Question"))
        {
            Question NewQuestion = new Question();


            if (QuestionDetails.SelectSingleNode("Name") != null)
            {
                NewQuestion.QuestionName = QuestionDetails.SelectSingleNode("Name").InnerText;
            }

            if (QuestionDetails.SelectSingleNode("Active") != null)
            {
                NewQuestion.QuestionActive = Convert.ToBoolean(QuestionDetails.SelectSingleNode("Active").InnerText);
            }

            if (QuestionDetails.SelectSingleNode("Description") != null)
            {
                NewQuestion.QuestionDescription = QuestionDetails.SelectSingleNode("Description").InnerText;
            }

            if (QuestionDetails.SelectSingleNode("Type") != null)
            {
                NewQuestion.QuestionTypeID = Convert.ToInt32(QuestionDetails.SelectSingleNode("Type").InnerText);
            }


            NewQuestion.ModuleID = Convert.ToInt32(dpModule.SelectedValue);


            NewQuestion.InsertQuestion();

            XmlNode Answers = QuestionDetails.SelectSingleNode("Answers");

            GetAnswers(Answers);
        }
    }
コード例 #6
0
        // GET: Questions/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            QuestionView question = _uow.GetRepository <IQuestionRepository>().GetOne(id.Value);

            if (question == null)
            {
                return(HttpNotFound());
            }
            QuestionDetails model = new QuestionDetails()
            {
                Model   = question,
                Answers = _uow.GetRepository <IQuestionRepository>().GetListByQuestion(id.Value)
            };

            return(View(model));
        }
コード例 #7
0
        public async Task <IActionResult> GetData()
        {
            SummaryDetails quiz = new SummaryDetails();

            XmlDetails  xmldtl = new XmlDetails();
            XmlDocument doc    = new XmlDocument();


            using (var transaction = _context.Database.BeginTransaction())
            {
                string Qtytype    = "";
                string XmlContent = "";
                try
                {
                    XmlContent     = Request.Form["dr"];
                    quiz.UserName  = Request.Form["USER_NAME"];
                    quiz.UserEmail = Request.Form["USER_EMAIL"];
                    quiz.UserId    = Request.Form["USER_ID"];
                    quiz.Title     = Request.Form["qt"];

                    if (XmlContent != "")
                    {
                        doc.LoadXml(XmlContent);
                        XmlNodeList NodeList = doc.GetElementsByTagName("quizReport");

                        if (NodeList.Count > 0 && NodeList != null)
                        {
                            List <QuestionDetails> QuestionDetail = new List <QuestionDetails>();
                            foreach (XmlNode node in NodeList)
                            {
                                if (node.ChildNodes != null && node.ChildNodes.Count > 0)
                                {
                                    quiz.Score          = Convert.ToInt32(Request.Form["tp"]);
                                    quiz.PassingPercent = Convert.ToDecimal(Request.Form["psp"]);
                                    quiz.PassingScore   = Convert.ToDecimal(Request.Form["ps"]);
                                    quiz.IsPassed       = Convert.ToBoolean(node.ChildNodes[1].Attributes["passed"].Value);
                                    quiz.TimeTaken      = Convert.ToInt32(node.ChildNodes[1].Attributes["time"].Value);
                                    quiz.Date           = Convert.ToDateTime(node.ChildNodes[1].Attributes["finishTimestamp"].Value);
                                    if (node.ChildNodes[3].ChildNodes.Count > 0)
                                    {
                                        quiz.TotalQuestion    = Convert.ToInt32(node.ChildNodes[3].ChildNodes[0].Attributes["totalQuestions"].Value);
                                        quiz.AnsweredQuestion = Convert.ToInt32(node.ChildNodes[3].ChildNodes[0].Attributes["answeredQuestions"].Value);
                                    }
                                    else
                                    {
                                        quiz.TotalQuestion    = 0;
                                        quiz.AnsweredQuestion = 0;
                                    }
                                    quiz.Percentage  = Convert.ToDecimal(node.ChildNodes[1].Attributes["percent"].Value);
                                    quiz.CreatedDate = DateTime.Now;

                                    _context.SummaryDetails.Add(quiz);
                                    _context.SaveChanges();


                                    xmldtl.SummaryDetailId = (quiz.Id == null ? 0 : quiz.Id);
                                    xmldtl.XmlDetail       = Convert.ToString(XmlContent);
                                    xmldtl.CreatedDate     = DateTime.Now;

                                    _context.XmlDetails.Add(xmldtl);
                                    _context.SaveChanges();


                                    if (node.ChildNodes[2].ChildNodes.Count > 0)
                                    {
                                        foreach (XmlNode Qtnlst in node.ChildNodes[2].ChildNodes)
                                        {
                                            Qtytype = "";
                                            if (Qtnlst.LocalName == "multipleChoiceQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);


                                                int crtansid  = Convert.ToInt32(Qtnlst.ChildNodes[2].Attributes["correctAnswerIndex"].Value);
                                                int useransid = Convert.ToInt32(Qtnlst.ChildNodes[2].Attributes["userAnswerIndex"].Value);

                                                que.CorrectAnswer = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[crtansid].InnerText);
                                                que.UserSelection = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[useransid].InnerText);

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "multipleResponseQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                string crtans = "", uselect = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2])
                                                {
                                                    bool crtansid  = Convert.ToBoolean(item.Attributes["correct"].Value);
                                                    bool useransid = Convert.ToBoolean(item.Attributes["selected"].Value);

                                                    if (crtansid == true)
                                                    {
                                                        crtans += item.InnerText + ",";
                                                    }
                                                    if (useransid == true)
                                                    {
                                                        uselect += item.InnerText + ",";
                                                    }
                                                }
                                                crtans            = crtans.Trim(',');
                                                uselect           = uselect.Trim(',');
                                                que.CorrectAnswer = crtans;
                                                que.UserSelection = uselect;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "trueFalseQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                int crtansid  = Convert.ToInt32(Qtnlst.ChildNodes[2].Attributes["correctAnswerIndex"].Value);
                                                int useransid = Convert.ToInt32(Qtnlst.ChildNodes[2].Attributes["userAnswerIndex"].Value);

                                                que.CorrectAnswer = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[crtansid].InnerText);
                                                que.UserSelection = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[useransid].InnerText);

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "typeInQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                que.UserSelection = Convert.ToString(Qtnlst.Attributes["userAnswer"].Value);
                                                string accpAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2])
                                                {
                                                    accpAns += item.InnerText + ",";
                                                }
                                                accpAns           = accpAns.Trim(',');
                                                que.CorrectAnswer = accpAns;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "numericQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                que.UserSelection = Convert.ToString(Qtnlst.Attributes["userAnswer"].Value);
                                                string accpAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2])
                                                {
                                                    accpAns += item.InnerText + ",";
                                                }
                                                accpAns           = accpAns.Trim(',');
                                                que.CorrectAnswer = accpAns;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "sequenceQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                Dictionary <int, string> crtans = new Dictionary <int, string>();
                                                string uselect    = "";
                                                string correctAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2])
                                                {
                                                    uselect += item.InnerText + ",";
                                                    int    i     = Convert.ToInt32(item.Attributes["originalIndex"].Value);
                                                    string value = Convert.ToString(item.InnerText);
                                                    crtans.Add(i, value);
                                                }
                                                if (crtans.Count > 0 && crtans != null)
                                                {
                                                    foreach (var i in crtans.OrderBy(m => m.Key))
                                                    {
                                                        correctAns += i.Value + ",";
                                                    }
                                                }

                                                correctAns        = correctAns.Trim(',');
                                                uselect           = uselect.Trim(',');
                                                que.UserSelection = uselect;
                                                que.CorrectAnswer = correctAns;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "matchingQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;


                                                string uselect    = "";
                                                string correctAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[4].ChildNodes)
                                                {
                                                    int perid = Convert.ToInt32(item.Attributes["premiseIndex"].Value);
                                                    int repid = Convert.ToInt32(item.Attributes["responseIndex"].Value);

                                                    string pertext   = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[perid].InnerText);
                                                    string matchtext = Convert.ToString(Qtnlst.ChildNodes[3].ChildNodes[repid].InnerText);


                                                    correctAns += (pertext + " - " + matchtext) + ",";
                                                }
                                                foreach (XmlNode item in Qtnlst.ChildNodes[5].ChildNodes)
                                                {
                                                    int perid = Convert.ToInt32(item.Attributes["premiseIndex"].Value);
                                                    int repid = Convert.ToInt32(item.Attributes["responseIndex"].Value);

                                                    string pertext   = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[perid].InnerText);
                                                    string matchtext = Convert.ToString(Qtnlst.ChildNodes[3].ChildNodes[repid].InnerText);


                                                    uselect += (pertext + " - " + matchtext) + ",";
                                                }
                                                correctAns        = correctAns.Trim(',');
                                                uselect           = uselect.Trim(',');
                                                que.CorrectAnswer = correctAns;
                                                que.UserSelection = uselect;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "fillInTheBlankQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                que.UserSelection = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[1].Attributes["userAnswer"].Value);

                                                string correctAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2].ChildNodes[1].ChildNodes)
                                                {
                                                    correctAns += item.InnerText + ",";
                                                }
                                                correctAns        = correctAns.Trim(',');
                                                que.CorrectAnswer = correctAns;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "multipleChoiceTextQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;


                                                foreach (XmlNode item in Qtnlst.ChildNodes[2])
                                                {
                                                    if (item.LocalName == "blank")
                                                    {
                                                        int uid = Convert.ToInt32(item.Attributes["userAnswerIndex"].Value);
                                                        int cid = Convert.ToInt32(item.Attributes["correctAnswerIndex"].Value);


                                                        que.UserSelection = Convert.ToString(item.ChildNodes[uid].InnerText);
                                                        que.CorrectAnswer = Convert.ToString(item.ChildNodes[cid].InnerText);
                                                    }
                                                }

                                                //int uid = Convert.ToInt32(Qtnlst.ChildNodes[2].ChildNodes[1].Attributes["userAnswerIndex"].Value);
                                                //int cid = Convert.ToInt32(Qtnlst.ChildNodes[2].ChildNodes[1].Attributes["correctAnswerIndex"].Value);

                                                //que.UserSelection = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[1].ChildNodes[uid].InnerText);
                                                //que.CorrectAnswer = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[1].ChildNodes[cid].InnerText);

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "wordBankQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;
                                                string correctAns = ""; string uselect = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2].ChildNodes)
                                                {
                                                    if (item.LocalName == "blank")
                                                    {
                                                        correctAns += item.Attributes["userAnswer"].Value + ",";
                                                        uselect    += item.InnerText + ",";
                                                    }
                                                }
                                                correctAns        = correctAns.Trim(',');
                                                uselect           = uselect.Trim(',');
                                                que.CorrectAnswer = correctAns;
                                                que.UserSelection = uselect;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "hotspotQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                //string userx = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[0].Attributes["x"].Value);
                                                //string usery = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[0].Attributes["y"].Value);


                                                string uselect = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2].ChildNodes)
                                                {
                                                    uselect += "x=" + item.Attributes["x"].Value + " y=" + item.Attributes["y"].Value + ",";
                                                }

                                                string corx     = Convert.ToString(Qtnlst.ChildNodes[3].ChildNodes[0].Attributes["x"].Value);
                                                string cory     = Convert.ToString(Qtnlst.ChildNodes[3].ChildNodes[0].Attributes["y"].Value);
                                                bool   ismarked = Convert.ToBoolean(Qtnlst.ChildNodes[3].ChildNodes[0].Attributes["marked"].Value);

                                                que.CorrectAnswer = "x=" + corx + " y=" + cory;
                                                uselect           = uselect.Trim(',');
                                                que.UserSelection = uselect;
                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "dndQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                Dictionary <int, string> crtans = new Dictionary <int, string>();
                                                string uselect    = "";
                                                string correctAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[4].ChildNodes)
                                                {
                                                    int    objinx = Convert.ToInt32(item.Attributes["objectIndex"].Value);
                                                    int    desinx = Convert.ToInt32(item.Attributes["destinationIndex"].Value);
                                                    string objtxt = "", destxt = "";
                                                    if (objinx < 0 && desinx >= 0)
                                                    {
                                                        objtxt = "No Match";
                                                        destxt = Qtnlst.ChildNodes[3].ChildNodes[desinx].InnerText;
                                                    }

                                                    else if (desinx < 0 && objinx >= 0)
                                                    {
                                                        objtxt = Qtnlst.ChildNodes[2].ChildNodes[objinx].InnerText;
                                                        destxt = "No Match";
                                                    }
                                                    else
                                                    {
                                                        objtxt = Qtnlst.ChildNodes[2].ChildNodes[objinx].InnerText;
                                                        destxt = Qtnlst.ChildNodes[3].ChildNodes[desinx].InnerText;
                                                    }

                                                    //string value = Convert.ToString(item.InnerText);
                                                    //crtans.Add(i, value);

                                                    correctAns += (objtxt + " - " + destxt) + ",";
                                                }
                                                foreach (XmlNode item in Qtnlst.ChildNodes[5].ChildNodes)
                                                {
                                                    int objinx = Convert.ToInt32(item.Attributes["objectIndex"].Value);
                                                    int desinx = Convert.ToInt32(item.Attributes["destinationIndex"].Value);

                                                    string objtxt = "", destxt = "";
                                                    if (objinx < 0 && desinx >= 0)
                                                    {
                                                        objtxt = "No Match";
                                                        destxt = Qtnlst.ChildNodes[3].ChildNodes[desinx].InnerText;
                                                    }
                                                    else if (desinx < 0 && objinx >= 0)
                                                    {
                                                        objtxt = Qtnlst.ChildNodes[2].ChildNodes[objinx].InnerText;
                                                        destxt = "No Match";
                                                    }
                                                    else
                                                    {
                                                        objtxt = Qtnlst.ChildNodes[2].ChildNodes[objinx].InnerText;
                                                        destxt = Qtnlst.ChildNodes[3].ChildNodes[desinx].InnerText;
                                                    }

                                                    uselect += (objtxt + " - " + destxt) + ",";
                                                }
                                                correctAns        = correctAns.Trim(',');
                                                uselect           = uselect.Trim(',');
                                                que.CorrectAnswer = correctAns;
                                                que.UserSelection = uselect;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "likertScaleQuestion")// NEED TO DISCUSSTION , WHAT ANS TO STORED
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = 0;
                                                que.MaxPoints     = 0;
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                string uselect = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[3].ChildNodes)
                                                {
                                                    int stminx = Convert.ToInt32(item.Attributes["statementIndex"].Value);
                                                    int lblinx = Convert.ToInt32(item.Attributes["labelIndex"].Value);


                                                    string stmtxt = Qtnlst.ChildNodes[1].ChildNodes[stminx].InnerText;
                                                    string lbltxt = Qtnlst.ChildNodes[2].ChildNodes[lblinx].InnerText;

                                                    uselect += (stmtxt + " - " + lbltxt) + ",";
                                                }
                                                uselect           = uselect.Trim(',');
                                                que.CorrectAnswer = "";
                                                que.UserSelection = uselect;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "essayQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;
                                                que.CorrectAnswer = "";
                                                que.AwardedPoints = 0;
                                                que.MaxPoints     = 0;
                                                que.UserSelection = Qtnlst.ChildNodes[1].InnerText;

                                                QuestionDetail.Add(que);
                                            }
                                        }
                                    }
                                }
                            }

                            if (QuestionDetail != null)
                            {
                                if (QuestionDetail.Count > 0)
                                {
                                    string type = "";
                                    try
                                    {
                                        foreach (var item in QuestionDetail)
                                        {
                                            type = "";
                                            try
                                            {
                                                type = item.QuestionType;
                                                item.SummaryDetailId = quiz.Id;
                                                item.CreatedDate     = DateTime.Now;
                                                _context.QuestionDetails.Add(item);
                                                _context.SaveChanges();

                                                var data = _context.XmlDetails.Where(x => x.SummaryDetailId == quiz.Id).FirstOrDefault();
                                                if (data != null)
                                                {
                                                    data.IsSuccess = true;
                                                    _context.XmlDetails.Update(data);
                                                    _context.SaveChanges();
                                                }
                                            }
                                            catch (Exception ex)
                                            {
                                                throw ex;
                                            }
                                        }
                                        transaction.Commit();
                                    }
                                    catch (Exception ex)
                                    {
                                        transaction.Rollback();

                                        string email = Request.Form["USER_EMAIL"];

                                        GenerateExcel(quiz.UserName == null ? "" : quiz.UserName, XmlContent);

                                        if (email != "" && email != null)
                                        {
                                            string bodyTemplate = System.IO.File.ReadAllText(Path.Combine("EmailTemplate/ErrorTemplate.html"));
                                            bodyTemplate = bodyTemplate.Replace("[UserName]", quiz.UserName == null ? "" : quiz.UserName);
                                            bodyTemplate = bodyTemplate.Replace("[Message]", ex.InnerException + " " + ex.Message);
                                            bool objReturn = _emailSender.SendEmailAsyncWithBody(email, "Error Message", bodyTemplate, true);
                                        }

                                        WriteToFile(ex.InnerException + " " + ex.Message, quiz.UserName == null ? "" : quiz.UserName, type);
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    string email = Request.Form["USER_EMAIL"];

                    GenerateExcel(quiz.UserName == null ? "" : quiz.UserName, XmlContent);

                    if (email != "" && email != null)
                    {
                        string bodyTemplate = System.IO.File.ReadAllText(Path.Combine("EmailTemplate/ErrorTemplate.html"));
                        bodyTemplate = bodyTemplate.Replace("[UserName]", quiz.UserName == null ? "" : quiz.UserName);
                        bodyTemplate = bodyTemplate.Replace("[Message]", ex.InnerException + " " + ex.Message);
                        bool Issuccess = _emailSender.SendEmailAsyncWithBody(email, "Error Message", bodyTemplate, true);
                    }

                    WriteToFile(ex.InnerException + " " + ex.Message, quiz.UserName == null ? "" : quiz.UserName, Qtytype);
                    return(Ok());
                }
            }
            //var result = new GenericResult<dynamic>();
            //result.Success = true;
            //return Ok(result);

            return(Ok());
        }
コード例 #8
0
        public IActionResult GetCompletedQuizzesForTrainee([FromBody] TraineeGetQuizzes userAndGroupIDDTO)
        {
            var    queryResult      = -1; //Set query result to fail.
            string connectionString = Configuration["ConnectionStrings:DefaultConnectionString"];
            int    result           = -1;

            //Create list of all quizzes
            var quizzes          = new List <QuizDetails>();
            var completedQuizzes = new List <QuizDetails>();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                //Create the SQL command and set type to stored procedure.
                SqlCommand command = new SqlCommand("Quizzes_GetByGroupID", connection);
                command.CommandType = System.Data.CommandType.StoredProcedure;

                //Set the parameters for the command.
                command.Parameters.AddWithValue("@groupID", userAndGroupIDDTO.GroupID);

                connection.Open();

                //Execute the query and store the result.
                //Get all quizzes that belong to a group.
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var quiz = new QuizDetails
                            {
                                GroupID  = reader.GetInt32(reader.GetOrdinal("GroupID")),
                                QuizID   = reader.GetInt32(reader.GetOrdinal("QuizID")),
                                QuizName = reader.GetString(reader.GetOrdinal("QuizName"))
                            };

                            quizzes.Add(quiz);
                        }
                        reader.Close();
                    }
                    else
                    {
                        return(BadRequest("Could not find matching quiz."));
                    }
                }

                //Create list of all questions
                var questions = new List <QuestionDetails>();

                command             = new SqlCommand("Questions_GetByQuizID", connection);
                command.CommandType = System.Data.CommandType.StoredProcedure;

                //Get all questions for each quiz.
                foreach (QuizDetails quiz in quizzes)
                {
                    //Set the parameters for the command.
                    command.Parameters.Clear();
                    command.Parameters.AddWithValue("@quizID", quiz.QuizID);

                    //Execute the query and store the result
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                var question = new QuestionDetails
                                {
                                    QuestionID   = reader.GetInt32(reader.GetOrdinal("QuestionID")),
                                    QuizID       = reader.GetInt32(reader.GetOrdinal("QuizID")),
                                    QuestionText = reader.GetString(reader.GetOrdinal("QuestionText"))
                                };

                                questions.Add(question);
                            }
                            reader.Close();
                        }
                        else
                        {
                            return(BadRequest("Could not find matching questions."));
                        }
                    }
                }

                //Create list of all choices
                var choices = new List <ChoiceDetails>();

                command             = new SqlCommand("Choices_GetByQuizID", connection);
                command.CommandType = System.Data.CommandType.StoredProcedure;

                //Get all choices for each quiz.
                foreach (QuizDetails quiz in quizzes)
                {
                    //Set the parameters for the command.
                    command.Parameters.Clear();
                    command.Parameters.AddWithValue("@quizID", quiz.QuizID);

                    //Execute the query and store the result
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                var choice = new ChoiceDetails
                                {
                                    ChoiceID   = reader.GetInt32(reader.GetOrdinal("ChoiceID")),
                                    QuizID     = reader.GetInt32(reader.GetOrdinal("QuizID")),
                                    QuestionID = reader.GetInt32(reader.GetOrdinal("QuestionID")),
                                    ChoiceText = reader.GetString(reader.GetOrdinal("ChoiceText")),
                                    isCorrect  = reader.GetBoolean(reader.GetOrdinal("IsCorrect"))
                                };

                                choices.Add(choice);
                            }
                            reader.Close();
                        }
                        else
                        {
                            return(BadRequest("Could not find matching choices."));
                        }
                    }
                }

                //Add the choices to the matching question item.
                foreach (QuestionDetails question in questions)
                {
                    var temp = new List <ChoiceDetails>();

                    foreach (ChoiceDetails choice in choices)
                    {
                        if (choice.QuestionID == question.QuestionID)
                        {
                            temp.Add(choice);
                        }
                    }
                    question.Choices = temp.ToArray();
                }

                //Add the questions to the matching quiz item.
                foreach (QuizDetails quiz in quizzes)
                {
                    var temp = new List <QuestionDetails>();

                    foreach (QuestionDetails question in questions)
                    {
                        if (question.QuizID == quiz.QuizID)
                        {
                            temp.Add(question);
                        }
                    }
                    quiz.Questions = temp.ToArray();
                }

                //Create the SQL command and set type to stored procedure.
                command             = new SqlCommand("Results_CheckIfQuizCompleted", connection);
                command.CommandType = System.Data.CommandType.StoredProcedure;

                foreach (QuizDetails quiz in quizzes)
                {
                    //Set the parameters for the command.
                    command.Parameters.Clear();
                    command.Parameters.AddWithValue("@quizID", quiz.QuizID);
                    command.Parameters.AddWithValue("@userID", userAndGroupIDDTO.UserID);
                    command.Parameters.Add("@result", System.Data.SqlDbType.Int).Direction = System.Data.ParameterDirection.Output;

                    //Execute the query and store the result.
                    queryResult = command.ExecuteNonQuery();

                    //Get the id for the quiz previously created.
                    result = (int)command.Parameters["@result"].Value;

                    if (result == 1)
                    {
                        completedQuizzes.Add(quiz);
                    }
                }

                connection.Close();
            }

            //Return OK result with uncompleted quizzes
            return(Ok(
                       completedQuizzes
                       ));
        }
コード例 #9
0
        public IActionResult GetQuizByQuizID([FromBody] int quizID)
        {
            string connectionString = Configuration["ConnectionStrings:DefaultConnectionString"];

            //Create list of all quizzes
            var quiz = new QuizDetails();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                //Create the SQL command and set type to stored procedure.
                SqlCommand command = new SqlCommand("Quiz_GetByQuizID", connection);
                command.CommandType = System.Data.CommandType.StoredProcedure;

                //Set the parameters for the command.
                command.Parameters.AddWithValue("@quizID", quizID);

                connection.Open();

                //Execute the query and store the result.
                //Get all quizzes that belong to a group.
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            quiz = new QuizDetails
                            {
                                GroupID  = reader.GetInt32(reader.GetOrdinal("GroupID")),
                                QuizID   = reader.GetInt32(reader.GetOrdinal("QuizID")),
                                QuizName = reader.GetString(reader.GetOrdinal("QuizName"))
                            };
                        }
                        reader.Close();
                    }
                    else
                    {
                        return(BadRequest("Could not find matching quiz."));
                    }
                }

                //Create list of all questions
                var questions = new List <QuestionDetails>();

                command             = new SqlCommand("Questions_GetByQuizID", connection);
                command.CommandType = System.Data.CommandType.StoredProcedure;

                //Get all questions for each quiz.

                //Set the parameters for the command.
                command.Parameters.Clear();
                command.Parameters.AddWithValue("@quizID", quiz.QuizID);

                //Execute the query and store the result
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var question = new QuestionDetails
                            {
                                QuestionID   = reader.GetInt32(reader.GetOrdinal("QuestionID")),
                                QuizID       = reader.GetInt32(reader.GetOrdinal("QuizID")),
                                QuestionText = reader.GetString(reader.GetOrdinal("QuestionText"))
                            };

                            questions.Add(question);
                        }
                        reader.Close();
                    }
                    else
                    {
                        return(BadRequest("Could not find matching questions."));
                    }
                }

                //Create list of all choices
                var choices = new List <ChoiceDetails>();

                command             = new SqlCommand("Choices_GetByQuizID", connection);
                command.CommandType = System.Data.CommandType.StoredProcedure;

                //Set the parameters for the command.
                command.Parameters.Clear();
                command.Parameters.AddWithValue("@quizID", quiz.QuizID);

                //Execute the query and store the result
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            var choice = new ChoiceDetails
                            {
                                ChoiceID   = reader.GetInt32(reader.GetOrdinal("ChoiceID")),
                                QuizID     = reader.GetInt32(reader.GetOrdinal("QuizID")),
                                QuestionID = reader.GetInt32(reader.GetOrdinal("QuestionID")),
                                ChoiceText = reader.GetString(reader.GetOrdinal("ChoiceText")),
                                isCorrect  = reader.GetBoolean(reader.GetOrdinal("IsCorrect"))
                            };

                            choices.Add(choice);
                        }
                        reader.Close();
                    }
                    else
                    {
                        return(BadRequest("Could not find matching choices."));
                    }
                }

                //Add the choices to the matching question item.
                foreach (QuestionDetails question in questions)
                {
                    var tempChoices = new List <ChoiceDetails>();

                    foreach (ChoiceDetails choice in choices)
                    {
                        if (choice.QuestionID == question.QuestionID)
                        {
                            tempChoices.Add(choice);
                        }
                    }
                    question.Choices = tempChoices.ToArray();
                }

                quiz.Questions = questions.ToArray();

                connection.Close();
            }

            //Return OK result with quizzes
            return(Ok(
                       quiz
                       ));
        }