Example #1
0
        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());
        }
Example #2
0
    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));
        }
Example #4
0
        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);
        }
Example #5
0
    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");
        }
Example #7
0
    public static void UpdateQuiz(string json)
    {
        if (quiz != null)
        {
            JsonUtility.FromJsonOverwrite(json, quiz);
        }
        else
        {
            quiz = JsonUtility.FromJson <Quiz>(json);
        }

        quizResponse = new QuizResponse();

        NormalizeAnswers();
    }
Example #8
0
    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();

            }
        }
Example #11
0
        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();
        }
Example #13
0
    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));
    }
Example #14
0
    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;
 }
Example #19
0
        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 }));
        }