mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 15:18:32 -06:00
more canvas fixes
This commit is contained in:
@@ -121,7 +121,12 @@ public class CoursePlanner
|
||||
var canvasId =
|
||||
LocalCourse.CanvasId ?? throw new Exception("no course canvas id to sync with canvas");
|
||||
|
||||
await LocalCourse.EnsureAllModulesExistInCanvas(canvasId, CanvasModules, canvas);
|
||||
var newModules = await LocalCourse.EnsureAllModulesExistInCanvas(
|
||||
canvasId,
|
||||
CanvasModules,
|
||||
canvas
|
||||
);
|
||||
LocalCourse = LocalCourse with { Modules = newModules };
|
||||
CanvasModules = await canvas.GetModules(canvasId);
|
||||
|
||||
await LocalCourse.SortCanvasModules(canvasId, CanvasModules, canvas);
|
||||
|
||||
@@ -8,21 +8,26 @@ namespace Management.Planner;
|
||||
|
||||
public static partial class CoursePlannerSyncronizationExtensions
|
||||
{
|
||||
internal static async Task EnsureAllModulesExistInCanvas(
|
||||
internal static async Task<IEnumerable<LocalModule>> EnsureAllModulesExistInCanvas(
|
||||
this LocalCourse localCourse,
|
||||
ulong canvasId,
|
||||
IEnumerable<CanvasModule> canvasModules,
|
||||
CanvasService canvas
|
||||
)
|
||||
{
|
||||
foreach (var module in localCourse.Modules)
|
||||
var moduleTasks = localCourse.Modules.Select(async module =>
|
||||
{
|
||||
var canvasModule = canvasModules.FirstOrDefault(cm => cm.Id == module.CanvasId);
|
||||
if (canvasModule == null)
|
||||
{
|
||||
await canvas.CreateModule(canvasId, module.Name);
|
||||
var newModule = await canvas.CreateModule(canvasId, module.Name);
|
||||
return module with { CanvasId = newModule.Id };
|
||||
}
|
||||
}
|
||||
else
|
||||
return module;
|
||||
});
|
||||
var newModules = await Task.WhenAll(moduleTasks);
|
||||
return newModules ?? throw new Exception("Error ensuring all modules exist in canvas");
|
||||
}
|
||||
|
||||
internal static async Task SortCanvasModules(
|
||||
@@ -107,7 +112,8 @@ public static partial class CoursePlannerSyncronizationExtensions
|
||||
{
|
||||
var canvasAssignment = canvasAssignments.First(ca => ca.Id == localAssignment.CanvasId);
|
||||
|
||||
var localHtmlDescription = localAssignment.GetDescriptionHtml(courseAssignmentTemplates)
|
||||
var localHtmlDescription = localAssignment
|
||||
.GetDescriptionHtml(courseAssignmentTemplates)
|
||||
.Replace(">", "")
|
||||
.Replace("<", "")
|
||||
.Replace(">", "")
|
||||
|
||||
@@ -66,14 +66,15 @@ public class CanvasService
|
||||
return modules.SelectMany(c => c).ToArray();
|
||||
}
|
||||
|
||||
public async Task CreateModule(ulong courseId, string name)
|
||||
public async Task<CanvasModule> CreateModule(ulong courseId, string name)
|
||||
{
|
||||
Console.WriteLine($"Creating Module: {name}");
|
||||
var url = $"courses/{courseId}/modules";
|
||||
var request = new RestRequest(url);
|
||||
request.AddParameter("module[name]", name);
|
||||
|
||||
await webRequestor.PostAsync(request);
|
||||
var (newModule, _) = await webRequestor.PostAsync<CanvasModule>(request);
|
||||
return newModule ?? throw new Exception($"failed to create new canvas module {name}");
|
||||
}
|
||||
|
||||
public async Task UpdateModule(ulong courseId, ulong moduleId, string name, int position)
|
||||
|
||||
Reference in New Issue
Block a user