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