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