public async Task <IActionResult> PutQuizResponse(Guid id, QuizResponse quizResponse) { if (id != quizResponse.Id) { return(BadRequest()); } // Can only change your own responses if (quizResponse.AppUserId != User.UserGuidId()) { return(BadRequest()); } _context.Entry(quizResponse).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!QuizResponseExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public static void UpdateQuiz(Quiz newQuiz) { quiz = newQuiz; quizResponse = new QuizResponse(); NormalizeAnswers(); }
public async Task <IActionResult> Edit(Guid id, [Bind("AnswerId,QuestionId,QuizId,AppUserId,CreatedBy,CreatedAt,EditedBy,EditedAt,Id")] QuizResponse quizResponse) { if (id != quizResponse.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(quizResponse); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!QuizResponseExists(quizResponse.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["AnswerId"] = new SelectList(_context.Answers, "Id", "Name", quizResponse.AnswerId); ViewData["AppUserId"] = new SelectList(_context.Users, "Id", "FirstName", quizResponse.AppUserId); ViewData["QuestionId"] = new SelectList(_context.Questions, "Id", "Name", quizResponse.QuestionId); ViewData["QuizId"] = new SelectList(_context.Quizzes, "Id", "Name", quizResponse.QuizId); return(View(quizResponse)); }
public int CaptureResponses(QuizResponse obj) { int status = 0; try { if (obj.OptionIds != null) { db.parameters.Clear(); db.AddParameter("@QuestionId", SqlDbType.Int, obj.QuestionId); db.AddParameter("@OptionIds", SqlDbType.Text, obj.OptionIds); db.AddParameter("@QuestionFeedback", SqlDbType.Text, obj.QuestionFeedback); db.AddParameter("@UserId", SqlDbType.Int, obj.UserId); db.AddParameter("@QuizId", SqlDbType.Int, obj.QuizId); db.AddParameter("@Attempt", SqlDbType.Int, obj.Attempt); status = db.ExecuteQuery("sp_ResponseAdd"); } } catch (Exception ex) { newException.AddException(ex); throw ex; } return(status); }
public Quiz(QuizResponse quizResponse) { Questions = new Question[quizResponse.quiz.Length]; for (int i = 0; i < quizResponse.quiz.Length; i++) { Questions[i] = new Question(quizResponse.quiz[i]); } }
public ActionResult Index(QuestionViewModel model) { //save result QuizRepository repo = new QuizRepository(); DAL.QuizResponse response = new QuizResponse(); response.AnswerId = model.SelectedAnswer; response.QuestionId = model.Id; repo.SaveAnswer(response); return RedirectToAction("Thanks"); }
public static void UpdateQuiz(string json) { if (quiz != null) { JsonUtility.FromJsonOverwrite(json, quiz); } else { quiz = JsonUtility.FromJson <Quiz>(json); } quizResponse = new QuizResponse(); NormalizeAnswers(); }
private void QuizCompleted() { QuizResponse toPost = _quizResponse; if (toPost != null) { toPost.userScore = _goodAnswerCount; toPost.userLocalId = Program.LoginData.localId; for (int i = 0; i < _nbQuestions; i++) { toPost.quiz[i].userResponse = _userResponses[i].ToString(); } } if (_isChallAndImSender) { WebUtility.Instance.Post(ADD_DEFI_URL, toPost, ("userLocalId", Program.LoginData.localId), ("cibleName", (Program.SearchPage as SearchPage).CredsPair.Value.challName), ("cibleId", (Program.SearchPage as SearchPage).CredsPair.Value.challUserId)); } else if (_isChallAndImReceiver) { QuizHistoResponse toHistoPost = _histoQuizResponse; toHistoPost.histo.userScore2 = _goodAnswerCount; for (int i = 0; i < _nbQuestions; i++) { toHistoPost.quiz[i].userResponse = _userResponses[i].ToString(); } WebUtility.Instance.Post(SAVE_DEFI_URL, toHistoPost, ("userLocalId", Program.LoginData.localId)); } else { WebUtility.Instance.Post(SAVE_QUIZ_URL, toPost); } ResultRoot.SetActive(true); QuizRoot.SetActive(false); ResultText.text = $"{_goodAnswerCount}/{_nbQuestions}"; ResultText.transform.DOScale(0f, 0f); ResultText.transform.DOScale(1f, 0.75f).SetEase(Ease.OutBack).SetDelay(1f); QuitQuizButton.transform.DOScale(0f, 0f); QuitQuizButton.transform.DOScale(1f, 0.75f).SetEase(Ease.OutBack).SetDelay(2f); }
public async Task <IActionResult> Create([Bind("AnswerId,QuestionId,QuizId,AppUserId,CreatedBy,CreatedAt,EditedBy,EditedAt,Id")] QuizResponse quizResponse) { if (ModelState.IsValid) { quizResponse.Id = Guid.NewGuid(); _context.Add(quizResponse); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["AnswerId"] = new SelectList(_context.Answers, "Id", "Name", quizResponse.AnswerId); ViewData["AppUserId"] = new SelectList(_context.Users, "Id", "FirstName", quizResponse.AppUserId); ViewData["QuestionId"] = new SelectList(_context.Questions, "Id", "Name", quizResponse.QuestionId); ViewData["QuizId"] = new SelectList(_context.Quizzes, "Id", "Name", quizResponse.QuizId); return(View(quizResponse)); }
/// <summary> /// Save a single user answer to the db /// </summary> /// <param name="data"></param> public void SaveAnswer(QuizResponse data) { using (QuizEntities context = new QuizEntities()) { context.QuizResponses.AddObject(new QuizResponse { Date = DateTime.Now, AnswerId = data.AnswerId, QuestionId = data.QuestionId }); context.SaveChanges(); } }
public JsonResult OnPostSubmitQuiz(int quizId, List <QuizResponseItem> answers) { int changesMade = 0; var quizResponse = new QuizResponse { QuizID = quizId }; _context.QuizResponses.Add(quizResponse); changesMade += _context.SaveChanges(); answers.ForEach(answer => answer.QuizResponseId = quizResponse.ID); //Insert all the responses into the database. _context.QuizResponseItems.AddRange(answers); changesMade += _context.SaveChanges(); return(new JsonResult(new { success = changesMade > 0, message = changesMade > 0 ? null : "There was an error modifying the database." })); }
public async Task CreateQuizResponse(apiModels.QuizResponse response) { if (response == null) { throw new ArgumentNullException(nameof(response)); } if (response.Quiz == null || response.GivenAnswer == null || response.Question == null) { throw new InvalidOperationException("Cannot create response with missing properties"); } var dbModel = new QuizResponse { QuizId = response.Quiz.Id, QuestionId = response.Question.Id, AnswerId = response.GivenAnswer.Id, UserId = response.UserId }; _dbContext.QuizResponse.Add(dbModel); await _dbContext.SaveChangesAsync(); }
public static WWW SendQuizResponse(Quiz quiz, QuizResponse quizResponse) { WWWForm responseForm = new WWWForm(); if (quizResponse.user_id != 0) { responseForm.AddField("user_id", quizResponse.user_id); Debug.Log("User ID: " + quizResponse.user_id); } responseForm.AddField("answerable_id", quizResponse.quiz_id); responseForm.AddField("answerable_type", quizResponse.type); responseForm.AddField("quiz_answer", quizResponse.answer); Debug.Log("ID: " + quizResponse.quiz_id + " / Type: " + quizResponse.type + " / Answer: " + quizResponse.answer); WebAPI.apiPlace = "/answer/create/"; return(WebAPI.Post(responseForm)); }
public override void Open(string value) { gameObject.SetActive(true); string[] @params = value.Split(';'); string[] val = @params[0].Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); _isChallAndImSender = int.Parse(@params[1]) == 1; _isChallAndImReceiver = false; string data = WebUtility.Instance.Get(CREATE_QUIZ_URL, ("channelId", val[0]), ("channelName", val[1]), ("channelUrl", val[2])); StringReader reader = new StringReader(data); JsonSerializer ser = JsonSerializer.Create(new JsonSerializerSettings()); QuizResponse response = (QuizResponse)ser.Deserialize(reader, typeof(QuizResponse)); _quizResponse = response; _quizResponse.channelName = val[1]; _quizResponse.channelUrl = val[2]; _quiz = new Quiz(response); _nbQuestions = _quiz.Questions.Length; ResultRoot.SetActive(false); QuizRoot.SetActive(true); //TODO Wait for quiz in async StartQuizButton.image.DOFade(1f, 0f); StartQuizButton.gameObject.SetActive(true); _starting = false; if (_questionObjects != null) { foreach (QuestionObject qo in _questionObjects) { Destroy(qo.gameObject); } } _questionObjects = new QuestionObject[_nbQuestions]; }
public ActionResult SubmitInitialAssessment(TblQuiz objQuiz) { List <TblQuiz> lstAllQuiz = new List <TblQuiz>(); try { int UserId = Convert.ToInt32(Session["Enquiry"]); JavaScriptSerializer json_serializer = new JavaScriptSerializer(); List <QueOptions> lstQueOptions = new List <QueOptions>(); object[] objQueResponse = (object[])json_serializer.DeserializeObject(objQuiz.hdnResponseData); int attempt = 1; if (objQuiz.completeTime == "0" || string.IsNullOrEmpty(objQuiz.completeTime)) { var durationInSeconds = Convert.ToInt32(objQuiz.Duration) * 60; TimeSpan t = TimeSpan.FromSeconds(durationInSeconds); objQuiz.completeTime = string.Format("{0:D2}:{1:D2}", (int)t.Minutes, t.Seconds); } else { var cTime = objQuiz.completeTime; int index1 = cTime.IndexOf(":"); int index2 = cTime.IndexOf("Minutes"); int index3 = cTime.IndexOf(","); int index4 = cTime.IndexOf("Seconds"); var cMin = cTime.Substring(index1 + 1, (index2 - (index1 + 2))); var cSec = cTime.Substring(index3 + 1, (index4 - (index3 + 2))); var remainingTime = (Convert.ToInt32(cMin) * 60) + Convert.ToInt32(cSec); remainingTime = Convert.ToInt32(objQuiz.Duration * 60) - remainingTime; TimeSpan t = TimeSpan.FromSeconds(remainingTime); objQuiz.completeTime = string.Format("{0:D2}:{1:D2}", (int)t.Minutes, t.Seconds); } foreach (var item in objQueResponse) { QuizResponse quizResponse = new QuizResponse(); quizResponse.QuizId = objQuiz.QuizId; quizResponse.UserId = UserId; quizResponse.Attempt = attempt; foreach (Dictionary <string, object> newItem in (object[])item) { var questionId = newItem["questionId"]; quizResponse.QuestionId = Convert.ToInt32(newItem["questionId"]); quizResponse.QuestionFeedback = Convert.ToString(newItem["queFeedback"]); if (string.IsNullOrEmpty(quizResponse.OptionIds)) { quizResponse.OptionIds = Convert.ToString(newItem["optionId"]); } else { quizResponse.OptionIds += "," + Convert.ToString(newItem["optionId"]); } } QueOptions newQueOption = new QueOptions(); newQueOption.QuestionId = quizResponse.QuestionId; newQueOption.OptionsIds = quizResponse.OptionIds; lstQueOptions.Add(newQueOption); var result = quizRepository.CaptureResponses(quizResponse); } lstAllQuiz = quizRepository.GetQuizForLaunch(objQuiz.QuizId, UserId); int noOfQues = 0; var score = 0; foreach (var question in lstAllQuiz[0].TblQuestions) { if (question.QuestionTypeId == 1) { noOfQues++; foreach (var option in question.TblQuestionOptions) { if (option.CorrectOption == true) { foreach (var que in lstQueOptions) { if (que.QuestionId == question.QuestionId) { if (option.OptionId == Convert.ToInt32(que.OptionsIds)) { score++; } } } } } } if (question.QuestionTypeId == 2) { noOfQues++; int correctCount = 0; int[] Ids = new int[question.TblQuestionOptions.Count]; foreach (var option in question.TblQuestionOptions) { if (option.CorrectOption == true) { Ids[correctCount] = option.OptionId; correctCount++; } } foreach (var item in lstQueOptions) { if (item.QuestionId == question.QuestionId) { var optionIds = item.OptionsIds.Split(','); if (correctCount == optionIds.Length) { var correct = 0; foreach (var option in optionIds) { foreach (var id in Ids) { if (id == Convert.ToInt32(option)) { correct++; } } } if (correctCount == correct) { score++; } } } } } } if (noOfQues == 0) { score = 0; } var scoreResult = quizRepository.CaptureScore(objQuiz, UserId, score, attempt); // newException.AddDummyException("Responses Saved Successfully"); TempData["Message"] = "Responses Saved Successfully"; //return View("InitialAssessment", lstAllQuiz[0]); return(RedirectToAction("Result")); } catch (Exception ex) { newException.AddException(ex); TempData["Issue"] = "Issue Occured"; return(View("InitialAssessment", lstAllQuiz[0])); } //return RedirectToAction("Result"); }
public async Task CreateQuizResponse(QuizResponse response) => await WrapReadWrite(service => service.CreateQuizResponse(response));
public async Task CreateQuizResponse([FromBody] QuizResponse response) => await _quizWriteService.CreateQuizResponse(response);
public QuizResponseBuilder(QuizResponse response) { Entity = response; }
public ActionResult SubmitQuiz(TblQuiz objQuiz) { JavaScriptSerializer json_serializer = new JavaScriptSerializer(); TblUser sessionUser = (TblUser)Session["UserSession"]; if (sessionUser == null) { //newException.AddDummyException("In - 333 "); CommonFunctions common = new CommonFunctions(); var password = common.GetEncodePassword("123456"); sessionUser = ur.IsValidUser("*****@*****.**", password, Request.Url.Host); } if (sessionUser.RoleId == 2) { int result = quizRepository.DeleteResponse(objQuiz.QuizId, sessionUser.UserId, 1); } List <QueOptions> lstQueOptions = new List <QueOptions>(); object[] objQueResponse = (object[])json_serializer.DeserializeObject(objQuiz.hdnResponseData); var attempt = quizRepository.GetQuizAttemptByUserID(objQuiz.QuizId, sessionUser.UserId); attempt = attempt + 1; if (objQuiz.completeTime == "0" || string.IsNullOrEmpty(objQuiz.completeTime)) { var durationInSeconds = Convert.ToInt32(objQuiz.Duration) * 60; TimeSpan t = TimeSpan.FromSeconds(durationInSeconds); objQuiz.completeTime = string.Format("{0:D2}:{1:D2}", (int)t.Minutes, t.Seconds); } else { var cTime = objQuiz.completeTime; int index1 = cTime.IndexOf(":"); int index2 = cTime.IndexOf("Minutes"); int index3 = cTime.IndexOf(","); int index4 = cTime.IndexOf("Seconds"); var cMin = cTime.Substring(index1 + 1, (index2 - (index1 + 2))); var cSec = cTime.Substring(index3 + 1, (index4 - (index3 + 2))); var remainingTime = (Convert.ToInt32(cMin) * 60) + Convert.ToInt32(cSec); remainingTime = Convert.ToInt32(objQuiz.Duration * 60) - remainingTime; TimeSpan t = TimeSpan.FromSeconds(remainingTime); objQuiz.completeTime = string.Format("{0:D2}:{1:D2}", (int)t.Minutes, t.Seconds); } foreach (var item in objQueResponse) { QuizResponse quizResponse = new QuizResponse(); quizResponse.QuizId = objQuiz.QuizId; quizResponse.UserId = sessionUser.UserId; quizResponse.Attempt = attempt; foreach (Dictionary <string, object> newItem in (object[])item) { var questionId = newItem["questionId"]; quizResponse.QuestionId = Convert.ToInt32(newItem["questionId"]); quizResponse.QuestionFeedback = Convert.ToString(newItem["queFeedback"]); if (string.IsNullOrEmpty(quizResponse.OptionIds)) { quizResponse.OptionIds = Convert.ToString(newItem["optionId"]); } else { quizResponse.OptionIds += "," + Convert.ToString(newItem["optionId"]); } } QueOptions newQueOption = new QueOptions(); newQueOption.QuestionId = quizResponse.QuestionId; newQueOption.OptionsIds = quizResponse.OptionIds; lstQueOptions.Add(newQueOption); var result = quizRepository.CaptureResponses(quizResponse); } List <TblQuiz> lstAllQuiz = new List <TblQuiz>(); lstAllQuiz = quizRepository.GetQuizForLaunch(objQuiz.QuizId, sessionUser.UserId); int noOfQues = 0; var score = 0; foreach (var question in lstAllQuiz[0].TblQuestions) { if (question.QuestionTypeId == 1) { noOfQues++; foreach (var option in question.TblQuestionOptions) { if (option.CorrectOption == true) { foreach (var que in lstQueOptions) { if (que.QuestionId == question.QuestionId) { if (option.OptionId == Convert.ToInt32(que.OptionsIds)) { score++; } } } } } } if (question.QuestionTypeId == 2) { noOfQues++; int correctCount = 0; int[] Ids = new int[question.TblQuestionOptions.Count]; foreach (var option in question.TblQuestionOptions) { if (option.CorrectOption == true) { Ids[correctCount] = option.OptionId; correctCount++; } } foreach (var item in lstQueOptions) { if (item.QuestionId == question.QuestionId) { var optionIds = item.OptionsIds.Split(','); if (correctCount == optionIds.Length) { var correct = 0; foreach (var option in optionIds) { foreach (var id in Ids) { if (id == Convert.ToInt32(option)) { correct++; } } } if (correctCount == correct) { score++; } } } } } } if (noOfQues == 0) { score = 0; } var scoreResult = quizRepository.CaptureScore(objQuiz, sessionUser.UserId, score, attempt); var emailBody = "Thank you for taking Quiz."; if (noOfQues > 0) { emailBody = "Thank you for taking Quiz. </br> Your score is " + ((score * 100) / noOfQues) + "% <br />"; } //var emailBody = "Thank you for taking Quiz. </br> Your score is " + ((score * 100) / noOfQues) + "% <br />"; var emailSubject = "Quiz Result"; tblEmails objEmail = new tblEmails(); objEmail.EmailTo = sessionUser.EmailId; objEmail.EmailSubject = emailSubject; objEmail.EmailBody = emailBody; if (sessionUser.TenantId != 6) { var emailResult = ur.InsertEmail(objEmail); } newException.AddDummyException("Responses Saved Successfully"); TempData["Message"] = "Responses Saved Successfully"; return(RedirectToAction("ReviewQuiz", new { @QuizId = objQuiz.QuizId })); }