mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
got tests working without quiz id
This commit is contained in:
@@ -94,7 +94,6 @@ public static class CoursePlannerExtensions
|
||||
Assignments = module.Assignments
|
||||
.Select((a) => a.validateAssignmentForCanvasId(canvasAssignments))
|
||||
.ToArray(),
|
||||
Quizzes = module.Quizzes.Select((s) => s.validateQuizForCanvasId(canvasQuizzes)).ToArray()
|
||||
};
|
||||
|
||||
if (!moduleIdInCanvas)
|
||||
@@ -124,20 +123,6 @@ public static class CoursePlannerExtensions
|
||||
return assignment;
|
||||
}
|
||||
|
||||
private static LocalQuiz validateQuizForCanvasId(
|
||||
this LocalQuiz quiz,
|
||||
IEnumerable<CanvasQuiz> 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)
|
||||
{
|
||||
var containsDiscussion =
|
||||
|
||||
@@ -91,27 +91,38 @@ public class QuizEditorContext
|
||||
logger.Log("cannot add quiz to canvas, no course stored in planner");
|
||||
return;
|
||||
}
|
||||
var updatedQuiz = await planner.LocalCourse.AddQuizToCanvas(Quiz, canvas);
|
||||
var canvasQuizId = await planner.LocalCourse.AddQuizToCanvas(Quiz, canvas);
|
||||
|
||||
|
||||
|
||||
var courseCanvasId = planner.LocalCourse.Settings.CanvasId;
|
||||
if (courseCanvasId == null)
|
||||
{
|
||||
logger.Log("was able to add course to canvas, but errored while making module item. CourseCanvasId is null");
|
||||
return;
|
||||
}
|
||||
|
||||
var currentModule = getCurrentModule(Quiz, planner.LocalCourse);
|
||||
if (currentModule.CanvasId == null)
|
||||
{
|
||||
logger.Log("was able to add course to canvas, but errored while making module item. module canvasId is null");
|
||||
return;
|
||||
}
|
||||
|
||||
await canvas.CreateModuleItem(
|
||||
(ulong)courseCanvasId,
|
||||
(ulong)currentModule.CanvasId,
|
||||
updatedQuiz.Name,
|
||||
"Quiz",
|
||||
(ulong)updatedQuiz.CanvasId
|
||||
);
|
||||
(ulong)courseCanvasId,
|
||||
(ulong)currentModule.CanvasId,
|
||||
Quiz.Name,
|
||||
"Quiz",
|
||||
(ulong)canvasQuizId
|
||||
);
|
||||
|
||||
await planner.LocalCourse.Modules.First().SortModuleItems(
|
||||
(ulong)courseCanvasId,
|
||||
(ulong)currentModule.CanvasId,
|
||||
canvas
|
||||
);
|
||||
logger.Log("added quiz to canvas");
|
||||
logger.Log($"finished adding quiz {Quiz.Name} to canvas");
|
||||
}
|
||||
|
||||
private static LocalModule getCurrentModule(LocalQuiz newQuiz, LocalCourse course)
|
||||
|
||||
@@ -137,26 +137,6 @@ public static partial class ModuleSyncronizationExtensions
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var localQuiz in localModule.Quizzes.Where(q => q.DueAt > DateTime.Now))
|
||||
{
|
||||
|
||||
var canvasModuleItemContentIds = canvasModulesItems[moduleCanvasId].Select(i => i.ContentId);
|
||||
if (!canvasModuleItemContentIds.Contains(localQuiz.CanvasId))
|
||||
{
|
||||
var canvasAssignmentId =
|
||||
localQuiz.CanvasId
|
||||
?? throw new Exception("cannot create module item if quiz does not have canvas id");
|
||||
await canvas.CreateModuleItem(
|
||||
canvasId,
|
||||
moduleCanvasId,
|
||||
localQuiz.Name,
|
||||
"Quiz",
|
||||
canvasAssignmentId
|
||||
);
|
||||
anyUpdated = true;
|
||||
}
|
||||
}
|
||||
|
||||
return anyUpdated;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,10 +11,10 @@ public static partial class QuizSyncronizationExtensions
|
||||
{
|
||||
public static bool QuizIsCreated(this LocalQuiz localQuiz, IEnumerable<CanvasQuiz> canvasQuizzes)
|
||||
{
|
||||
return canvasQuizzes.Any(q => q.Id == localQuiz.CanvasId);
|
||||
return canvasQuizzes.Any(q => q.Title == localQuiz.Name);
|
||||
}
|
||||
|
||||
public static async Task<LocalQuiz> AddQuizToCanvas(
|
||||
public static async Task<ulong?> AddQuizToCanvas(
|
||||
this LocalCourse localCourse,
|
||||
LocalQuiz localQuiz,
|
||||
CanvasService canvas
|
||||
@@ -23,13 +23,13 @@ public static partial class QuizSyncronizationExtensions
|
||||
if (localCourse.Settings.CanvasId == null)
|
||||
{
|
||||
Console.WriteLine("Cannot add quiz to canvas without canvas course id");
|
||||
return localQuiz;
|
||||
return null;
|
||||
}
|
||||
ulong courseCanvasId = (ulong)localCourse.Settings.CanvasId;
|
||||
|
||||
var canvasAssignmentGroupId = localQuiz.GetCanvasAssignmentGroupId(localCourse.Settings.AssignmentGroups);
|
||||
|
||||
var canvasQuizId = await canvas.Quizzes.Create(courseCanvasId, localQuiz, canvasAssignmentGroupId);
|
||||
return localQuiz with { CanvasId = canvasQuizId };
|
||||
return canvasQuizId;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user