@page "/course/{CourseName}/quiz/{QuizName}" @using CanvasModel.EnrollmentTerms @using CanvasModel.Quizzes @using Management.Web.Shared.Components.AssignmentForm @using Management.Web.Shared.Course @using Management.Web.Shared.Module.Assignment.Templates @using Management.Web.Shared.Semester @using CanvasModel.Courses @using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage @using LocalModels @using Management.Web.Shared.Module.Assignment @using Management.Web.Shared.Components @using Management.Web.Shared.Components.Quiz.Markdown @inject FileStorageManager fileStorageManager @inject CanvasService canvas @inject CoursePlanner planner @inject QuizEditorContext quizContext @inject ILogger logger @inject NavigationManager Navigation @code { [Parameter] public string? CourseName { get; set; } = default!; [Parameter] public string? QuizName { get; set; } = default!; private bool loading { get; set; } = true; private bool addingQuizToCanvas = false; protected override void OnInitialized() { quizContext.StateHasChanged += reload; } private void reload() { this.InvokeAsync(this.StateHasChanged); } public void Dispose() { quizContext.StateHasChanged -= reload; } protected override async Task OnInitializedAsync() { if (loading) { loading = false; logger.LogInformation($"loading quiz {CourseName} {QuizName}"); if (planner.LocalCourse == null) { var courses = await fileStorageManager.LoadSavedCourses(); planner.LocalCourse = courses.First(c => c.Settings.Name == CourseName); logger.LogInformation($"set course to '{planner.LocalCourse?.Settings.Name}'"); } if (quizContext.Quiz == null) { var quiz = planner .LocalCourse? .Modules .SelectMany(m => m.Quizzes) .FirstOrDefault(q => q.Name == QuizName); quizContext.Quiz = quiz; logger.LogInformation($"set quiz to '{quizContext.Quiz?.Name}'"); } StateHasChanged(); if (planner.CanvasQuizzes == null) { await planner.LoadCanvasData(); } base.OnInitialized(); StateHasChanged(); } } private void deleteQuiz() { quizContext.DeleteQuiz(); Navigation.NavigateTo("/course/" + planner.LocalCourse?.Settings.Name); } private async Task addToCanvas() { addingQuizToCanvas = true; await quizContext.AddQuizToCanvas(); await planner.LoadCanvasData(); addingQuizToCanvas = false; } private void done() { quizContext.Quiz = null; Navigation.NavigateTo("/course/" + planner.LocalCourse?.Settings.Name); } private CanvasQuiz? quizInCanvas => planner.CanvasQuizzes?.FirstOrDefault(q => q.Title == quizContext.Quiz?.Name); private string canvasQuizUrl => $"https://snow.instructure.com/courses/{planner.LocalCourse?.Settings.CanvasId}/quizzes/{quizInCanvas?.Id}"; private int? quizPoints => quizContext.Quiz?.Questions.Sum(q => q.Points); }

@quizContext.Quiz?.Name

@if (quizContext.Quiz == null) {
}

Points: @quizPoints

@if (quizInCanvas != null) { @if (quizInCanvas?.Published == true) {
Published!
} else {
Not Published
} }
@if (quizContext.Quiz != null) { }

@if (quizContext.Quiz != null) {
@if (quizInCanvas != null) { View in Canvas }
} @if (addingQuizToCanvas) { }