can add pages

This commit is contained in:
2024-01-12 16:16:13 -07:00
parent bca8497255
commit 550a42f874
7 changed files with 98 additions and 38 deletions

View File

@@ -118,7 +118,8 @@ public class CoursePlanner
IEnumerable<CanvasModule> CanvasModules,
Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>> CanvasModulesItems,
IEnumerable<CanvasQuiz> canvasQuizzes,
IEnumerable<CanvasAssignmentGroup> canvasAssignmentGroups
IEnumerable<CanvasAssignmentGroup> canvasAssignmentGroups,
IEnumerable<CanvasPage> canvasPages
)> LoadCanvasData()
{
@@ -139,12 +140,13 @@ public class CoursePlanner
CanvasQuizzes = await quizzesTask;
CanvasModules = await modulesTask;
CanvasAssignmentGroups = await assignmentGroupsTask;
CanvasPages = await coursePagesTask;
CanvasModulesItems = await canvas.Modules.GetAllModulesItems(canvasId, CanvasModules);
LoadingCanvasData = false;
StateHasChanged?.Invoke();
return (CanvasAssignments, CanvasModules, CanvasModulesItems, CanvasQuizzes, CanvasAssignmentGroups);
return (CanvasAssignments, CanvasModules, CanvasModulesItems, CanvasQuizzes, CanvasAssignmentGroups, CanvasPages);
}
public async Task CreateModule(LocalModule newModule)

View File

@@ -89,46 +89,49 @@ public class PageEditorContext(
return;
}
await planner.LoadCanvasData();
// if (planner.CanvasQuizzes == null)
// {
// logger.Log("cannot add quiz to canvas, failed to retrieve current quizzes");
// return;
// }
// if (planner.LocalCourse == null)
// {
// logger.Log("cannot add quiz to canvas, no course stored in planner");
// return;
// }
// var canvasQuizId = await planner.LocalCourse.AddQuizToCanvas(Quiz, canvas);
if (planner.CanvasPages == null)
{
logger.Log("cannot add page to canvas, failed to retrieve current pages");
return;
}
if (planner.LocalCourse == null)
{
logger.Log("cannot add page to canvas, no course stored in planner");
return;
}
var canvasPageId = await planner.LocalCourse.AddPageToCanvas(Page, canvas);
// var courseCanvasId = planner.LocalCourse.Settings.CanvasId;
// if (courseCanvasId == null)
// {
// logger.Log("was able to add quiz to canvas, but errored while making module item. CourseCanvasId is null");
// return;
// }
var courseCanvasId = planner.LocalCourse.Settings.CanvasId;
if (courseCanvasId == null)
{
logger.Log("was able to add page to canvas, but errored while making module item. CourseCanvasId is null");
return;
}
// var canvasModule = getCurrentCanvasModule(Quiz, planner.LocalCourse);
var canvasModule = getCurrentCanvasModule(Page, planner.LocalCourse);
// await canvas.CreateModuleItem(
// (ulong)courseCanvasId,
// canvasModule.Id,
// Quiz.Name,
// "Quiz",
// (ulong)canvasQuizId
// );
if(canvasPageId != null)
{
await canvas.CreateModuleItem(
(ulong)courseCanvasId,
canvasModule.Id,
Page.Name,
"Page",
(ulong)canvasPageId
);
// await planner.LocalCourse.Modules.First().SortModuleItems(
// (ulong)courseCanvasId,
// canvasModule.Id,
// canvas
// );
// logger.Log($"finished adding quiz {Quiz.Name} to canvas");
await planner.LocalCourse.Modules.First().SortModuleItems(
(ulong)courseCanvasId,
canvasModule.Id,
canvas
);
}
logger.Log($"finished adding page {Page.Name} to canvas");
}
public async Task UpdateInCanvas(string pageId)
public async Task UpdateInCanvas(ulong pageId)
{
}

View File

@@ -37,10 +37,17 @@ public static partial class ModuleSyncronizationExtensions
CanvasService canvas
)
{
var canvasModuleItems = await canvas.Modules.GetModuleItems(canvasId, moduleCanvasId);
var moduleItemsInCorrectOrder = canvasModuleItems
.OrderBy(i => i.ContentDetails?.DueAt)
.OrderBy(canvasItem => {
if(canvasItem.Type == "Page")
{
var localPage = localModule.Pages.FirstOrDefault(p => p.Name == canvasItem.Title);
if(localPage != null)
return localPage.DueAt;
}
return canvasItem.ContentDetails?.DueAt;
})
.Select((a, i) => (Item: a, Position: i + 1));
foreach (var (moduleItem, position) in moduleItemsInCorrectOrder)

View File

@@ -0,0 +1,22 @@
using LocalModels;
using Management.Services.Canvas;
public static class PageSynchronizationExtension
{
public static async Task<ulong?> AddPageToCanvas(
this LocalCourse localCourse,
LocalCoursePage localPage,
CanvasService canvas
)
{
if (localCourse.Settings.CanvasId == null)
{
Console.WriteLine("Cannot add page to canvas without canvas course id");
return null;
}
ulong courseCanvasId = (ulong)localCourse.Settings.CanvasId;
var canvasPageId = await canvas.Pages.Create(courseCanvasId, localPage);
return canvasPageId;
}
}