fixed assignment rendering bug, removed canvas id from assignment

This commit is contained in:
2023-11-15 11:38:33 -07:00
parent 8d83e0ecd4
commit 2ac0449935
7 changed files with 34 additions and 111 deletions

View File

@@ -22,7 +22,7 @@ public static partial class AssignmentSyncronizationExtensions
{
var canvasAssignment = canvasAssignments.FirstOrDefault(
ca => ca.Id == localAssignment.CanvasId
ca => ca.Name == localAssignment.Name
);
string localHtmlDescription = localAssignment.GetDescriptionHtml();
@@ -61,7 +61,7 @@ public static partial class AssignmentSyncronizationExtensions
{
await canvas.Assignments.Update(
courseId: canvasCourseId,
canvasAssignmentId: (ulong) localAssignment.CanvasId,
canvasAssignmentId: canvasAssignment.Id,
localAssignment,
localHtmlDescription,
(ulong)canvasAssignmentGroupId
@@ -164,8 +164,8 @@ public static partial class AssignmentSyncronizationExtensions
var submissionTypesSame = canvasAssignment.SubmissionTypes.SequenceEqual(
localAssignment.SubmissionTypes.Select(t => t.ToString())
);
var assignmentGroupSame =
canvasAssignmentGroupId != null
var assignmentGroupSame =
canvasAssignmentGroupId != null
&& canvasAssignmentGroupId == canvasAssignment.AssignmentGroupId;
if (!quiet)
@@ -223,7 +223,7 @@ public static partial class AssignmentSyncronizationExtensions
Console.WriteLine(
$"Submission Types different for {localAssignment.Name}, local: {JsonSerializer.Serialize(localAssignment.SubmissionTypes.Select(t => t.ToString()))}, in canvas {JsonSerializer.Serialize(canvasAssignment.SubmissionTypes)}"
);
if(!assignmentGroupSame)
if (!assignmentGroupSame)
Console.WriteLine(
$"Canvas assignment group ids different for {localAssignment.Name}, local: {canvasAssignmentGroupId}, in canvas {canvasAssignment.AssignmentGroupId}"
);

View File

@@ -1,3 +1,4 @@
using CanvasModel.Assignments;
using CanvasModel.Modules;
using LocalModels;
using Management.Services.Canvas;
@@ -95,24 +96,25 @@ public static partial class ModuleSyncronizationExtensions
ulong canvasId,
CanvasModule canvasModule,
Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>> canvasModulesItems,
CanvasService canvas
CanvasService canvas,
IEnumerable<CanvasAssignment> canvasAssignments
)
{
var anyUpdated = false;
foreach (var localAssignment in localModule.Assignments.Where(a => a.DueAt > DateTime.Now))
{
var canvasModuleItemContentIds = canvasModulesItems[canvasModule].Select(i => i.ContentId);
if (!canvasModuleItemContentIds.Contains(localAssignment.CanvasId))
var canvasModuleItemContentNames = canvasModulesItems[canvasModule].Select(i => i.Title);
if (!canvasModuleItemContentNames.Contains(localAssignment.Name))
{
var canvasAssignmentId =
localAssignment.CanvasId
?? throw new Exception("cannot create module item if assignment does not have canvas id");
var canvasAssignment = canvasAssignments.FirstOrDefault(a => a.Name == localAssignment.Name)
?? throw new Exception($"cannot create module item if cannot find canvas assignment with name {localAssignment.Name}");
await canvas.CreateModuleItem(
canvasId,
canvasModule.Id,
localAssignment.Name,
"Assignment",
canvasAssignmentId
canvasAssignment.Id
);
anyUpdated = true;
}
@@ -125,23 +127,22 @@ public static partial class ModuleSyncronizationExtensions
this LocalCourse localCourse,
ulong courseCanvasId,
Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>> canvasModulesItems,
CanvasService canvas
CanvasService canvas,
IEnumerable<CanvasAssignment> canvasAssignments
)
{
foreach (var localModule in localCourse.Modules)
{
// var moduleCanvasId =
// localModule.CanvasId
// ?? throw new Exception("cannot sync canvas modules items if module not synced with canvas");
await localModule.SyncAndSortCanvasModule(courseCanvasId, canvasModulesItems, canvas);
await localModule.SyncAndSortCanvasModule(courseCanvasId, canvasModulesItems, canvas, canvasAssignments);
}
}
public static async Task SyncAndSortCanvasModule(
this LocalModule localModule,
ulong courseCanvasId,
Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>> canvasModulesItems,
CanvasService canvas
ulong courseCanvasId,
Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>> canvasModulesItems,
CanvasService canvas,
IEnumerable<CanvasAssignment> canvasAssignments
)
{
var canvasModule = canvasModulesItems.Keys.FirstOrDefault(k => k.Name == localModule.Name);
@@ -154,7 +155,8 @@ public static partial class ModuleSyncronizationExtensions
courseCanvasId,
canvasModule,
canvasModulesItems,
canvas
canvas,
canvasAssignments
);
var canvasModuleItems = anyUpdated