+
Answers:
@if(questionType == QuestionType.MULTIPLE_ANSWERS || questionType == QuestionType.MULTIPLE_CHOICE)
diff --git a/Management/Features/Configuration/CoursePlanner.cs b/Management/Features/Configuration/CoursePlanner.cs
index 2870ed0..19bd0b1 100644
--- a/Management/Features/Configuration/CoursePlanner.cs
+++ b/Management/Features/Configuration/CoursePlanner.cs
@@ -79,7 +79,8 @@ public class CoursePlanner
public async Task<(
IEnumerable
CanvasAssignments,
IEnumerable CanvasModules,
- Dictionary> CanvasModulesItems
+ Dictionary> CanvasModulesItems,
+ IEnumerable canvasQuizzes
)> LoadCanvasData()
{
LoadingCanvasData = true;
@@ -100,7 +101,7 @@ public class CoursePlanner
LoadingCanvasData = false;
StateHasChanged?.Invoke();
- return (CanvasAssignments, CanvasModules, CanvasModulesItems);
+ return (CanvasAssignments, CanvasModules, CanvasModulesItems, CanvasQuizzes);
}
public async Task SyncWithCanvas()
@@ -118,10 +119,14 @@ public class CoursePlanner
LoadingCanvasData = true;
StateHasChanged?.Invoke();
- var (canvasAssignments, canvasModules, canvasModuleItems) = await LoadCanvasData();
+ var (canvasAssignments, canvasModules, canvasModuleItems, canvasQuizzes) = await LoadCanvasData();
LoadingCanvasData = true;
StateHasChanged?.Invoke();
- LocalCourse = LocalCourse.deleteCanvasIdsThatNoLongerExist(canvasModules, canvasAssignments);
+ LocalCourse = LocalCourse.deleteCanvasIdsThatNoLongerExist(
+ canvasModules,
+ canvasAssignments,
+ canvasQuizzes
+ );
var canvasId =
LocalCourse.CanvasId ?? throw new Exception("no course canvas id to sync with canvas");
diff --git a/Management/Features/Configuration/CoursePlannerValidationExtensions.cs b/Management/Features/Configuration/CoursePlannerValidationExtensions.cs
index 66238aa..1c6f95f 100644
--- a/Management/Features/Configuration/CoursePlannerValidationExtensions.cs
+++ b/Management/Features/Configuration/CoursePlannerValidationExtensions.cs
@@ -1,5 +1,6 @@
using CanvasModel.Assignments;
using CanvasModel.Modules;
+using CanvasModel.Quizzes;
using LocalModels;
namespace Management.Planner;
@@ -43,13 +44,14 @@ public static class CoursePlannerExtensions
public static LocalCourse deleteCanvasIdsThatNoLongerExist(
this LocalCourse localCourse,
IEnumerable canvasModules,
- IEnumerable canvasAssignments
+ IEnumerable canvasAssignments,
+ IEnumerable canvasQuizzes
)
{
Console.WriteLine("checking canvas ids still exist");
var correctedModules = localCourse.Modules
- .Select((m) => m.validateCanvasIds(canvasModules, canvasAssignments))
+ .Select((m) => m.validateCanvasIds(canvasModules, canvasAssignments, canvasQuizzes))
.ToArray();
return localCourse with
@@ -61,7 +63,8 @@ public static class CoursePlannerExtensions
private static LocalModule validateCanvasIds(
this LocalModule module,
IEnumerable canvasModules,
- IEnumerable canvasAssignments
+ IEnumerable canvasAssignments,
+ IEnumerable canvasQuizzes
)
{
var moduleIdInCanvas = canvasModules.FirstOrDefault(m => m.Id == module.CanvasId) != null;
@@ -69,7 +72,8 @@ public static class CoursePlannerExtensions
{
Assignments = module.Assignments
.Select((a) => a.validateAssignmentForCanvasId(canvasAssignments))
- .ToArray()
+ .ToArray(),
+ Quizzes = module.Quizzes.Select((s) => s.validateQuizForCanvasId(canvasQuizzes)).ToArray()
};
if (!moduleIdInCanvas)
@@ -98,6 +102,22 @@ public static class CoursePlannerExtensions
}
return assignment;
}
+ private static LocalQuiz validateQuizForCanvasId(
+ this LocalQuiz quiz,
+ IEnumerable canvasQuizzes
+ )
+ {
+ var assignmentIdInCanvas =
+ canvasQuizzes.FirstOrDefault(cq => cq.Id == quiz.CanvasId) != null;
+ if (!assignmentIdInCanvas)
+ {
+ Console.WriteLine(
+ $"no id in canvas for quiz, removing old canvas id: {quiz.Name}"
+ );
+ return quiz with { CanvasId = null };
+ }
+ return quiz;
+ }
public static LocalAssignment validateSubmissionTypes(this LocalAssignment assignment)
{
diff --git a/Management/Services/Canvas/CanvasQuizService.cs b/Management/Services/Canvas/CanvasQuizService.cs
index 8bc475b..baa1377 100644
--- a/Management/Services/Canvas/CanvasQuizService.cs
+++ b/Management/Services/Canvas/CanvasQuizService.cs
@@ -30,7 +30,7 @@ public class CanvasQuizService
public async Task Create(ulong canvasCourseId, LocalQuiz localQuiz)
{
- Console.WriteLine($"Creating Quiz ${localQuiz.Name}");
+ Console.WriteLine($"Creating Quiz {localQuiz.Name}");
var url = $"courses/{canvasCourseId}/quizzes";
var body = new