Пример #1
0
        public IActionResult SaveCandidateAnswer([FromBody] QuestionCustomModel value)
        {
            Dictionary <string, string> email = new Dictionary <string, string>();

            QuestionHandler qh   = new QuestionHandler();
            Authentication  auth = new Authentication();

            email = auth.getAllClaims(HttpContext);

            string joinValue      = qh.radioOrCheckBoxValue(value);
            var    checkAnswer    = db.Questions.Where(s => s.Id == Int32.Parse(value.QId)).Select(a => new { a.Answer, a.Weightage }).FirstOrDefault();
            var    existingAnswer = db.CandidateResult.Where(s => s.Email == email["Email"] && s.TestCode == value.Code).FirstOrDefault();

            if (checkAnswer.Answer == joinValue)
            {
                qh.SaveCorrectOption(checkAnswer, existingAnswer, email["Email"], value, joinValue);
            }
            else
            {
                qh.SaveIncorrectOption(checkAnswer, existingAnswer, email["Email"], value, joinValue);
            }
            return(Ok(new { msg = "data saved" }));
        }
Пример #2
0
        public void SaveIncorrectOption(dynamic checkAnswer, dynamic existingAnswer, string email, QuestionCustomModel value, string checkedOption)
        {
            CandidateAnswer answerDetails;
            CandidateResult resultDetails;
            Boolean         status;

            if (existingAnswer == null)
            {
                answerDetails = AnswerDetailsObject(email, value.Code, value.QId, 0, checkedOption);
                resultDetails = ResultDetailsObject(0, email, value.Code, 0);
                db.CandidateAnswer.Add(answerDetails);
                db.CandidateResult.Add(resultDetails);
                db.SaveChanges();
            }
            else
            {
                int updatedScore = existingAnswer.TotalScore - checkAnswer.Weightage;
                status = CheckExistingWrongOption(checkedOption, value.QId, value.Code, email, updatedScore);
                if (!status)
                {
                    answerDetails = AnswerDetailsObject(email, value.Code, value.QId, 0, checkedOption);
                    db.CandidateAnswer.Add(answerDetails);
                    db.SaveChanges();
                }
            }
        }
Пример #3
0
        public void SaveCorrectOption(dynamic checkAnswer, dynamic existingAnswer, string email, QuestionCustomModel value, string checkedOption)
        {
            CandidateAnswer answerDetails;
            CandidateResult resultDetails;
            Boolean         status;

            if (existingAnswer == null)
            {
                answerDetails = AnswerDetailsObject(email, value.Code, value.QId, 1, checkedOption);
                resultDetails = ResultDetailsObject(checkAnswer.Weightage, email, value.Code, 0);
                db.CandidateAnswer.Add(answerDetails);
                db.CandidateResult.Add(resultDetails);
                db.SaveChanges();
            }
            else
            {
                int updatedScore = existingAnswer.TotalScore + checkAnswer.Weightage;
                status = CheckExisitingRightOption(checkedOption, value.QId, value.Code, email, updatedScore);
                if (!status)
                {
                    answerDetails = AnswerDetailsObject(email, value.Code, value.QId, 1, checkedOption);
                    db.CandidateAnswer.Add(answerDetails);
                    db.CandidateResult.Where(s => s.Email == email && s.TestCode == value.Code).ToList().ForEach(x => x.TotalScore = updatedScore);
                    db.SaveChanges();
                }
            }
        }