Implement persistent review queue
This commit is contained in:
@@ -16,6 +16,7 @@ public class ExamSimulationStore
|
||||
private readonly AnswerStatisticsStore _statistics;
|
||||
private readonly RatingStore _ratings;
|
||||
private readonly ServiceMetrics _metrics;
|
||||
private readonly ReviewQueueStore _reviewQueue;
|
||||
|
||||
public ExamSimulationStore(
|
||||
MongoDatabaseProvider mongo,
|
||||
@@ -23,7 +24,8 @@ public class ExamSimulationStore
|
||||
QuestionAttemptStore attempts,
|
||||
AnswerStatisticsStore statistics,
|
||||
RatingStore ratings,
|
||||
ServiceMetrics metrics)
|
||||
ServiceMetrics metrics,
|
||||
ReviewQueueStore reviewQueue)
|
||||
{
|
||||
_simulations = mongo.Database.GetCollection<ExamSimulation>("ExamSimulations");
|
||||
_outcomes = mongo.Database.GetCollection<Step3Outcome>("Step3Outcomes");
|
||||
@@ -32,6 +34,7 @@ public class ExamSimulationStore
|
||||
_statistics = statistics;
|
||||
_ratings = ratings;
|
||||
_metrics = metrics;
|
||||
_reviewQueue = reviewQueue;
|
||||
_simulations.Indexes.CreateOne(new CreateIndexModel<ExamSimulation>(
|
||||
Builders<ExamSimulation>.IndexKeys.Ascending(item => item.UserId).Ascending(item => item.State)));
|
||||
_simulations.Indexes.CreateOne(new CreateIndexModel<ExamSimulation>(
|
||||
@@ -439,6 +442,7 @@ public class ExamSimulationStore
|
||||
responses.TryGetValue(item.QuestionExternalId, out var response);
|
||||
var choiceId = response?.ChoiceId ?? "";
|
||||
var record = await _attempts.RecordFirstAttemptAsync(item.QuestionExternalId, simulation.UserId, choiceId, choiceId == question.CorrectChoiceId, choiceId == "", item.PresentedChoiceIds);
|
||||
await _reviewQueue.AddFromFirstAttemptAsync(record.Attempt);
|
||||
if (!record.Inserted) continue;
|
||||
_metrics.AttemptCreated();
|
||||
try { await _statistics.IncrementAsync(record.Attempt); } catch { _metrics.CounterFailure(); }
|
||||
|
||||
Reference in New Issue
Block a user