mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 07:38:33 -06:00
am syncing assignment groups
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
using CanvasModel.Assignments;
|
||||
using CanvasModel.Modules;
|
||||
using LocalModels;
|
||||
using Management.Services.Canvas;
|
||||
|
||||
namespace Management.Planner;
|
||||
|
||||
public static partial class AssignmentGroupSyncronizationExtensions
|
||||
{
|
||||
internal static async Task<IEnumerable<LocalAssignmentGroup>> EnsureAllAssignmentGroupsExistInCanvas(
|
||||
this LocalCourse localCourse,
|
||||
ulong courseCanvasId,
|
||||
IEnumerable<CanvasAssignmentGroup> canvasAssignmentGroups,
|
||||
CanvasService canvas
|
||||
)
|
||||
{
|
||||
var canvasAssignmentGroupIds = canvasAssignmentGroups.Select(g => g.Id).ToArray();
|
||||
var assignmentGroups = await Task.WhenAll((Task<LocalAssignmentGroup>[])localCourse.AssignmentGroups.Select(
|
||||
async assignmentGroup =>
|
||||
{
|
||||
var canvasGroupWithSameName = canvasAssignmentGroups.FirstOrDefault(
|
||||
cg => cg.Name.Equals(assignmentGroup.Name)
|
||||
);
|
||||
if (canvasGroupWithSameName == null)
|
||||
return await canvas.AssignmentGroups.Create(courseCanvasId, assignmentGroup);
|
||||
|
||||
var correctGroup = assignmentGroup with { CanvasId = canvasGroupWithSameName.Id };
|
||||
|
||||
var needsUpdate = canvasGroupWithSameName.GroupWeight != correctGroup.Weight;
|
||||
|
||||
if (needsUpdate)
|
||||
await canvas.AssignmentGroups.Update(courseCanvasId, assignmentGroup);
|
||||
|
||||
return correctGroup;
|
||||
}
|
||||
).ToArray());
|
||||
|
||||
return assignmentGroups;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user