/// <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); }
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)); } }
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)); } }
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); }
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); } }
// 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)); }
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()); }
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 )); }
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 )); }