@using CanvasModel.EnrollmentTerms @using Management.Web.Shared.Components @using CanvasModel.Courses @using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage @using LocalModels @inject ICanvasService canvas @inject IFileStorageManager fileStorageManager @code { [Parameter, EditorRequired] public Action NewFileCreated { get; set; } = default!; private bool loadingTerms = false; private bool loadingCourses = false; public IEnumerable? localCourses { get; set; } private IEnumerable? terms { get; set; } = null; private IEnumerable? courses { get; set; } = null; private ulong? _selectedTermId { get; set; } private ulong? selectedTermId { get => _selectedTermId; set { _selectedTermId = value; this.InvokeAsync(updateCourses); } } private EnrollmentTermModel? selectedTerm { get => terms?.FirstOrDefault(t => t.Id == selectedTermId); } private ulong? _selectedCourseId { get; set; } private ulong? selectedCourseId { get => _selectedCourseId; set { _selectedCourseId = value; } } private CourseModel? selectedCourse { get => courses?.First(c => c.Id == selectedCourseId); } private List days { get; set; } = new(); private IEnumerable directoriesNotUsed { get; set; } = []; private string? selectedStorageDirectory { get; set; } = null; protected override async Task OnInitializedAsync() { loadingTerms = true; terms = await canvas.GetCurrentTermsFor(); loadingTerms = false; directoriesNotUsed = fileStorageManager.GetEmptyDirectories(); } private async Task SaveNewCourse() { if (selectedCourse != null && selectedStorageDirectory != null && selectedStorageDirectory != string.Empty) { var course = new LocalCourse { Modules = new LocalModule[] { }, Settings = new LocalCourseSettings() { Name = Path.GetFileName(selectedStorageDirectory), CanvasId = selectedCourse.Id, StartDate = selectedTerm?.StartAt ?? new DateTime(), EndDate = selectedTerm?.EndAt ?? new DateTime(), DaysOfWeek = days, } }; await fileStorageManager.SaveCourseAsync(course, null); NewFileCreated(); } await updateCourses(); } private async Task updateCourses() { if (selectedTermId != null) { loadingCourses = true; localCourses = await fileStorageManager.LoadSavedCourses(); var storedCourseIds = localCourses.Select(c => c.Settings.CanvasId); var allCourses = await canvas.GetCourses((ulong)selectedTermId); courses = allCourses.Where(c => !storedCourseIds.Contains(c.Id)); loadingCourses = false; } else courses = null; StateHasChanged(); } } @if (loadingTerms) { } @if (terms != null) {
} @if (selectedTerm is not null) { @if (loadingCourses) { } @if (courses != null) {
}
Select Days Of Week
@foreach (DayOfWeek day in (DayOfWeek[])Enum.GetValues(typeof(DayOfWeek))) {
}
}