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