mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
fixed assignment rendering bug, removed canvas id from assignment
This commit is contained in:
@@ -1,11 +1,13 @@
|
|||||||
|
using LocalModels;
|
||||||
|
|
||||||
public class AssignmentMarkdownTests
|
public class AssignmentMarkdownTests
|
||||||
{
|
{
|
||||||
[Test]
|
[Test]
|
||||||
public void TestCanParseAssignmentSettings()
|
public void TestCanParseAssignmentSettings()
|
||||||
{
|
{
|
||||||
var assignmentMarkdown = @"
|
var assignment = new LocalAssignment()
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -44,6 +44,7 @@
|
|||||||
|
|
||||||
private void handleNewDescription(string newDescription)
|
private void handleNewDescription(string newDescription)
|
||||||
{
|
{
|
||||||
|
description = newDescription;
|
||||||
if (newDescription != string.Empty)
|
if (newDescription != string.Empty)
|
||||||
{
|
{
|
||||||
descriptionForPreview = newDescription;
|
descriptionForPreview = newDescription;
|
||||||
@@ -56,6 +57,7 @@
|
|||||||
assignmentContext.SaveAssignment(newAssignment);
|
assignmentContext.SaveAssignment(newAssignment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private MarkupString preview { get => (MarkupString)Markdown.ToHtml(descriptionForPreview); }
|
private MarkupString preview { get => (MarkupString)Markdown.ToHtml(descriptionForPreview); }
|
||||||
@@ -77,7 +79,7 @@
|
|||||||
<MonacoTextArea Value="@description" OnChange="@handleNewDescription" />
|
<MonacoTextArea Value="@description" OnChange="@handleNewDescription" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6" @key="descriptionForPreview" >
|
<div class="col-6" @key="descriptionForPreview" >
|
||||||
@(preview)
|
@((MarkupString)Markdown.ToHtml(descriptionForPreview))
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
@@ -134,12 +134,6 @@ public class CoursePlanner
|
|||||||
|
|
||||||
LoadingCanvasData = true;
|
LoadingCanvasData = true;
|
||||||
StateHasChanged?.Invoke();
|
StateHasChanged?.Invoke();
|
||||||
LocalCourse = LocalCourse.deleteCanvasIdsThatNoLongerExist(
|
|
||||||
canvasModules,
|
|
||||||
canvasAssignments,
|
|
||||||
canvasAssignmentGroups,
|
|
||||||
canvasQuizzes
|
|
||||||
);
|
|
||||||
|
|
||||||
var canvasId =
|
var canvasId =
|
||||||
LocalCourse.Settings.CanvasId ?? throw new Exception("no course canvas id to sync with canvas");
|
LocalCourse.Settings.CanvasId ?? throw new Exception("no course canvas id to sync with canvas");
|
||||||
@@ -170,7 +164,7 @@ public class CoursePlanner
|
|||||||
|
|
||||||
CanvasModulesItems = await canvas.Modules.GetAllModulesItems(canvasId, CanvasModules);
|
CanvasModulesItems = await canvas.Modules.GetAllModulesItems(canvasId, CanvasModules);
|
||||||
|
|
||||||
await LocalCourse.SyncModuleItemsWithCanvas(canvasId, CanvasModulesItems, canvas);
|
await LocalCourse.SyncModuleItemsWithCanvas(canvasId, CanvasModulesItems, canvas, CanvasAssignments);
|
||||||
CanvasModulesItems = await canvas.Modules.GetAllModulesItems(canvasId, CanvasModules);
|
CanvasModulesItems = await canvas.Modules.GetAllModulesItems(canvasId, CanvasModules);
|
||||||
|
|
||||||
LoadingCanvasData = false;
|
LoadingCanvasData = false;
|
||||||
|
|||||||
@@ -45,83 +45,6 @@ public static class CoursePlannerExtensions
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LocalCourse deleteCanvasIdsThatNoLongerExist(
|
|
||||||
this LocalCourse localCourse,
|
|
||||||
IEnumerable<CanvasModule> canvasModules,
|
|
||||||
IEnumerable<CanvasAssignment> canvasAssignments,
|
|
||||||
IEnumerable<CanvasAssignmentGroup> canvasAssignmentGroups,
|
|
||||||
IEnumerable<CanvasQuiz> canvasQuizzes
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Console.WriteLine("checking canvas ids still exist");
|
|
||||||
|
|
||||||
var correctedModules = localCourse.Modules
|
|
||||||
.Select((m) => m.validateCanvasIds(canvasModules, canvasAssignments, canvasQuizzes))
|
|
||||||
.ToArray();
|
|
||||||
|
|
||||||
var canvasAssignmentGroupIds = canvasAssignmentGroups.Select(g => g.Id).ToArray();
|
|
||||||
var correctAssignmentGroups = localCourse.Settings.AssignmentGroups.Select(
|
|
||||||
g =>
|
|
||||||
{
|
|
||||||
var groupCanvasId = g.CanvasId ?? 0;
|
|
||||||
return canvasAssignmentGroupIds.Contains(groupCanvasId)
|
|
||||||
? g
|
|
||||||
: g with { CanvasId = null };
|
|
||||||
}
|
|
||||||
).ToArray();
|
|
||||||
|
|
||||||
return localCourse with
|
|
||||||
{
|
|
||||||
Modules = correctedModules,
|
|
||||||
Settings = localCourse.Settings with
|
|
||||||
{
|
|
||||||
AssignmentGroups = correctAssignmentGroups,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
private static LocalModule validateCanvasIds(
|
|
||||||
this LocalModule module,
|
|
||||||
IEnumerable<CanvasModule> canvasModules,
|
|
||||||
IEnumerable<CanvasAssignment> canvasAssignments,
|
|
||||||
IEnumerable<CanvasQuiz> canvasQuizzes
|
|
||||||
)
|
|
||||||
{
|
|
||||||
var moduleIdInCanvas = canvasModules.FirstOrDefault(m => m.Name == module.Name) != null;
|
|
||||||
var moduleWithAssignments = module with
|
|
||||||
{
|
|
||||||
Assignments = module.Assignments
|
|
||||||
.Select((a) => a.validateAssignmentForCanvasId(canvasAssignments))
|
|
||||||
.ToArray(),
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!moduleIdInCanvas)
|
|
||||||
{
|
|
||||||
Console.WriteLine(
|
|
||||||
$"no id in canvas for module, removing old canvas id: {moduleWithAssignments.Name}"
|
|
||||||
);
|
|
||||||
return moduleWithAssignments;
|
|
||||||
}
|
|
||||||
return moduleWithAssignments;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static LocalAssignment validateAssignmentForCanvasId(
|
|
||||||
this LocalAssignment assignment,
|
|
||||||
IEnumerable<CanvasAssignment> canvasAssignments
|
|
||||||
)
|
|
||||||
{
|
|
||||||
var assignmentIdInCanvas =
|
|
||||||
canvasAssignments.FirstOrDefault(ca => ca.Id == assignment.CanvasId) != null;
|
|
||||||
if (!assignmentIdInCanvas)
|
|
||||||
{
|
|
||||||
Console.WriteLine(
|
|
||||||
$"no id in canvas for assignment, removing old canvas id: {assignment.Name}"
|
|
||||||
);
|
|
||||||
return assignment with { CanvasId = null };
|
|
||||||
}
|
|
||||||
return assignment;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static LocalAssignment validateSubmissionTypes(this LocalAssignment assignment)
|
public static LocalAssignment validateSubmissionTypes(this LocalAssignment assignment)
|
||||||
{
|
{
|
||||||
var containsDiscussion =
|
var containsDiscussion =
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public static partial class AssignmentSyncronizationExtensions
|
|||||||
{
|
{
|
||||||
|
|
||||||
var canvasAssignment = canvasAssignments.FirstOrDefault(
|
var canvasAssignment = canvasAssignments.FirstOrDefault(
|
||||||
ca => ca.Id == localAssignment.CanvasId
|
ca => ca.Name == localAssignment.Name
|
||||||
);
|
);
|
||||||
string localHtmlDescription = localAssignment.GetDescriptionHtml();
|
string localHtmlDescription = localAssignment.GetDescriptionHtml();
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ public static partial class AssignmentSyncronizationExtensions
|
|||||||
{
|
{
|
||||||
await canvas.Assignments.Update(
|
await canvas.Assignments.Update(
|
||||||
courseId: canvasCourseId,
|
courseId: canvasCourseId,
|
||||||
canvasAssignmentId: (ulong) localAssignment.CanvasId,
|
canvasAssignmentId: canvasAssignment.Id,
|
||||||
localAssignment,
|
localAssignment,
|
||||||
localHtmlDescription,
|
localHtmlDescription,
|
||||||
(ulong)canvasAssignmentGroupId
|
(ulong)canvasAssignmentGroupId
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using CanvasModel.Assignments;
|
||||||
using CanvasModel.Modules;
|
using CanvasModel.Modules;
|
||||||
using LocalModels;
|
using LocalModels;
|
||||||
using Management.Services.Canvas;
|
using Management.Services.Canvas;
|
||||||
@@ -95,24 +96,25 @@ public static partial class ModuleSyncronizationExtensions
|
|||||||
ulong canvasId,
|
ulong canvasId,
|
||||||
CanvasModule canvasModule,
|
CanvasModule canvasModule,
|
||||||
Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>> canvasModulesItems,
|
Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>> canvasModulesItems,
|
||||||
CanvasService canvas
|
CanvasService canvas,
|
||||||
|
IEnumerable<CanvasAssignment> canvasAssignments
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
var anyUpdated = false;
|
var anyUpdated = false;
|
||||||
foreach (var localAssignment in localModule.Assignments.Where(a => a.DueAt > DateTime.Now))
|
foreach (var localAssignment in localModule.Assignments.Where(a => a.DueAt > DateTime.Now))
|
||||||
{
|
{
|
||||||
var canvasModuleItemContentIds = canvasModulesItems[canvasModule].Select(i => i.ContentId);
|
var canvasModuleItemContentNames = canvasModulesItems[canvasModule].Select(i => i.Title);
|
||||||
if (!canvasModuleItemContentIds.Contains(localAssignment.CanvasId))
|
if (!canvasModuleItemContentNames.Contains(localAssignment.Name))
|
||||||
{
|
{
|
||||||
var canvasAssignmentId =
|
var canvasAssignment = canvasAssignments.FirstOrDefault(a => a.Name == localAssignment.Name)
|
||||||
localAssignment.CanvasId
|
?? throw new Exception($"cannot create module item if cannot find canvas assignment with name {localAssignment.Name}");
|
||||||
?? throw new Exception("cannot create module item if assignment does not have canvas id");
|
|
||||||
await canvas.CreateModuleItem(
|
await canvas.CreateModuleItem(
|
||||||
canvasId,
|
canvasId,
|
||||||
canvasModule.Id,
|
canvasModule.Id,
|
||||||
localAssignment.Name,
|
localAssignment.Name,
|
||||||
"Assignment",
|
"Assignment",
|
||||||
canvasAssignmentId
|
canvasAssignment.Id
|
||||||
);
|
);
|
||||||
anyUpdated = true;
|
anyUpdated = true;
|
||||||
}
|
}
|
||||||
@@ -125,15 +127,13 @@ public static partial class ModuleSyncronizationExtensions
|
|||||||
this LocalCourse localCourse,
|
this LocalCourse localCourse,
|
||||||
ulong courseCanvasId,
|
ulong courseCanvasId,
|
||||||
Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>> canvasModulesItems,
|
Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>> canvasModulesItems,
|
||||||
CanvasService canvas
|
CanvasService canvas,
|
||||||
|
IEnumerable<CanvasAssignment> canvasAssignments
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
foreach (var localModule in localCourse.Modules)
|
foreach (var localModule in localCourse.Modules)
|
||||||
{
|
{
|
||||||
// var moduleCanvasId =
|
await localModule.SyncAndSortCanvasModule(courseCanvasId, canvasModulesItems, canvas, canvasAssignments);
|
||||||
// localModule.CanvasId
|
|
||||||
// ?? throw new Exception("cannot sync canvas modules items if module not synced with canvas");
|
|
||||||
await localModule.SyncAndSortCanvasModule(courseCanvasId, canvasModulesItems, canvas);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,7 +141,8 @@ public static partial class ModuleSyncronizationExtensions
|
|||||||
this LocalModule localModule,
|
this LocalModule localModule,
|
||||||
ulong courseCanvasId,
|
ulong courseCanvasId,
|
||||||
Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>> canvasModulesItems,
|
Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>> canvasModulesItems,
|
||||||
CanvasService canvas
|
CanvasService canvas,
|
||||||
|
IEnumerable<CanvasAssignment> canvasAssignments
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
var canvasModule = canvasModulesItems.Keys.FirstOrDefault(k => k.Name == localModule.Name);
|
var canvasModule = canvasModulesItems.Keys.FirstOrDefault(k => k.Name == localModule.Name);
|
||||||
@@ -154,7 +155,8 @@ public static partial class ModuleSyncronizationExtensions
|
|||||||
courseCanvasId,
|
courseCanvasId,
|
||||||
canvasModule,
|
canvasModule,
|
||||||
canvasModulesItems,
|
canvasModulesItems,
|
||||||
canvas
|
canvas,
|
||||||
|
canvasAssignments
|
||||||
);
|
);
|
||||||
|
|
||||||
var canvasModuleItems = anyUpdated
|
var canvasModuleItems = anyUpdated
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public static class SubmissionType
|
|||||||
|
|
||||||
public record LocalAssignment
|
public record LocalAssignment
|
||||||
{
|
{
|
||||||
public ulong? CanvasId { get; init; } = null;
|
// public ulong? CanvasId { get; init; } = null;
|
||||||
public string Name { get; init; } = "";
|
public string Name { get; init; } = "";
|
||||||
public string Description { get; init; } = "";
|
public string Description { get; init; } = "";
|
||||||
public bool LockAtDueDate { get; init; }
|
public bool LockAtDueDate { get; init; }
|
||||||
|
|||||||
Reference in New Issue
Block a user