/// <summary> /// For getting learning myth quiz details. /// </summary> /// <param name="userId"></param> /// <param name="attempt"></param> /// <param name="quizDetails"></param> /// <returns></returns> public List <QuizAttempts> GetLearningMythQuizAttempts(string userId, int attempt, QuizDetails quizDetails) { var userFilter = Builders <BsonDocument> .Filter.Eq("userid", userId); var latestAttempt = _learningMythAdapter.GetLatestAttemptByUser(userId); List <BsonDocument> result = new List <BsonDocument>(); if (latestAttempt != null) { if (attempt == 1) { var attemptFilter = Builders <BsonDocument> .Filter.Eq("attemptcount", latestAttempt.attemptcount); var userAndAttempt = Builders <BsonDocument> .Filter.And(userFilter, attemptFilter); result = _quizAttempt.GetRecords(_learningMythAttemptsCollection, userAndAttempt); } else { if (latestAttempt.attemptcount > 1) { var attemptFilter = Builders <BsonDocument> .Filter.Eq("attemptcount", latestAttempt.attemptcount - 1); var userAndAttempt = Builders <BsonDocument> .Filter.And(userFilter, attemptFilter); result = _quizAttempt.GetRecords(_learningMythAttemptsCollection, userAndAttempt); } } } var learningMythQuizzes = _learningMythAdapter.GetLearningMythsQuizzes(); List <QuizAttempts> quizAttempts = new List <QuizAttempts>(); foreach (var item in result) { item.TryGetValue("answer", out BsonValue answerValue); item.TryGetValue("userid", out BsonValue useridValue); item.TryGetValue("attemptcount", out BsonValue attemptValue); item.TryGetValue("questionid", out BsonValue questionidValue); var question = learningMythQuizzes.Where(a => a.id == Common.IntegerNullCheck(questionidValue)); quizAttempts.Add(new QuizAttempts { question = question.Count() == 0 ? "" : question.Select(a => a.question).FirstOrDefault().ToString(CultureInfo.InvariantCulture), answer = Common.StringNullCheck(answerValue), userId = Common.StringNullCheck(useridValue), attempt = Common.IntegerNullCheck(attemptValue), type = quizDetails.type }); } return(quizAttempts); }
public int InsertLearningMythsQuizResponse(List <LearningMythsQuizAttempts> learningMythsQuizAttempts) { var latestDetails = _learningMythsAdapter.GetLatestId(); var latestId = 0; var attemptId = _learningMythsAdapter.GetLatestAttemptByUser(learningMythsQuizAttempts[0].userid); if (latestDetails != null) { latestId = latestDetails.id; } foreach (var item in learningMythsQuizAttempts) { latestId++; item.id = latestId; item.attemptcount = (attemptId?.attemptcount ?? 0) + 1; item.attempttimestamp = DateTime.Now.ToString(CultureInfo.InvariantCulture); } return(_learningMythsAdapter.InsertLearningMythQuizAttempts(learningMythsQuizAttempts)); }