From 0881acd1f8a327e5fbe8ec135285e38dd0e00301 Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Wed, 7 Feb 2024 16:21:04 -0700 Subject: [PATCH] hooks --- Management.Test/CanvasModels/TermTests.cs | 2 +- .../Features/CalendarMonthTests.cs | 2 +- .../Features/ConfigurationTests.cs | 2 +- Management.Test/Features/ModuleTests.cs | 2 +- .../Features/SemesterPlannerTests.cs | 2 +- .../Markdown/AssignmentMarkdownTests.cs | 25 ++--- Management.Test/Markdown/FileStorageTests.cs | 101 +++++++++++------- .../Markdown/Quiz/MatchingTests.cs | 2 +- .../Markdown/Quiz/MultipleAnswersTests.cs | 4 +- .../Markdown/Quiz/MultipleChoiceTests.cs | 4 +- .../Markdown/Quiz/TextAnswerTests.cs | 4 +- .../Markdown/RubricMarkdownTests.cs | 4 +- .../Services/CanvasServiceTests.cs | 4 +- Management.Test/Usings.cs | 4 +- Management.Web/ConfigurationSetup.cs | 20 ++-- Management.Web/CustomConsoleExporter.cs | 2 +- .../Module/ModuleItems/DroppableQuiz.razor.cs | 9 +- Management.Web/Pages/Error.cshtml.cs | 32 +++--- Management.Web/Program.cs | 17 ++- Management/Features/Calendar/CalendarMonth.cs | 2 +- .../Features/Configuration/CoursePlanner.cs | 36 ++++--- .../Configuration/PageEditorContext.cs | 2 +- ...AssignemntGroupSyncronizationExtensions.cs | 2 +- .../AssignmentSyncronizationExtensions.cs | 4 +- .../ModuleSyncronizationExtensions.cs | 7 +- Management/GlobalUsings.cs | 4 +- .../Assignments/CanvasAssignment.cs | 4 +- .../Assignments/CanvasAssignmentDate.cs | 2 +- .../Assignments/CanvasAssignmentGroup.cs | 2 +- .../Assignments/CanvasAssignmentOverride.cs | 2 +- .../CanvasExternalToolTagAttributes.cs | 2 +- .../Assignments/CanvasLockInfo.cs | 2 +- .../Assignments/CanvasNeedsGradingCount.cs | 2 +- .../CanvasModels/Assignments/CanvasRubric.cs | 2 +- .../Assignments/CanvasRubricAssociation.cs | 2 +- .../Assignments/CanvasRubricCriteria.cs | 2 +- .../Assignments/CanvasRubricRating.cs | 2 +- .../Assignments/CanvasTurnitinSettings.cs | 2 +- .../CanvasModels/Courses/CalendarLinkModel.cs | 2 +- .../Courses/CourseProgressModel.cs | 12 +-- .../Discussions/DiscussionTopicModel.cs | 2 +- .../Discussions/FileAttachmentModel.cs | 2 +- .../Discussions/TopicEntryModel.cs | 2 +- .../Discussions/TopicReplyModel.cs | 2 +- .../RedundantEnrollmentTermsResponse.cs | 2 +- .../Enrollments/EnrollmentModel.cs | 2 +- .../CanvasModels/Enrollments/GradeModel.cs | 2 +- .../CanvasModels/Modules/CanvasModule.cs | 2 +- .../CanvasModels/Modules/CanvasModuleItem.cs | 2 +- .../Models/CanvasModels/Pages/CanvasPage.cs | 2 +- .../Submissions/MediaCommentModel.cs | 2 +- .../Submissions/SubmissionCommentModel.cs | 2 +- .../Submissions/SubmissionModel.cs | 2 +- .../Users/ActivityStreamObjectModel.cs | 2 +- .../Users/ActivityStreamSummaryEntryModel.cs | 2 +- .../Users/AnonymousUserDisplayModel.cs | 2 +- .../Models/CanvasModels/Users/AvatarModel.cs | 2 +- .../CanvasModels/Users/CourseNicknameModel.cs | 2 +- .../CanvasModels/Users/PageViewLinksModel.cs | 2 +- .../CanvasModels/Users/PageViewModel.cs | 2 +- .../Models/CanvasModels/Users/ProfileModel.cs | 2 +- .../CanvasModels/Users/UserDisplayModel.cs | 2 +- .../Models/CanvasModels/Users/UserModel.cs | 2 +- .../Assignment/AssignemntParseExceptions.cs | 2 +- .../Local/Assignment/AssignmentTemplate.cs | 2 +- .../Local/Assignment/LocalAssignment.cs | 2 +- .../Local/Assignment/LocalAssignmentGroup.cs | 2 +- Management/Models/Local/LocalCoursePage.cs | 2 +- Management/Models/Local/Quiz/LocalQuiz.cs | 4 +- .../Models/Local/Quiz/LocalQuizQuestion.cs | 2 +- .../Services/Canvas/CanvasModuleService.cs | 6 +- .../Services/Canvas/CanvasQuizService.cs | 13 ++- Management/Services/Canvas/CanvasService.cs | 4 +- .../Services/Files/FileConfiguration.cs | 2 +- .../Services/Files/FileStorageManager.cs | 2 +- .../Services/Files/LoadMarkdownCourse.cs | 2 +- Management/Services/WebRequestor.cs | 13 ++- 77 files changed, 239 insertions(+), 204 deletions(-) diff --git a/Management.Test/CanvasModels/TermTests.cs b/Management.Test/CanvasModels/TermTests.cs index 5befac5..f8834ea 100644 --- a/Management.Test/CanvasModels/TermTests.cs +++ b/Management.Test/CanvasModels/TermTests.cs @@ -26,4 +26,4 @@ public class DeserializationTests result.Should().NotBeNull(); result?.EnrollmentTerms?.First().Id.Should().Be(1); } -} \ No newline at end of file +} diff --git a/Management.Test/Features/CalendarMonthTests.cs b/Management.Test/Features/CalendarMonthTests.cs index 439aa80..dfd1373 100644 --- a/Management.Test/Features/CalendarMonthTests.cs +++ b/Management.Test/Features/CalendarMonthTests.cs @@ -42,4 +42,4 @@ public class CalendarMonthTests month.Weeks.Last().Should().BeEquivalentTo(expectedLastWeek); } -} \ No newline at end of file +} diff --git a/Management.Test/Features/ConfigurationTests.cs b/Management.Test/Features/ConfigurationTests.cs index 5bb1989..d331aed 100644 --- a/Management.Test/Features/ConfigurationTests.cs +++ b/Management.Test/Features/ConfigurationTests.cs @@ -23,4 +23,4 @@ // config!.EndDate.Should().Be(endAt); // config!.Days.Should().BeEquivalentTo(daysOfWeek); // } -// } \ No newline at end of file +// } diff --git a/Management.Test/Features/ModuleTests.cs b/Management.Test/Features/ModuleTests.cs index 8991d9e..3c8d570 100644 --- a/Management.Test/Features/ModuleTests.cs +++ b/Management.Test/Features/ModuleTests.cs @@ -37,4 +37,4 @@ // manager.Modules.Count().Should().Be(4); // manager.Modules.ElementAt(3).Assignments.Count().Should().Be(1); // } -// } \ No newline at end of file +// } diff --git a/Management.Test/Features/SemesterPlannerTests.cs b/Management.Test/Features/SemesterPlannerTests.cs index b74ed73..1dedad0 100644 --- a/Management.Test/Features/SemesterPlannerTests.cs +++ b/Management.Test/Features/SemesterPlannerTests.cs @@ -94,4 +94,4 @@ // var semester = new SemesterPlanner(config); // semester.Days.Should().BeEquivalentTo(days); // } -// } \ No newline at end of file +// } diff --git a/Management.Test/Markdown/AssignmentMarkdownTests.cs b/Management.Test/Markdown/AssignmentMarkdownTests.cs index db8c9d1..2ce5c60 100644 --- a/Management.Test/Markdown/AssignmentMarkdownTests.cs +++ b/Management.Test/Markdown/AssignmentMarkdownTests.cs @@ -7,8 +7,8 @@ public class AssignmentMarkdownTests { var assignment = new LocalAssignment() { - Name="test assignment", - Description ="here is the description", + Name = "test assignment", + Description = "here is the description", DueAt = new DateTime(), LockAt = new DateTime(), SubmissionTypes = [AssignmentSubmissionType.ONLINE_UPLOAD], @@ -29,13 +29,13 @@ public class AssignmentMarkdownTests { var assignment = new LocalAssignment() { - Name="test assignment", - Description ="here is the description", + Name = "test assignment", + Description = "here is the description", DueAt = new DateTime(), LockAt = new DateTime(), SubmissionTypes = [AssignmentSubmissionType.ONLINE_UPLOAD], LocalAssignmentGroupName = "Final Project", - Rubric = new List() {} + Rubric = new List() { } }; var assignmentMarkdown = assignment.ToMarkdown(); @@ -48,8 +48,8 @@ public class AssignmentMarkdownTests { var assignment = new LocalAssignment() { - Name="test assignment", - Description ="here is the description", + Name = "test assignment", + Description = "here is the description", DueAt = new DateTime(), LockAt = new DateTime(), SubmissionTypes = [], @@ -71,8 +71,8 @@ public class AssignmentMarkdownTests { var assignment = new LocalAssignment() { - Name="test assignment", - Description ="here is the description", + Name = "test assignment", + Description = "here is the description", DueAt = new DateTime(), LockAt = null, SubmissionTypes = [], @@ -94,7 +94,7 @@ public class AssignmentMarkdownTests { var assignment = new LocalAssignment() { - Name="test assignment", + Name = "test assignment", Description = "", DueAt = new DateTime(), LockAt = new DateTime(), @@ -116,13 +116,14 @@ public class AssignmentMarkdownTests { var assignment = new LocalAssignment() { - Name="test assignment", + Name = "test assignment", Description = "test assignment\n---\nsomestuff", DueAt = new DateTime(), LockAt = new DateTime(), SubmissionTypes = [], LocalAssignmentGroupName = "Final Project", - Rubric = new List() { + Rubric = new List() + { } }; diff --git a/Management.Test/Markdown/FileStorageTests.cs b/Management.Test/Markdown/FileStorageTests.cs index f0f0fad..fe984ac 100644 --- a/Management.Test/Markdown/FileStorageTests.cs +++ b/Management.Test/Markdown/FileStorageTests.cs @@ -72,8 +72,10 @@ public class FileStorageTests [Test] public async Task CourseSettings_CanBeSavedAndLoaded() { - LocalCourse testCourse = new() { - Settings = new() { + LocalCourse testCourse = new() + { + Settings = new() + { AssignmentGroups = [], Name = "Test Course with settings", DaysOfWeek = [DayOfWeek.Monday, DayOfWeek.Wednesday], @@ -96,13 +98,15 @@ public class FileStorageTests [Test] public async Task EmptyCourseModules_CanBeSavedAndLoaded() { - LocalCourse testCourse = new() { + LocalCourse testCourse = new() + { Settings = new() { Name = "Test Course with modules" }, Modules = [ - new() { - Name="test module 1", - Assignments= [], - Quizzes=[] + new() + { + Name = "test module 1", + Assignments = [], + Quizzes = [] } ] }; @@ -118,26 +122,29 @@ public class FileStorageTests [Test] public async Task CourseModules_WithAssignments_CanBeSavedAndLoaded() { - LocalCourse testCourse = new() { + LocalCourse testCourse = new() + { Settings = new() { Name = "Test Course with modules and assignments" }, Modules = [ - new() { - Name="test module 1 with assignments", - Assignments=[ - new () { - Name="test assignment", - Description ="here is the description", + new() + { + Name = "test module 1 with assignments", + Assignments = [ + new() + { + Name = "test assignment", + Description = "here is the description", DueAt = new DateTime(), LockAt = new DateTime(), SubmissionTypes = [AssignmentSubmissionType.ONLINE_UPLOAD], LocalAssignmentGroupName = "Final Project", Rubric = [ - new() {Points = 4, Label="do task 1"}, - new() {Points = 2, Label="do task 2"}, + new() { Points = 4, Label = "do task 1" }, + new() { Points = 2, Label = "do task 2" }, ] } ], - Quizzes=[] + Quizzes = [] } ] }; @@ -156,14 +163,17 @@ public class FileStorageTests [Test] public async Task CourseModules_WithQuizzes_CanBeSavedAndLoaded() { - LocalCourse testCourse = new() { + LocalCourse testCourse = new() + { Settings = new() { Name = "Test Course with modules and quiz" }, Modules = [ - new() { - Name="test module 1 with quiz", - Assignments=[], - Quizzes=[ - new() { + new() + { + Name = "test module 1 with quiz", + Assignments = [], + Quizzes = [ + new() + { Name = "Test Quiz", Description = "quiz description", LockAt = new DateTime(2022, 10, 3, 12, 5, 0), @@ -171,8 +181,9 @@ public class FileStorageTests ShuffleAnswers = true, OneQuestionAtATime = true, LocalAssignmentGroupName = "Assignments", - Questions=[ - new () { + Questions = [ + new() + { Text = "test essay", QuestionType = QuestionType.ESSAY, Points = 1 @@ -196,8 +207,10 @@ public class FileStorageTests [Test] public async Task MarkdownStorage_FullyPopulated_DoesNotLoseData() { - LocalCourse testCourse = new() { - Settings = new () { + LocalCourse testCourse = new() + { + Settings = new() + { AssignmentGroups = [], Name = "Test Course with lots of data", DaysOfWeek = [DayOfWeek.Monday, DayOfWeek.Wednesday], @@ -206,24 +219,27 @@ public class FileStorageTests DefaultDueTime = new() { Hour = 1, Minute = 59 }, }, Modules = [ - new() { - Name= "new test module", + new() + { + Name = "new test module", Assignments = [ - new() { - Name="test assignment", - Description ="here is the description", + new() + { + Name = "test assignment", + Description = "here is the description", DueAt = new DateTime(), LockAt = new DateTime(), SubmissionTypes = [AssignmentSubmissionType.ONLINE_UPLOAD], LocalAssignmentGroupName = "Final Project", Rubric = [ - new() { Points = 4, Label="do task 1" }, - new() { Points = 2, Label="do task 2" }, + new() { Points = 4, Label = "do task 1" }, + new() { Points = 2, Label = "do task 2" }, ] } ], Quizzes = [ - new() { + new() + { Name = "Test Quiz", Description = "quiz description", LockAt = new DateTime(), @@ -233,7 +249,8 @@ public class FileStorageTests LocalAssignmentGroupName = "someId", AllowedAttempts = -1, Questions = [ - new() { + new() + { Text = "test short answer", QuestionType = QuestionType.SHORT_ANSWER, Points = 1 @@ -257,8 +274,10 @@ public class FileStorageTests [Test] public async Task MarkdownStorage_CanPersistPages() { - LocalCourse testCourse = new() { - Settings = new () { + LocalCourse testCourse = new() + { + Settings = new() + { AssignmentGroups = [], Name = "Test Course with page", DaysOfWeek = [DayOfWeek.Monday, DayOfWeek.Wednesday], @@ -267,10 +286,12 @@ public class FileStorageTests DefaultDueTime = new() { Hour = 1, Minute = 59 }, }, Modules = [ - new(){ + new() + { Name = "page test module", Pages = [ - new () { + new() + { Name = "test page persistence", DueAt = new DateTime(), Text = "this is some\n## markdown\n" diff --git a/Management.Test/Markdown/Quiz/MatchingTests.cs b/Management.Test/Markdown/Quiz/MatchingTests.cs index 4e85155..fa78559 100644 --- a/Management.Test/Markdown/Quiz/MatchingTests.cs +++ b/Management.Test/Markdown/Quiz/MatchingTests.cs @@ -80,4 +80,4 @@ Match the following terms & definitions var quiz = LocalQuiz.ParseMarkdown(rawMarkdownQuiz); quiz.Questions.First().Answers.First().Text.Should().Be("statement"); } -} \ No newline at end of file +} diff --git a/Management.Test/Markdown/Quiz/MultipleAnswersTests.cs b/Management.Test/Markdown/Quiz/MultipleAnswersTests.cs index 521cd12..41e6ebe 100644 --- a/Management.Test/Markdown/Quiz/MultipleAnswersTests.cs +++ b/Management.Test/Markdown/Quiz/MultipleAnswersTests.cs @@ -42,7 +42,7 @@ oneline question "; markdown.Should().Contain(expectedQuestionString); } - + [Test] public void CanParseQuestionWithMultipleAnswers() { @@ -80,4 +80,4 @@ Which events are triggered when the user clicks on an input field? firstQuestion.Answers.ElementAt(3).Text.Should().Be("submit"); } -} \ No newline at end of file +} diff --git a/Management.Test/Markdown/Quiz/MultipleChoiceTests.cs b/Management.Test/Markdown/Quiz/MultipleChoiceTests.cs index 1cf1c8b..715076d 100644 --- a/Management.Test/Markdown/Quiz/MultipleChoiceTests.cs +++ b/Management.Test/Markdown/Quiz/MultipleChoiceTests.cs @@ -67,7 +67,7 @@ endline *) true ) false "; - var question = LocalQuizQuestion.ParseMarkdown(questionMarkdown, 0); + var question = LocalQuizQuestion.ParseMarkdown(questionMarkdown, 0); question.Answers.Count().Should().Be(2); } -} \ No newline at end of file +} diff --git a/Management.Test/Markdown/Quiz/TextAnswerTests.cs b/Management.Test/Markdown/Quiz/TextAnswerTests.cs index dc05120..af49a21 100644 --- a/Management.Test/Markdown/Quiz/TextAnswerTests.cs +++ b/Management.Test/Markdown/Quiz/TextAnswerTests.cs @@ -82,7 +82,7 @@ Which events are triggered when the user clicks on an input field? short_answer"; questionMarkdown.Should().Contain(expectedMarkdown); } - + [Test] public void EssayQuestionToMarkdown_IsCorrect() { @@ -111,4 +111,4 @@ Which events are triggered when the user clicks on an input field? essay"; questionMarkdown.Should().Contain(expectedMarkdown); } -} \ No newline at end of file +} diff --git a/Management.Test/Markdown/RubricMarkdownTests.cs b/Management.Test/Markdown/RubricMarkdownTests.cs index 5c52504..bc2be99 100644 --- a/Management.Test/Markdown/RubricMarkdownTests.cs +++ b/Management.Test/Markdown/RubricMarkdownTests.cs @@ -31,7 +31,7 @@ public class RubricMarkdownTests rubric.ElementAt(1).Label.Should().Be("this is the other task"); rubric.ElementAt(1).Points.Should().Be(3); } - + [Test] public void TestCanParseSinglePoint() { @@ -68,4 +68,4 @@ public class RubricMarkdownTests rubric.First().IsExtraCredit.Should().BeTrue(); rubric.First().Label.Should().Be("(Extra Credit) this is the task"); } -} \ No newline at end of file +} diff --git a/Management.Test/Services/CanvasServiceTests.cs b/Management.Test/Services/CanvasServiceTests.cs index 4813da6..5afbcbe 100644 --- a/Management.Test/Services/CanvasServiceTests.cs +++ b/Management.Test/Services/CanvasServiceTests.cs @@ -59,7 +59,7 @@ // }; // Mock mockRequestor = getTermsMock(expectedTerms); // var service = new CanvasService(mockRequestor.Object); - + // var queryDate = new DateTime(2022, 6, 1); // var canvasTerms = await service.GetCurrentTermsFor(queryDate); @@ -83,4 +83,4 @@ // return mockRequestor; // } -// } \ No newline at end of file +// } diff --git a/Management.Test/Usings.cs b/Management.Test/Usings.cs index 9b6fd3c..41fe2b8 100644 --- a/Management.Test/Usings.cs +++ b/Management.Test/Usings.cs @@ -1,3 +1,3 @@ -global using NUnit.Framework; +global using System.Text.Json; global using FluentAssertions; -global using System.Text.Json; \ No newline at end of file +global using NUnit.Framework; diff --git a/Management.Web/ConfigurationSetup.cs b/Management.Web/ConfigurationSetup.cs index 33a9c28..d8d6dc5 100644 --- a/Management.Web/ConfigurationSetup.cs +++ b/Management.Web/ConfigurationSetup.cs @@ -1,14 +1,14 @@ public static class ConfigurationSetup { - public static void Canvas(WebApplicationBuilder builder) + public static void Canvas(WebApplicationBuilder builder) + { + var canvas_token = builder.Configuration["CANVAS_TOKEN"] ?? throw new Exception("CANVAS_TOKEN is null"); + + var canvas_url = builder.Configuration["CANVAS_URL"]; + if (canvas_url == null) { - var canvas_token = builder.Configuration["CANVAS_TOKEN"] ?? throw new Exception("CANVAS_TOKEN is null"); - - var canvas_url = builder.Configuration["CANVAS_URL"]; - if (canvas_url == null) - { - Console.WriteLine("CANVAS_URL is null, defaulting to https://snow.instructure.com"); - builder.Configuration["CANVAS_URL"] = "https://snow.instructure.com"; - } + Console.WriteLine("CANVAS_URL is null, defaulting to https://snow.instructure.com"); + builder.Configuration["CANVAS_URL"] = "https://snow.instructure.com"; } -} \ No newline at end of file + } +} diff --git a/Management.Web/CustomConsoleExporter.cs b/Management.Web/CustomConsoleExporter.cs index 2f232b5..8bd6cde 100644 --- a/Management.Web/CustomConsoleExporter.cs +++ b/Management.Web/CustomConsoleExporter.cs @@ -17,4 +17,4 @@ public class CustomConsoleExporter : BaseExporter } return ExportResult.Success; } -} \ No newline at end of file +} diff --git a/Management.Web/Pages/Course/Module/ModuleItems/DroppableQuiz.razor.cs b/Management.Web/Pages/Course/Module/ModuleItems/DroppableQuiz.razor.cs index 94496c3..ceb55fd 100644 --- a/Management.Web/Pages/Course/Module/ModuleItems/DroppableQuiz.razor.cs +++ b/Management.Web/Pages/Course/Module/ModuleItems/DroppableQuiz.razor.cs @@ -42,10 +42,11 @@ public class DroppableQuiz : ComponentBase ); var NewQuizList = currentModule.Quizzes - .Select(q => - q.Name + q.Description != Quiz.Name + Quiz.Description - ? q : - q with { + .Select(q => + q.Name + q.Description != Quiz.Name + Quiz.Description + ? q : + q with + { DueAt = defaultDueTimeDate, LockAt = q.LockAt > defaultDueTimeDate ? q.LockAt : defaultDueTimeDate } diff --git a/Management.Web/Pages/Error.cshtml.cs b/Management.Web/Pages/Error.cshtml.cs index 4461c14..035afba 100644 --- a/Management.Web/Pages/Error.cshtml.cs +++ b/Management.Web/Pages/Error.cshtml.cs @@ -7,20 +7,20 @@ namespace Management.Web.Pages; [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] [IgnoreAntiforgeryToken] public class ErrorModel : PageModel -{ - public string? RequestId { get; set; } - - public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); - - private readonly ILogger _logger; - - public ErrorModel(ILogger logger) - { - _logger = logger; - } - - public void OnGet() - { - RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; - } +{ + public string? RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + private readonly ILogger _logger; + + public ErrorModel(ILogger logger) + { + _logger = logger; + } + + public void OnGet() + { + RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; + } } diff --git a/Management.Web/Program.cs b/Management.Web/Program.cs index 977ce3a..0b2bfe2 100644 --- a/Management.Web/Program.cs +++ b/Management.Web/Program.cs @@ -1,24 +1,23 @@ -global using System.Text.Json.Serialization; -global using System.Text.Json; global using System.ComponentModel.DataAnnotations; -global using Management.Services.Canvas; -global using Management.Services; -global using CanvasModel.EnrollmentTerms; -global using CanvasModel.Courses; +global using System.Text.Json; +global using System.Text.Json.Serialization; global using CanvasModel; +global using CanvasModel.Courses; +global using CanvasModel.EnrollmentTerms; global using LocalModels; global using Management.Planner; -global using Management.Web.Shared.Components; +global using Management.Services; +global using Management.Services.Canvas; global using Management.Web.Shared; - +global using Management.Web.Shared.Components; using dotenv.net; using Microsoft.AspNetCore.Hosting.Server; using Microsoft.AspNetCore.Hosting.Server.Features; +using OpenTelemetry; using OpenTelemetry.Logs; using OpenTelemetry.Metrics; using OpenTelemetry.Resources; using OpenTelemetry.Trace; -using OpenTelemetry; DotEnv.Load(); diff --git a/Management/Features/Calendar/CalendarMonth.cs b/Management/Features/Calendar/CalendarMonth.cs index 8678c58..32d2742 100644 --- a/Management/Features/Calendar/CalendarMonth.cs +++ b/Management/Features/Calendar/CalendarMonth.cs @@ -79,4 +79,4 @@ public class CalendarMonth Year = year; Month = month; } -} \ No newline at end of file +} diff --git a/Management/Features/Configuration/CoursePlanner.cs b/Management/Features/Configuration/CoursePlanner.cs index 9f245fa..efb7b6c 100644 --- a/Management/Features/Configuration/CoursePlanner.cs +++ b/Management/Features/Configuration/CoursePlanner.cs @@ -1,14 +1,14 @@ -using CanvasModel.EnrollmentTerms; -using CanvasModel.Courses; -using CanvasModel; -using LocalModels; -using CanvasModel.Assignments; -using CanvasModel.Modules; -using Management.Services.Canvas; using System.Text.RegularExpressions; -using CanvasModel.Quizzes; -using Management.Services; +using CanvasModel; +using CanvasModel.Assignments; +using CanvasModel.Courses; +using CanvasModel.EnrollmentTerms; +using CanvasModel.Modules; using CanvasModel.Pages; +using CanvasModel.Quizzes; +using LocalModels; +using Management.Services; +using Management.Services.Canvas; namespace Management.Planner; @@ -181,13 +181,17 @@ public class CoursePlanner CanvasAssignmentGroups = await canvas.AssignmentGroups.GetAll(canvasCourseId); - LocalCourse = LocalCourse with {Settings = LocalCourse.Settings with { - AssignmentGroups = LocalCourse.Settings.AssignmentGroups.Select(g => { - var canvasGroup = CanvasAssignmentGroups.FirstOrDefault(c => c.Name == g.Name); - return canvasGroup == null - ? g - : g with {CanvasId = canvasGroup.Id}; - }) + LocalCourse = LocalCourse with + { + Settings = LocalCourse.Settings with + { + AssignmentGroups = LocalCourse.Settings.AssignmentGroups.Select(g => + { + var canvasGroup = CanvasAssignmentGroups.FirstOrDefault(c => c.Name == g.Name); + return canvasGroup == null + ? g + : g with { CanvasId = canvasGroup.Id }; + }) } }; } diff --git a/Management/Features/Configuration/PageEditorContext.cs b/Management/Features/Configuration/PageEditorContext.cs index 8089478..9f46e0c 100644 --- a/Management/Features/Configuration/PageEditorContext.cs +++ b/Management/Features/Configuration/PageEditorContext.cs @@ -112,7 +112,7 @@ public class PageEditorContext( var canvasModule = getCurrentCanvasModule(Page, planner.LocalCourse); - if(canvasPage != null) + if (canvasPage != null) { await canvas.CreatePageModuleItem( (ulong)courseCanvasId, diff --git a/Management/Features/Configuration/Synchronization/AssignemntGroupSyncronizationExtensions.cs b/Management/Features/Configuration/Synchronization/AssignemntGroupSyncronizationExtensions.cs index 7c20e63..8e4dadb 100644 --- a/Management/Features/Configuration/Synchronization/AssignemntGroupSyncronizationExtensions.cs +++ b/Management/Features/Configuration/Synchronization/AssignemntGroupSyncronizationExtensions.cs @@ -37,4 +37,4 @@ public static partial class AssignmentGroupSyncronizationExtensions return assignmentGroups; } -} \ No newline at end of file +} diff --git a/Management/Features/Configuration/Synchronization/AssignmentSyncronizationExtensions.cs b/Management/Features/Configuration/Synchronization/AssignmentSyncronizationExtensions.cs index 0685f76..f796246 100644 --- a/Management/Features/Configuration/Synchronization/AssignmentSyncronizationExtensions.cs +++ b/Management/Features/Configuration/Synchronization/AssignmentSyncronizationExtensions.cs @@ -140,13 +140,13 @@ public static partial class AssignmentSyncronizationExtensions second: localAssignment.LockAt.Value.Second ) : null; - + if (canvasComparisonLockDate != localComparisonLockDate) { var printableLocal = localComparisonLockDate?.ToString() ?? "null"; var printableCanvas = canvasComparisonLockDate?.ToString() ?? "null"; var reason = $"Lock dates different for assignment {localAssignment.Name}, local: {printableLocal}, in canvas {printableCanvas}"; - + if (!quiet) { // Console.WriteLine(JsonSerializer.Serialize(canvasAssignment)); diff --git a/Management/Features/Configuration/Synchronization/ModuleSyncronizationExtensions.cs b/Management/Features/Configuration/Synchronization/ModuleSyncronizationExtensions.cs index 6b3f69a..06010ef 100644 --- a/Management/Features/Configuration/Synchronization/ModuleSyncronizationExtensions.cs +++ b/Management/Features/Configuration/Synchronization/ModuleSyncronizationExtensions.cs @@ -39,14 +39,15 @@ public static partial class ModuleSyncronizationExtensions { var canvasModuleItems = await canvas.Modules.GetModuleItems(canvasId, moduleCanvasId); var moduleItemsInCorrectOrder = canvasModuleItems - .OrderBy(canvasItem => { + .OrderBy(canvasItem => + { - if(canvasItem.Type == "Page") + if (canvasItem.Type == "Page") { var localPage = localModule.Pages.FirstOrDefault(p => p.Name == canvasItem.Title); Console.WriteLine(JsonSerializer.Serialize(localModule.Pages)); - if(localPage != null) + if (localPage != null) return localPage.DueAt.Date; } return canvasItem.ContentDetails?.DueAt?.Date; diff --git a/Management/GlobalUsings.cs b/Management/GlobalUsings.cs index 403aaaf..4dad470 100644 --- a/Management/GlobalUsings.cs +++ b/Management/GlobalUsings.cs @@ -1,3 +1,3 @@ -global using System.Text.Json.Serialization; global using System.Text.Json; -global using Microsoft.Extensions.Logging; \ No newline at end of file +global using System.Text.Json.Serialization; +global using Microsoft.Extensions.Logging; diff --git a/Management/Models/CanvasModels/Assignments/CanvasAssignment.cs b/Management/Models/CanvasModels/Assignments/CanvasAssignment.cs index 08ccd5d..c6a7c29 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasAssignment.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasAssignment.cs @@ -70,7 +70,7 @@ public record CanvasAssignment [property: JsonPropertyName("allowed_attempts")] int AllowedAttempts, - + [property: JsonPropertyName("is_quiz_assignment")] bool IsQuizAssignment, @@ -208,4 +208,4 @@ public record CanvasAssignment [property: JsonPropertyName("anonymous_grading")] bool? AnonymousGrading = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Assignments/CanvasAssignmentDate.cs b/Management/Models/CanvasModels/Assignments/CanvasAssignmentDate.cs index ddbcb68..e7527a4 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasAssignmentDate.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasAssignmentDate.cs @@ -19,4 +19,4 @@ public record CanvasAssignmentDate [property: JsonPropertyName("lock_at")] DateTime? LockAt = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Assignments/CanvasAssignmentGroup.cs b/Management/Models/CanvasModels/Assignments/CanvasAssignmentGroup.cs index d229a51..015ba70 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasAssignmentGroup.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasAssignmentGroup.cs @@ -26,4 +26,4 @@ public record CanvasAssignmentGroup // [JsonPropertyName("rules")] // public object Rules { get; init; } // The specific type for 'Rules' is not detailed in the spec, so using object for now. -} \ No newline at end of file +} diff --git a/Management/Models/CanvasModels/Assignments/CanvasAssignmentOverride.cs b/Management/Models/CanvasModels/Assignments/CanvasAssignmentOverride.cs index 536aab4..1160ba4 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasAssignmentOverride.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasAssignmentOverride.cs @@ -35,4 +35,4 @@ public record CanvasAssignmentOverride [property: JsonPropertyName("lock_at")] DateTime? LockAt = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Assignments/CanvasExternalToolTagAttributes.cs b/Management/Models/CanvasModels/Assignments/CanvasExternalToolTagAttributes.cs index 6158d82..ab255df 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasExternalToolTagAttributes.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasExternalToolTagAttributes.cs @@ -10,4 +10,4 @@ public record CanvasExternalToolTagAttributes [property: JsonPropertyName("new_tab")] bool? NewTab = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Assignments/CanvasLockInfo.cs b/Management/Models/CanvasModels/Assignments/CanvasLockInfo.cs index 08592fc..ffb422f 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasLockInfo.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasLockInfo.cs @@ -16,4 +16,4 @@ public record CanvasLockInfo [property: JsonPropertyName("manually_locked")] bool? ManuallyLocked = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Assignments/CanvasNeedsGradingCount.cs b/Management/Models/CanvasModels/Assignments/CanvasNeedsGradingCount.cs index 3323507..caabe97 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasNeedsGradingCount.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasNeedsGradingCount.cs @@ -7,4 +7,4 @@ public record CanvasNeedsGradingCount [property: JsonPropertyName("needs_grading_count")] uint NeedsGradingCount -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Assignments/CanvasRubric.cs b/Management/Models/CanvasModels/Assignments/CanvasRubric.cs index 7fff6dd..48d1bc1 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasRubric.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasRubric.cs @@ -34,4 +34,4 @@ public record CanvasRubric // assessments // associations -} \ No newline at end of file +} diff --git a/Management/Models/CanvasModels/Assignments/CanvasRubricAssociation.cs b/Management/Models/CanvasModels/Assignments/CanvasRubricAssociation.cs index 8738571..1c57abe 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasRubricAssociation.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasRubricAssociation.cs @@ -32,4 +32,4 @@ public record CanvasRubricAssociation [JsonPropertyName("hide_outcome-results")] public bool HideOUtcomeResult { get; set; } -} \ No newline at end of file +} diff --git a/Management/Models/CanvasModels/Assignments/CanvasRubricCriteria.cs b/Management/Models/CanvasModels/Assignments/CanvasRubricCriteria.cs index 456388e..c961de8 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasRubricCriteria.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasRubricCriteria.cs @@ -27,4 +27,4 @@ public record CanvasRubricCriteria [property: JsonPropertyName("ignore_for_scoring")] bool? IgnoreForScoring = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Assignments/CanvasRubricRating.cs b/Management/Models/CanvasModels/Assignments/CanvasRubricRating.cs index 46f9ecc..6ed8970 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasRubricRating.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasRubricRating.cs @@ -13,4 +13,4 @@ public record CanvasRubricRating [property: JsonPropertyName("long_description")] string LongDescription -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Assignments/CanvasTurnitinSettings.cs b/Management/Models/CanvasModels/Assignments/CanvasTurnitinSettings.cs index e01cdcb..e0c73f7 100644 --- a/Management/Models/CanvasModels/Assignments/CanvasTurnitinSettings.cs +++ b/Management/Models/CanvasModels/Assignments/CanvasTurnitinSettings.cs @@ -25,4 +25,4 @@ public record CanvasTurnitinSettings [property: JsonPropertyName("exclude_small_matches_value")] uint? ExcludeSmallMatchesValue = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Courses/CalendarLinkModel.cs b/Management/Models/CanvasModels/Courses/CalendarLinkModel.cs index 276412e..1a0635e 100644 --- a/Management/Models/CanvasModels/Courses/CalendarLinkModel.cs +++ b/Management/Models/CanvasModels/Courses/CalendarLinkModel.cs @@ -2,4 +2,4 @@ namespace CanvasModel.Courses; public record CalendarLinkModel ( [property: JsonPropertyName("ics")] string Ics -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Courses/CourseProgressModel.cs b/Management/Models/CanvasModels/Courses/CourseProgressModel.cs index c90dae9..3e4067a 100644 --- a/Management/Models/CanvasModels/Courses/CourseProgressModel.cs +++ b/Management/Models/CanvasModels/Courses/CourseProgressModel.cs @@ -2,15 +2,15 @@ namespace CanvasModel.Courses; public record CourseProgressModel ( - [property: JsonPropertyName("requirement_count")] + [property: JsonPropertyName("requirement_count")] uint? RequirementCount = null, - - [property: JsonPropertyName("requirement_completed_count")] + + [property: JsonPropertyName("requirement_completed_count")] uint? RequirementCompletedCount = null, - [property: JsonPropertyName("next_requirement_url")] + [property: JsonPropertyName("next_requirement_url")] string? NextRequirementUrl = null, - [property: JsonPropertyName("completed_at")] + [property: JsonPropertyName("completed_at")] DateTime? CompletedAt = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Discussions/DiscussionTopicModel.cs b/Management/Models/CanvasModels/Discussions/DiscussionTopicModel.cs index 9662ae5..4f6fe7d 100644 --- a/Management/Models/CanvasModels/Discussions/DiscussionTopicModel.cs +++ b/Management/Models/CanvasModels/Discussions/DiscussionTopicModel.cs @@ -108,4 +108,4 @@ public record DiscussionTopicModel [property: JsonPropertyName("sort_by_rating")] bool? SortByRating = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Discussions/FileAttachmentModel.cs b/Management/Models/CanvasModels/Discussions/FileAttachmentModel.cs index 4d233cb..b196490 100644 --- a/Management/Models/CanvasModels/Discussions/FileAttachmentModel.cs +++ b/Management/Models/CanvasModels/Discussions/FileAttachmentModel.cs @@ -13,4 +13,4 @@ public record FileAttachmentModel [property: JsonPropertyName("display_name")] string DisplayName -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Discussions/TopicEntryModel.cs b/Management/Models/CanvasModels/Discussions/TopicEntryModel.cs index 3a7b212..9d1a814 100644 --- a/Management/Models/CanvasModels/Discussions/TopicEntryModel.cs +++ b/Management/Models/CanvasModels/Discussions/TopicEntryModel.cs @@ -37,4 +37,4 @@ public record TopicEntryModel [property: JsonPropertyName("has_more_replies")] bool? HasMoreReplies = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Discussions/TopicReplyModel.cs b/Management/Models/CanvasModels/Discussions/TopicReplyModel.cs index 35fa8e0..d1a6d91 100644 --- a/Management/Models/CanvasModels/Discussions/TopicReplyModel.cs +++ b/Management/Models/CanvasModels/Discussions/TopicReplyModel.cs @@ -25,4 +25,4 @@ public record TopicReplyModel [property: JsonPropertyName("forced_read_state")] bool? ForcedReadState = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/EnrollmentTerms/RedundantEnrollmentTermsResponse.cs b/Management/Models/CanvasModels/EnrollmentTerms/RedundantEnrollmentTermsResponse.cs index f352cbd..7850973 100644 --- a/Management/Models/CanvasModels/EnrollmentTerms/RedundantEnrollmentTermsResponse.cs +++ b/Management/Models/CanvasModels/EnrollmentTerms/RedundantEnrollmentTermsResponse.cs @@ -2,6 +2,6 @@ namespace CanvasModel.EnrollmentTerms; public record RedundantEnrollmentTermsResponse ( - [property: JsonPropertyName("enrollment_terms")] + [property: JsonPropertyName("enrollment_terms")] IEnumerable EnrollmentTerms ); diff --git a/Management/Models/CanvasModels/Enrollments/EnrollmentModel.cs b/Management/Models/CanvasModels/Enrollments/EnrollmentModel.cs index b316d62..3e1aeb2 100644 --- a/Management/Models/CanvasModels/Enrollments/EnrollmentModel.cs +++ b/Management/Models/CanvasModels/Enrollments/EnrollmentModel.cs @@ -132,4 +132,4 @@ public record EnrollmentModel [property: JsonPropertyName("current_period_unposted_final_grade")] string? CurrentPeriodUnpostedFinalGrade = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Enrollments/GradeModel.cs b/Management/Models/CanvasModels/Enrollments/GradeModel.cs index 3c698ca..9f59140 100644 --- a/Management/Models/CanvasModels/Enrollments/GradeModel.cs +++ b/Management/Models/CanvasModels/Enrollments/GradeModel.cs @@ -30,4 +30,4 @@ public record GradeModel [property: JsonPropertyName("unposted_final_score")] string? UnpostedFinalScore = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Modules/CanvasModule.cs b/Management/Models/CanvasModels/Modules/CanvasModule.cs index 7eaba1a..1eb5bcd 100644 --- a/Management/Models/CanvasModels/Modules/CanvasModule.cs +++ b/Management/Models/CanvasModels/Modules/CanvasModule.cs @@ -15,7 +15,7 @@ public record CanvasModule( [property: JsonPropertyName("items")] IEnumerable? Items, [property: JsonPropertyName("state")] string? State, // todo make sure this, - // [OptIn] + // [OptIn] [property: JsonPropertyName("completed_at")] DateTime? CompletedAt, [property: JsonPropertyName("publish_final_grade")] bool? PublishFinalGrade, diff --git a/Management/Models/CanvasModels/Modules/CanvasModuleItem.cs b/Management/Models/CanvasModels/Modules/CanvasModuleItem.cs index 42bdacd..f835c5f 100644 --- a/Management/Models/CanvasModels/Modules/CanvasModuleItem.cs +++ b/Management/Models/CanvasModels/Modules/CanvasModuleItem.cs @@ -25,4 +25,4 @@ public record CanvasModuleItemContentDetails( [property: JsonPropertyName("lock_at")] DateTime? LockAt, [property: JsonPropertyName("points_possible")] double PointsPossible, [property: JsonPropertyName("locked_for_user")] bool LockedForUser -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Pages/CanvasPage.cs b/Management/Models/CanvasModels/Pages/CanvasPage.cs index 52abe17..1185f2a 100644 --- a/Management/Models/CanvasModels/Pages/CanvasPage.cs +++ b/Management/Models/CanvasModels/Pages/CanvasPage.cs @@ -1,6 +1,6 @@ namespace CanvasModel.Pages; -public record CanvasPage ( +public record CanvasPage( [property: JsonPropertyName("page_id")] ulong PageId, [property: JsonPropertyName("url")] string Url, [property: JsonPropertyName("title")] string Title, diff --git a/Management/Models/CanvasModels/Submissions/MediaCommentModel.cs b/Management/Models/CanvasModels/Submissions/MediaCommentModel.cs index 1f3f485..3476939 100644 --- a/Management/Models/CanvasModels/Submissions/MediaCommentModel.cs +++ b/Management/Models/CanvasModels/Submissions/MediaCommentModel.cs @@ -16,4 +16,4 @@ public record MediaCommentModel [property: JsonPropertyName("url")] string Url -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Submissions/SubmissionCommentModel.cs b/Management/Models/CanvasModels/Submissions/SubmissionCommentModel.cs index 993be71..06f90d3 100644 --- a/Management/Models/CanvasModels/Submissions/SubmissionCommentModel.cs +++ b/Management/Models/CanvasModels/Submissions/SubmissionCommentModel.cs @@ -26,4 +26,4 @@ public record SubmissionCommentModel [property: JsonPropertyName("media_comment")] MediaCommentModel? MediaComment = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Submissions/SubmissionModel.cs b/Management/Models/CanvasModels/Submissions/SubmissionModel.cs index 0e6ab6e..147119c 100644 --- a/Management/Models/CanvasModels/Submissions/SubmissionModel.cs +++ b/Management/Models/CanvasModels/Submissions/SubmissionModel.cs @@ -88,4 +88,4 @@ public record SubmissionModel [property: JsonPropertyName("anonymous_id")] string? AnonymousId = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Users/ActivityStreamObjectModel.cs b/Management/Models/CanvasModels/Users/ActivityStreamObjectModel.cs index 117ae1a..5e0218b 100644 --- a/Management/Models/CanvasModels/Users/ActivityStreamObjectModel.cs +++ b/Management/Models/CanvasModels/Users/ActivityStreamObjectModel.cs @@ -160,4 +160,4 @@ public record ActivityStreamObjectModel [property: JsonPropertyName("assignment_request_id")] ulong? AssignmentRequestId = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Users/ActivityStreamSummaryEntryModel.cs b/Management/Models/CanvasModels/Users/ActivityStreamSummaryEntryModel.cs index 3358628..bf387a7 100644 --- a/Management/Models/CanvasModels/Users/ActivityStreamSummaryEntryModel.cs +++ b/Management/Models/CanvasModels/Users/ActivityStreamSummaryEntryModel.cs @@ -12,4 +12,4 @@ public record ActivityStreamSummaryEntryModel [property: JsonPropertyName("count")] uint Count -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Users/AnonymousUserDisplayModel.cs b/Management/Models/CanvasModels/Users/AnonymousUserDisplayModel.cs index 851e04d..e1727f8 100644 --- a/Management/Models/CanvasModels/Users/AnonymousUserDisplayModel.cs +++ b/Management/Models/CanvasModels/Users/AnonymousUserDisplayModel.cs @@ -7,4 +7,4 @@ public record AnonymousUserDisplayModel [property: JsonPropertyName("avatar_image_url")] string AvatarImageUrl -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Users/AvatarModel.cs b/Management/Models/CanvasModels/Users/AvatarModel.cs index fd6554a..1106d0a 100644 --- a/Management/Models/CanvasModels/Users/AvatarModel.cs +++ b/Management/Models/CanvasModels/Users/AvatarModel.cs @@ -25,4 +25,4 @@ public record AvatarModel [property: JsonPropertyName("size")] ulong Size -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Users/CourseNicknameModel.cs b/Management/Models/CanvasModels/Users/CourseNicknameModel.cs index fe0456b..e7f78e0 100644 --- a/Management/Models/CanvasModels/Users/CourseNicknameModel.cs +++ b/Management/Models/CanvasModels/Users/CourseNicknameModel.cs @@ -10,4 +10,4 @@ public record CourseNicknameModel [property: JsonPropertyName("nickname")] string Nickname -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Users/PageViewLinksModel.cs b/Management/Models/CanvasModels/Users/PageViewLinksModel.cs index 5406036..3d22764 100644 --- a/Management/Models/CanvasModels/Users/PageViewLinksModel.cs +++ b/Management/Models/CanvasModels/Users/PageViewLinksModel.cs @@ -16,4 +16,4 @@ public record PageViewLinksModel [property: JsonPropertyName("account")] ulong? Account = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Users/PageViewModel.cs b/Management/Models/CanvasModels/Users/PageViewModel.cs index 7a64711..62f69ef 100644 --- a/Management/Models/CanvasModels/Users/PageViewModel.cs +++ b/Management/Models/CanvasModels/Users/PageViewModel.cs @@ -50,4 +50,4 @@ public record PageViewModel [property: JsonPropertyName("participated")] bool? Participated = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Users/ProfileModel.cs b/Management/Models/CanvasModels/Users/ProfileModel.cs index b1e63f2..bef7721 100644 --- a/Management/Models/CanvasModels/Users/ProfileModel.cs +++ b/Management/Models/CanvasModels/Users/ProfileModel.cs @@ -43,4 +43,4 @@ public record ProfileModel [property: JsonPropertyName("locale")] string Locale -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Users/UserDisplayModel.cs b/Management/Models/CanvasModels/Users/UserDisplayModel.cs index bc62f69..e4bc783 100644 --- a/Management/Models/CanvasModels/Users/UserDisplayModel.cs +++ b/Management/Models/CanvasModels/Users/UserDisplayModel.cs @@ -22,4 +22,4 @@ public record UserDisplayModel [property: JsonPropertyName("pronouns")] string? Pronouns = null -); \ No newline at end of file +); diff --git a/Management/Models/CanvasModels/Users/UserModel.cs b/Management/Models/CanvasModels/Users/UserModel.cs index 436c55e..0139727 100644 --- a/Management/Models/CanvasModels/Users/UserModel.cs +++ b/Management/Models/CanvasModels/Users/UserModel.cs @@ -53,4 +53,4 @@ public record UserModel [property: JsonPropertyName("last_login")] DateTime? LastLogin = null -); \ No newline at end of file +); diff --git a/Management/Models/Local/Assignment/AssignemntParseExceptions.cs b/Management/Models/Local/Assignment/AssignemntParseExceptions.cs index bb54163..08402bf 100644 --- a/Management/Models/Local/Assignment/AssignemntParseExceptions.cs +++ b/Management/Models/Local/Assignment/AssignemntParseExceptions.cs @@ -7,4 +7,4 @@ public class RubricMarkdownParseException : Exception public class AssignmentMarkdownParseException : Exception { public AssignmentMarkdownParseException(string message) : base(message) { } -} \ No newline at end of file +} diff --git a/Management/Models/Local/Assignment/AssignmentTemplate.cs b/Management/Models/Local/Assignment/AssignmentTemplate.cs index 5d94d31..6615643 100644 --- a/Management/Models/Local/Assignment/AssignmentTemplate.cs +++ b/Management/Models/Local/Assignment/AssignmentTemplate.cs @@ -26,5 +26,5 @@ public record AssignmentTemplate // } // return html; // } - + } diff --git a/Management/Models/Local/Assignment/LocalAssignment.cs b/Management/Models/Local/Assignment/LocalAssignment.cs index a1f9159..c6d8109 100644 --- a/Management/Models/Local/Assignment/LocalAssignment.cs +++ b/Management/Models/Local/Assignment/LocalAssignment.cs @@ -6,7 +6,7 @@ using YamlDotNet.Serialization; namespace LocalModels; -public record LocalAssignment: IModuleItem +public record LocalAssignment : IModuleItem { private string _name = ""; public string Name diff --git a/Management/Models/Local/Assignment/LocalAssignmentGroup.cs b/Management/Models/Local/Assignment/LocalAssignmentGroup.cs index 8c13c66..44253f6 100644 --- a/Management/Models/Local/Assignment/LocalAssignmentGroup.cs +++ b/Management/Models/Local/Assignment/LocalAssignmentGroup.cs @@ -6,4 +6,4 @@ public record LocalAssignmentGroup public string Id { get; init; } = string.Empty; public required string Name { get; init; } public double Weight { get; init; } -} \ No newline at end of file +} diff --git a/Management/Models/Local/LocalCoursePage.cs b/Management/Models/Local/LocalCoursePage.cs index 8742dfb..dd5c922 100644 --- a/Management/Models/Local/LocalCoursePage.cs +++ b/Management/Models/Local/LocalCoursePage.cs @@ -1,6 +1,6 @@ namespace LocalModels; -public record LocalCoursePage: IModuleItem +public record LocalCoursePage : IModuleItem { public required string Name { get; init; } public required string Text { get; set; } diff --git a/Management/Models/Local/Quiz/LocalQuiz.cs b/Management/Models/Local/Quiz/LocalQuiz.cs index 2295b3a..9bf1b2a 100644 --- a/Management/Models/Local/Quiz/LocalQuiz.cs +++ b/Management/Models/Local/Quiz/LocalQuiz.cs @@ -3,7 +3,7 @@ using YamlDotNet.Serialization; namespace LocalModels; -public record LocalQuiz: IModuleItem +public record LocalQuiz : IModuleItem { public required string Name { get; init; } @@ -171,7 +171,7 @@ Description: {Description} public class QuizMarkdownParseException : Exception { - public QuizMarkdownParseException(string message): base(message) + public QuizMarkdownParseException(string message) : base(message) { } diff --git a/Management/Models/Local/Quiz/LocalQuizQuestion.cs b/Management/Models/Local/Quiz/LocalQuizQuestion.cs index 6c3b4be..80f8438 100644 --- a/Management/Models/Local/Quiz/LocalQuizQuestion.cs +++ b/Management/Models/Local/Quiz/LocalQuizQuestion.cs @@ -35,7 +35,7 @@ public record LocalQuizQuestion return $"{questionTypeIndicator}{multilineMarkdownCompatibleText}"; } - else if(QuestionType == "matching") + else if (QuestionType == "matching") { return $"^ {answer.Text} - {answer.MatchedText}"; } diff --git a/Management/Services/Canvas/CanvasModuleService.cs b/Management/Services/Canvas/CanvasModuleService.cs index 1b98432..6a864de 100644 --- a/Management/Services/Canvas/CanvasModuleService.cs +++ b/Management/Services/Canvas/CanvasModuleService.cs @@ -63,10 +63,12 @@ public class CanvasModuleService if (items == null) throw new Exception($"Error getting canvas module items for {url}"); return items.Select(i => - i with { + i with + { ContentDetails = i.ContentDetails == null ? null - : i.ContentDetails with { + : i.ContentDetails with + { DueAt = i.ContentDetails.DueAt?.ToLocalTime(), LockAt = i.ContentDetails.LockAt?.ToLocalTime(), } diff --git a/Management/Services/Canvas/CanvasQuizService.cs b/Management/Services/Canvas/CanvasQuizService.cs index c9cbc44..35eaa2e 100644 --- a/Management/Services/Canvas/CanvasQuizService.cs +++ b/Management/Services/Canvas/CanvasQuizService.cs @@ -117,14 +117,16 @@ public class CanvasQuizService( await Task.WhenAll(tasks); } - private async Task hackFixQuestionOrdering(ulong canvasCourseId, ulong canvasQuizId, IEnumerable<(CanvasQuizQuestion question, int position)> questionAndPositions ) + private async Task hackFixQuestionOrdering(ulong canvasCourseId, ulong canvasQuizId, IEnumerable<(CanvasQuizQuestion question, int position)> questionAndPositions) { using var activity = DiagnosticsConfig.Source.StartActivity("hack fixing question ordering with reorder"); activity?.SetCustomProperty("canvasQuizId", canvasQuizId); activity?.SetTag("canvas syncronization", true); - var order = questionAndPositions.OrderBy(t => t.position).Select(tuple => { - return new { + var order = questionAndPositions.OrderBy(t => t.position).Select(tuple => + { + return new + { type = "question", id = tuple.question.Id.ToString(), }; @@ -182,9 +184,10 @@ public class CanvasQuizService( private static object[] getAnswers(LocalQuizQuestion q) { - if(q.QuestionType == QuestionType.MATCHING) + if (q.QuestionType == QuestionType.MATCHING) return q.Answers - .Select(a => new { + .Select(a => new + { answer_match_left = a.Text, answer_match_right = a.MatchedText }) diff --git a/Management/Services/Canvas/CanvasService.cs b/Management/Services/Canvas/CanvasService.cs index ee637cd..95619ab 100644 --- a/Management/Services/Canvas/CanvasService.cs +++ b/Management/Services/Canvas/CanvasService.cs @@ -1,11 +1,11 @@ -using Microsoft.Extensions.Logging; using CanvasModel; using CanvasModel.Assignments; using CanvasModel.Courses; using CanvasModel.EnrollmentTerms; using CanvasModel.Modules; -using RestSharp; using CanvasModel.Pages; +using Microsoft.Extensions.Logging; +using RestSharp; namespace Management.Services.Canvas; diff --git a/Management/Services/Files/FileConfiguration.cs b/Management/Services/Files/FileConfiguration.cs index f1bd4b5..ce7c8c1 100644 --- a/Management/Services/Files/FileConfiguration.cs +++ b/Management/Services/Files/FileConfiguration.cs @@ -14,4 +14,4 @@ public class FileConfiguration(IConfiguration config) return basePath; } -} \ No newline at end of file +} diff --git a/Management/Services/Files/FileStorageManager.cs b/Management/Services/Files/FileStorageManager.cs index 0bf2e78..58b45db 100644 --- a/Management/Services/Files/FileStorageManager.cs +++ b/Management/Services/Files/FileStorageManager.cs @@ -47,7 +47,7 @@ public class FileStorageManager public IEnumerable GetEmptyDirectories() { - if(!Directory.Exists(_basePath)) + if (!Directory.Exists(_basePath)) throw new DirectoryNotFoundException($"Cannot get empty directories, {_basePath} does not exist"); return Directory diff --git a/Management/Services/Files/LoadMarkdownCourse.cs b/Management/Services/Files/LoadMarkdownCourse.cs index 6b3f802..e4aa5b1 100644 --- a/Management/Services/Files/LoadMarkdownCourse.cs +++ b/Management/Services/Files/LoadMarkdownCourse.cs @@ -25,7 +25,7 @@ public class CourseMarkdownLoader }) .Select(async d => await LoadCourseByPath(d)) ); - return courses.OrderBy(c=>c.Settings.Name); + return courses.OrderBy(c => c.Settings.Name); } public async Task LoadCourseByPath(string courseDirectory) diff --git a/Management/Services/WebRequestor.cs b/Management/Services/WebRequestor.cs index 6016c91..02b1a8a 100644 --- a/Management/Services/WebRequestor.cs +++ b/Management/Services/WebRequestor.cs @@ -45,12 +45,15 @@ public class WebRequestor : IWebRequestor var response = await client.ExecutePostAsync(request); - if (isRateLimited(response)) { - if(retryCount < rateLimitRetryCount){ + if (isRateLimited(response)) + { + if (retryCount < rateLimitRetryCount) + { logger.LogInformation($"hit rate limit on post, retry count is {retryCount} / {rateLimitRetryCount}, retrying"); Console.WriteLine($"hit rate limit on post, retry count is {retryCount} / {rateLimitRetryCount}, retrying"); Thread.Sleep(rateLimitSleepInterval); - return await rateLimitAwarePostAsync(request, retryCount + 1);} + return await rateLimitAwarePostAsync(request, retryCount + 1); + } } if (!response.IsSuccessful) @@ -63,7 +66,7 @@ public class WebRequestor : IWebRequestor private static bool isRateLimited(RestResponse response) { - if(response.Content == null) + if (response.Content == null) return false; return response.StatusCode == HttpStatusCode.Forbidden && response.Content.Contains("403 Forbidden (Rate Limit Exceeded)"); @@ -110,7 +113,7 @@ public class WebRequestor : IWebRequestor { if (e.StatusCode == HttpStatusCode.Forbidden) // && response.Content == "403 Forbidden (Rate Limit Exceeded)" { - if(retryCount < rateLimitRetryCount) + if (retryCount < rateLimitRetryCount) { logger.LogInformation($"hit rate limit in delete, retry count is {retryCount} / {rateLimitRetryCount}, retrying"); Console.WriteLine($"hit rate limit in delete, retry count is {retryCount} / {rateLimitRetryCount}, retrying");