mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
fixed assignment rendering bug, removed canvas id from assignment
This commit is contained in:
@@ -134,12 +134,6 @@ public class CoursePlanner
|
||||
|
||||
LoadingCanvasData = true;
|
||||
StateHasChanged?.Invoke();
|
||||
LocalCourse = LocalCourse.deleteCanvasIdsThatNoLongerExist(
|
||||
canvasModules,
|
||||
canvasAssignments,
|
||||
canvasAssignmentGroups,
|
||||
canvasQuizzes
|
||||
);
|
||||
|
||||
var canvasId =
|
||||
LocalCourse.Settings.CanvasId ?? throw new Exception("no course canvas id to sync with canvas");
|
||||
@@ -170,7 +164,7 @@ public class CoursePlanner
|
||||
|
||||
CanvasModulesItems = await canvas.Modules.GetAllModulesItems(canvasId, CanvasModules);
|
||||
|
||||
await LocalCourse.SyncModuleItemsWithCanvas(canvasId, CanvasModulesItems, canvas);
|
||||
await LocalCourse.SyncModuleItemsWithCanvas(canvasId, CanvasModulesItems, canvas, CanvasAssignments);
|
||||
CanvasModulesItems = await canvas.Modules.GetAllModulesItems(canvasId, CanvasModules);
|
||||
|
||||
LoadingCanvasData = false;
|
||||
|
||||
@@ -45,83 +45,6 @@ public static class CoursePlannerExtensions
|
||||
};
|
||||
}
|
||||
|
||||
public static LocalCourse deleteCanvasIdsThatNoLongerExist(
|
||||
this LocalCourse localCourse,
|
||||
IEnumerable<CanvasModule> canvasModules,
|
||||
IEnumerable<CanvasAssignment> canvasAssignments,
|
||||
IEnumerable<CanvasAssignmentGroup> canvasAssignmentGroups,
|
||||
IEnumerable<CanvasQuiz> canvasQuizzes
|
||||
)
|
||||
{
|
||||
Console.WriteLine("checking canvas ids still exist");
|
||||
|
||||
var correctedModules = localCourse.Modules
|
||||
.Select((m) => m.validateCanvasIds(canvasModules, canvasAssignments, canvasQuizzes))
|
||||
.ToArray();
|
||||
|
||||
var canvasAssignmentGroupIds = canvasAssignmentGroups.Select(g => g.Id).ToArray();
|
||||
var correctAssignmentGroups = localCourse.Settings.AssignmentGroups.Select(
|
||||
g =>
|
||||
{
|
||||
var groupCanvasId = g.CanvasId ?? 0;
|
||||
return canvasAssignmentGroupIds.Contains(groupCanvasId)
|
||||
? g
|
||||
: g with { CanvasId = null };
|
||||
}
|
||||
).ToArray();
|
||||
|
||||
return localCourse with
|
||||
{
|
||||
Modules = correctedModules,
|
||||
Settings = localCourse.Settings with
|
||||
{
|
||||
AssignmentGroups = correctAssignmentGroups,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static LocalModule validateCanvasIds(
|
||||
this LocalModule module,
|
||||
IEnumerable<CanvasModule> canvasModules,
|
||||
IEnumerable<CanvasAssignment> canvasAssignments,
|
||||
IEnumerable<CanvasQuiz> canvasQuizzes
|
||||
)
|
||||
{
|
||||
var moduleIdInCanvas = canvasModules.FirstOrDefault(m => m.Name == module.Name) != null;
|
||||
var moduleWithAssignments = module with
|
||||
{
|
||||
Assignments = module.Assignments
|
||||
.Select((a) => a.validateAssignmentForCanvasId(canvasAssignments))
|
||||
.ToArray(),
|
||||
};
|
||||
|
||||
if (!moduleIdInCanvas)
|
||||
{
|
||||
Console.WriteLine(
|
||||
$"no id in canvas for module, removing old canvas id: {moduleWithAssignments.Name}"
|
||||
);
|
||||
return moduleWithAssignments;
|
||||
}
|
||||
return moduleWithAssignments;
|
||||
}
|
||||
|
||||
private static LocalAssignment validateAssignmentForCanvasId(
|
||||
this LocalAssignment assignment,
|
||||
IEnumerable<CanvasAssignment> canvasAssignments
|
||||
)
|
||||
{
|
||||
var assignmentIdInCanvas =
|
||||
canvasAssignments.FirstOrDefault(ca => ca.Id == assignment.CanvasId) != null;
|
||||
if (!assignmentIdInCanvas)
|
||||
{
|
||||
Console.WriteLine(
|
||||
$"no id in canvas for assignment, removing old canvas id: {assignment.Name}"
|
||||
);
|
||||
return assignment with { CanvasId = null };
|
||||
}
|
||||
return assignment;
|
||||
}
|
||||
|
||||
public static LocalAssignment validateSubmissionTypes(this LocalAssignment assignment)
|
||||
{
|
||||
var containsDiscussion =
|
||||
|
||||
@@ -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}"
|
||||
);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -42,7 +42,7 @@ public static class SubmissionType
|
||||
|
||||
public record LocalAssignment
|
||||
{
|
||||
public ulong? CanvasId { get; init; } = null;
|
||||
// public ulong? CanvasId { get; init; } = null;
|
||||
public string Name { get; init; } = "";
|
||||
public string Description { get; init; } = "";
|
||||
public bool LockAtDueDate { get; init; }
|
||||
|
||||
Reference in New Issue
Block a user