@implements IDisposable;
@inject IMemoryTesterService MemoryTesterService;
@EntityMemory.Name
@foreach (var question in questions) {
var questionWrong = hasBeenSubmitted && !question.IsRevealed && question.Guess != question.Answer;
@if (questionWrong) {
The correct answer was @question.Answer
}
}
@code {
[Parameter]
public MemoryEntityModel EntityMemory { get; set; }
private List questions { get; set; }
private bool hasBeenSubmitted = false;
private bool isCorrect = false;
private bool isWrong = false;
public int Guess { get; set; }
protected override void OnInitialized() {
MemoryTesterService.Subscribe(OnMemoryEvent);
OnRefresh();
}
void IDisposable.Dispose() {
MemoryTesterService.Unsubscribe(OnMemoryEvent);
}
void OnMemoryEvent(MemoryTesterEvent memoryTesterEvent) {
if (memoryTesterEvent == MemoryTesterEvent.OnVerify) {
OnVerify();
}
if (memoryTesterEvent == MemoryTesterEvent.OnRefresh) {
OnRefresh();
}
}
public void OnAnswerEntered(AnswerEventArgs answerEventArgs, MemoryQuestionModel question) {
question.Guess = answerEventArgs.Guess;
MemoryTesterService.Update(question);
}
void OnVerify() {
hasBeenSubmitted = true;
isCorrect = true;
foreach (var question in questions) {
if (question.Answer != question.Guess) {
isCorrect = false;
isWrong = true;
return;
}
}
StateHasChanged();
}
void OnRefresh() {
hasBeenSubmitted = false;
isCorrect = false;
isWrong = false;
questions = (from question in MemoryTesterService.GetQuestions()
where question.MemoryEntityModelId == EntityMemory.Id
select question).ToList();
StateHasChanged();
}
}