mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
removing dependency on canvas id in assignment
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
@using Management.Web.Shared.Components
|
||||
@using Management.Web.Shared.Components.AssignmentForm
|
||||
@using CanvasModel.Assignments;
|
||||
|
||||
@inject DragContainer dragContainer
|
||||
@inject CoursePlanner planner
|
||||
@@ -39,12 +40,14 @@
|
||||
dragContainer.DropCallback = null;
|
||||
}
|
||||
|
||||
private bool isSyncedWithCanvas =>
|
||||
planner
|
||||
private CanvasAssignment? assignmentInCanvas => planner
|
||||
.CanvasAssignments?
|
||||
.FirstOrDefault(
|
||||
a => a.Id == Assignment.CanvasId
|
||||
) != null;
|
||||
a => a.Name == Assignment.Name
|
||||
);
|
||||
|
||||
private bool isSyncedWithCanvas =>
|
||||
assignmentInCanvas != null;
|
||||
private void OnClick()
|
||||
{
|
||||
assignmentContext.Assignment = Assignment;
|
||||
@@ -76,7 +79,7 @@
|
||||
&& planner.CanvasAssignments != null
|
||||
&& planner.CanvasModules != null
|
||||
&& Assignment.NeedsUpdates(
|
||||
planner.CanvasAssignments,
|
||||
assignmentInCanvas,
|
||||
Assignment.GetCanvasAssignmentGroupId(planner.LocalCourse.Settings.AssignmentGroups)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -92,7 +92,7 @@ public class AssignmentEditorContext
|
||||
return;
|
||||
}
|
||||
|
||||
var createdAssignment = await planner.LocalCourse.SyncAssignmentToCanvas(
|
||||
var createdAssignmentCanvasId = await planner.LocalCourse.SyncAssignmentToCanvas(
|
||||
canvasCourseId: (ulong)courseCanvasId,
|
||||
localAssignment: Assignment,
|
||||
canvasAssignments: planner.CanvasAssignments,
|
||||
@@ -111,7 +111,7 @@ public class AssignmentEditorContext
|
||||
(ulong)currentModule.CanvasId,
|
||||
Assignment.Name,
|
||||
"Assignment",
|
||||
(ulong)createdAssignment.CanvasId
|
||||
createdAssignmentCanvasId
|
||||
);
|
||||
|
||||
await planner.LocalCourse.Modules.First().SortModuleItems(
|
||||
|
||||
@@ -12,7 +12,7 @@ public static partial class AssignmentSyncronizationExtensions
|
||||
{
|
||||
|
||||
|
||||
internal static async Task<LocalAssignment> SyncAssignmentToCanvas(
|
||||
internal static async Task<ulong> SyncAssignmentToCanvas(
|
||||
this LocalCourse localCourse,
|
||||
ulong canvasCourseId,
|
||||
LocalAssignment localAssignment,
|
||||
@@ -22,7 +22,7 @@ public static partial class AssignmentSyncronizationExtensions
|
||||
{
|
||||
// ignore past assignments
|
||||
if(localAssignment.DueAt < DateTime.Now)
|
||||
return localAssignment;
|
||||
return (ulong)localAssignment.CanvasId;
|
||||
|
||||
var canvasAssignment = canvasAssignments.FirstOrDefault(
|
||||
ca => ca.Id == localAssignment.CanvasId
|
||||
@@ -36,7 +36,7 @@ public static partial class AssignmentSyncronizationExtensions
|
||||
localCourse,
|
||||
canvasCourseId,
|
||||
localAssignment,
|
||||
canvasAssignments,
|
||||
canvasAssignment,
|
||||
canvas,
|
||||
localHtmlDescription,
|
||||
canvasAssignmentGroupId
|
||||
@@ -44,18 +44,19 @@ public static partial class AssignmentSyncronizationExtensions
|
||||
: await canvas.Assignments.Create(canvasCourseId, localAssignment, localHtmlDescription, canvasAssignmentGroupId);
|
||||
}
|
||||
|
||||
private static async Task<LocalAssignment> updateAssignmentIfNeeded(
|
||||
private static async Task<ulong> updateAssignmentIfNeeded(
|
||||
LocalCourse localCourse,
|
||||
ulong canvasCourseId,
|
||||
LocalAssignment localAssignment,
|
||||
IEnumerable<CanvasAssignment> canvasAssignments,
|
||||
CanvasAssignment canvasAssignment,
|
||||
CanvasService canvas,
|
||||
string localHtmlDescription,
|
||||
ulong? canvasAssignmentGroupId
|
||||
)
|
||||
{
|
||||
|
||||
var assignmentNeedsUpdates = localAssignment.NeedsUpdates(
|
||||
canvasAssignments,
|
||||
canvasAssignment,
|
||||
canvasAssignmentGroupId,
|
||||
quiet: false
|
||||
);
|
||||
@@ -68,17 +69,16 @@ public static partial class AssignmentSyncronizationExtensions
|
||||
canvasAssignmentGroupId
|
||||
);
|
||||
}
|
||||
return localAssignment;
|
||||
return canvasAssignment.Id;
|
||||
}
|
||||
|
||||
public static bool NeedsUpdates(
|
||||
this LocalAssignment localAssignment,
|
||||
IEnumerable<CanvasAssignment> canvasAssignments,
|
||||
CanvasAssignment canvasAssignment,
|
||||
ulong? canvasAssignmentGroupId,
|
||||
bool quiet = true
|
||||
)
|
||||
{
|
||||
var canvasAssignment = canvasAssignments.First(ca => ca.Id == localAssignment.CanvasId);
|
||||
|
||||
var localHtmlDescription = localAssignment
|
||||
.GetDescriptionHtml()
|
||||
@@ -252,8 +252,8 @@ public static partial class AssignmentSyncronizationExtensions
|
||||
var assignmentTasks = m.Assignments.Select(
|
||||
async (a) => await localCourse.SyncAssignmentToCanvas(canvasCourseId, a, canvasAssignments, canvas)
|
||||
);
|
||||
var assignments = await Task.WhenAll(assignmentTasks);
|
||||
return m with { Assignments = assignments };
|
||||
await Task.WhenAll(assignmentTasks);
|
||||
return m;
|
||||
});
|
||||
|
||||
var modules = await Task.WhenAll(moduleTasks);
|
||||
|
||||
@@ -35,7 +35,7 @@ public class CanvasAssignmentService
|
||||
);
|
||||
}
|
||||
|
||||
public async Task<LocalAssignment> Create(
|
||||
public async Task<ulong> Create(
|
||||
ulong canvasCourseId,
|
||||
LocalAssignment localAssignment,
|
||||
string htmlDescription,
|
||||
@@ -61,11 +61,10 @@ public class CanvasAssignmentService
|
||||
if (canvasAssignment == null)
|
||||
throw new Exception("created canvas assignment was null");
|
||||
|
||||
var updatedLocalAssignment = localAssignment with { CanvasId = canvasAssignment.Id };
|
||||
|
||||
await CreateRubric(canvasCourseId, updatedLocalAssignment);
|
||||
await CreateRubric(canvasCourseId, canvasAssignment.Id, localAssignment);
|
||||
|
||||
return updatedLocalAssignment;
|
||||
return canvasAssignment.Id;
|
||||
}
|
||||
|
||||
public async Task Update(
|
||||
@@ -93,7 +92,7 @@ public class CanvasAssignmentService
|
||||
|
||||
await webRequestor.PutAsync(request);
|
||||
|
||||
await CreateRubric(courseId, localAssignment);
|
||||
await CreateRubric(courseId, (ulong)localAssignment.CanvasId, localAssignment);
|
||||
}
|
||||
|
||||
public async Task Delete(ulong courseId, ulong assignmentCanvasId, string assignmentName)
|
||||
@@ -109,10 +108,8 @@ public class CanvasAssignmentService
|
||||
}
|
||||
}
|
||||
|
||||
public async Task CreateRubric(ulong courseId, LocalAssignment localAssignment)
|
||||
public async Task CreateRubric(ulong courseId, ulong assignmentCanvasId, LocalAssignment localAssignment)
|
||||
{
|
||||
if (localAssignment.CanvasId == null)
|
||||
throw new Exception("cannot create rubric if no canvas id in assignment");
|
||||
|
||||
var criterion = new Dictionary<int, object>();
|
||||
|
||||
@@ -136,18 +133,18 @@ public class CanvasAssignmentService
|
||||
// https://canvas.instructure.com/doc/api/rubrics.html#method.rubrics.create
|
||||
var body = new
|
||||
{
|
||||
rubric_association_id = localAssignment.CanvasId,
|
||||
rubric_association_id = assignmentCanvasId,
|
||||
rubric = new
|
||||
{
|
||||
title = $"Rubric for Assignment: {localAssignment.Name}",
|
||||
association_id = localAssignment.CanvasId,
|
||||
association_id = assignmentCanvasId,
|
||||
association_type = "Assignment",
|
||||
use_for_grading = true,
|
||||
criteria = criterion,
|
||||
},
|
||||
rubric_association = new
|
||||
{
|
||||
association_id = localAssignment.CanvasId,
|
||||
association_id = assignmentCanvasId,
|
||||
association_type = "Assignment",
|
||||
purpose = "grading",
|
||||
use_for_grading = true,
|
||||
@@ -167,7 +164,7 @@ public class CanvasAssignmentService
|
||||
{
|
||||
assignment = new { points_possible = localAssignment.PointsPossible }
|
||||
};
|
||||
var adjustmentUrl = $"courses/{courseId}/assignments/{localAssignment.CanvasId}";
|
||||
var adjustmentUrl = $"courses/{courseId}/assignments/{assignmentCanvasId}";
|
||||
var pointAdjustmentRequest = new RestRequest(adjustmentUrl);
|
||||
pointAdjustmentRequest.AddBody(assignmentPointCorrectionBody);
|
||||
var (_, _) = await webRequestor.PutAsync<CanvasAssignment>(pointAdjustmentRequest);
|
||||
|
||||
Reference in New Issue
Block a user