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

View File

@@ -89,46 +89,49 @@ public class PageEditorContext(
return; return;
} }
await planner.LoadCanvasData(); await planner.LoadCanvasData();
// if (planner.CanvasQuizzes == null) if (planner.CanvasPages == null)
// { {
// logger.Log("cannot add quiz to canvas, failed to retrieve current quizzes"); logger.Log("cannot add page to canvas, failed to retrieve current pages");
// return; return;
// } }
// if (planner.LocalCourse == null) if (planner.LocalCourse == null)
// { {
// logger.Log("cannot add quiz to canvas, no course stored in planner"); logger.Log("cannot add page to canvas, no course stored in planner");
// return; return;
// } }
// var canvasQuizId = await planner.LocalCourse.AddQuizToCanvas(Quiz, canvas); var canvasPageId = await planner.LocalCourse.AddPageToCanvas(Page, canvas);
// var courseCanvasId = planner.LocalCourse.Settings.CanvasId; var courseCanvasId = planner.LocalCourse.Settings.CanvasId;
// if (courseCanvasId == null) if (courseCanvasId == null)
// { {
// logger.Log("was able to add quiz to canvas, but errored while making module item. CourseCanvasId is null"); logger.Log("was able to add page to canvas, but errored while making module item. CourseCanvasId is null");
// return; return;
// } }
// var canvasModule = getCurrentCanvasModule(Quiz, planner.LocalCourse); var canvasModule = getCurrentCanvasModule(Page, planner.LocalCourse);
// await canvas.CreateModuleItem( if(canvasPageId != null)
// (ulong)courseCanvasId, {
// canvasModule.Id, await canvas.CreateModuleItem(
// Quiz.Name, (ulong)courseCanvasId,
// "Quiz", canvasModule.Id,
// (ulong)canvasQuizId Page.Name,
// ); "Page",
(ulong)canvasPageId
);
// await planner.LocalCourse.Modules.First().SortModuleItems( await planner.LocalCourse.Modules.First().SortModuleItems(
// (ulong)courseCanvasId, (ulong)courseCanvasId,
// canvasModule.Id, canvasModule.Id,
// canvas canvas
// ); );
// logger.Log($"finished adding quiz {Quiz.Name} to 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 CanvasService canvas
) )
{ {
var canvasModuleItems = await canvas.Modules.GetModuleItems(canvasId, moduleCanvasId); var canvasModuleItems = await canvas.Modules.GetModuleItems(canvasId, moduleCanvasId);
var moduleItemsInCorrectOrder = canvasModuleItems 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)); .Select((a, i) => (Item: a, Position: i + 1));
foreach (var (moduleItem, position) in moduleItemsInCorrectOrder) 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;
}
}

View File

@@ -1,7 +1,7 @@
namespace CanvasModel.Pages; namespace CanvasModel.Pages;
public record CanvasPage ( public record CanvasPage (
[property: JsonPropertyName("page_id")] string PageId, [property: JsonPropertyName("page_id")] ulong PageId,
[property: JsonPropertyName("url")] string Url, [property: JsonPropertyName("url")] string Url,
[property: JsonPropertyName("title")] string Title, [property: JsonPropertyName("title")] string Title,
[property: JsonPropertyName("published")] bool Published, [property: JsonPropertyName("published")] bool Published,

View File

@@ -30,7 +30,7 @@ public class CanvasCoursePageService(
} }
public async Task<string> Create( public async Task<ulong> Create(
ulong canvasCourseId, ulong canvasCourseId,
LocalCoursePage localCourse LocalCoursePage localCourse
) )

View File

@@ -123,4 +123,30 @@ public class CanvasService(
if (newItem == null) if (newItem == null)
throw new Exception("something went wrong updating module item"); throw new Exception("something went wrong updating module item");
} }
public async Task CreateModuleItem(
ulong canvasCourseId,
ulong canvasModuleId,
string title,
string type,
string contentId
)
{
logger.Log($"creating new module item {title}");
var url = $"courses/{canvasCourseId}/modules/{canvasModuleId}/items";
var body = new
{
module_item = new
{
title,
type = type.ToString(),
content_id = contentId,
}
};
var request = new RestRequest(url);
request.AddBody(body);
var (newItem, _response) = await webRequestor.PostAsync<CanvasModuleItem>(request);
if (newItem == null)
throw new Exception("something went wrong updating module item with string content id");
}
} }