@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; } = default!;
private List questions { get; set; } = default!;
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();
}
}