mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
added some details for editing assignment
This commit is contained in:
@@ -39,10 +39,7 @@ public class AssignmentEditorContext
|
||||
if (planner.LocalCourse != null)
|
||||
{
|
||||
// run discovery on Assignment, it was the last stored version of the assignment
|
||||
var currentModule =
|
||||
planner.LocalCourse.Modules.First(
|
||||
m => m.Assignments.Contains(Assignment)
|
||||
) ?? throw new Exception("could not find current module in assignment editor context");
|
||||
var currentModule = getCurrentModule(Assignment, planner.LocalCourse);
|
||||
|
||||
var updatedModules = planner.LocalCourse.Modules
|
||||
.Select(
|
||||
@@ -63,6 +60,56 @@ public class AssignmentEditorContext
|
||||
}
|
||||
}
|
||||
|
||||
public async Task UpdateInCanvas(ulong canvasAssignmentId)
|
||||
{
|
||||
logger.Log("started to update assignment in canvas");
|
||||
if (Assignment == null)
|
||||
{
|
||||
logger.Log("cannot update null assignment in canvas");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
await planner.LoadCanvasData();
|
||||
if (planner.CanvasAssignments == null)
|
||||
{
|
||||
logger.Log("cannot update assignment in canvas, failed to retrieve current assignments");
|
||||
return;
|
||||
}
|
||||
if (planner.LocalCourse == null)
|
||||
{
|
||||
logger.Log("cannot update assignment in canvas, no course stored in planner");
|
||||
return;
|
||||
}
|
||||
if (planner.LocalCourse.Settings.CanvasId == null)
|
||||
{
|
||||
logger.Log("Cannot update assignment with null local course canvas id");
|
||||
return;
|
||||
}
|
||||
var assignmentInCanvas = planner.CanvasAssignments?.FirstOrDefault(a => a.Id == canvasAssignmentId);
|
||||
if (assignmentInCanvas == null)
|
||||
{
|
||||
logger.Log("cannot update assignment in canvas, could not find canvas assignment with id: " + canvasAssignmentId);
|
||||
return;
|
||||
}
|
||||
var canvasAssignmentGroupId = Assignment.GetCanvasAssignmentGroupId(planner.LocalCourse.Settings.AssignmentGroups);
|
||||
|
||||
if (canvasAssignmentGroupId == null)
|
||||
{
|
||||
|
||||
logger.Log("cannot update assignment in canvas, could not get assignment group id: " + assignmentInCanvas.AssignmentGroupId);
|
||||
return;
|
||||
}
|
||||
|
||||
await canvas.Assignments.Update(
|
||||
courseId: (ulong)planner.LocalCourse.Settings.CanvasId,
|
||||
canvasAssignmentId: canvasAssignmentId,
|
||||
localAssignment: Assignment,
|
||||
htmlDescription: Assignment.GetDescriptionHtml(),
|
||||
canvasAssignmentGroupId: (ulong)canvasAssignmentGroupId
|
||||
);
|
||||
}
|
||||
|
||||
public async Task AddAssignmentToCanvas()
|
||||
{
|
||||
logger.Log("started to add assignment to canvas");
|
||||
@@ -120,13 +167,12 @@ public class AssignmentEditorContext
|
||||
canvas
|
||||
);
|
||||
logger.Log($"finished adding assignment {Assignment.Name} to canvas");
|
||||
|
||||
}
|
||||
|
||||
private static LocalModule getCurrentModule(LocalAssignment assignment, LocalCourse course)
|
||||
{
|
||||
return course.Modules.FirstOrDefault(
|
||||
m => m.Assignments.Contains(assignment)
|
||||
m => m.Assignments.Select(a => a.Name).Contains(assignment.Name)
|
||||
)
|
||||
?? throw new Exception("could not find current module in assignment editor context");
|
||||
}
|
||||
|
||||
@@ -64,9 +64,10 @@ public static partial class AssignmentSyncronizationExtensions
|
||||
{
|
||||
await canvas.Assignments.Update(
|
||||
courseId: canvasCourseId,
|
||||
canvasAssignmentId: (ulong) localAssignment.CanvasId,
|
||||
localAssignment,
|
||||
localHtmlDescription,
|
||||
canvasAssignmentGroupId
|
||||
(ulong)canvasAssignmentGroupId
|
||||
);
|
||||
}
|
||||
return canvasAssignment.Id;
|
||||
|
||||
@@ -69,19 +69,20 @@ public class CanvasAssignmentService
|
||||
|
||||
public async Task Update(
|
||||
ulong courseId,
|
||||
ulong canvasAssignmentId,
|
||||
LocalAssignment localAssignment,
|
||||
string htmlDescription,
|
||||
ulong? canvasAssignmentGroupId
|
||||
ulong canvasAssignmentGroupId
|
||||
)
|
||||
{
|
||||
log.Log($"updating assignment: {localAssignment.Name}");
|
||||
var url = $"courses/{courseId}/assignments/{localAssignment.CanvasId}";
|
||||
var url = $"courses/{courseId}/assignments/{canvasAssignmentId}";
|
||||
var request = new RestRequest(url);
|
||||
var body = new
|
||||
{
|
||||
name = localAssignment.Name,
|
||||
submission_types = localAssignment.SubmissionTypes.Select(t => t.ToString()),
|
||||
description = htmlDescription,
|
||||
description = localAssignment.GetDescriptionHtml(),
|
||||
due_at = localAssignment.DueAt,
|
||||
lock_at = localAssignment.LockAtDueDate ? localAssignment.DueAt : localAssignment.LockAt,
|
||||
points_possible = localAssignment.PointsPossible,
|
||||
@@ -92,7 +93,7 @@ public class CanvasAssignmentService
|
||||
|
||||
await webRequestor.PutAsync(request);
|
||||
|
||||
await CreateRubric(courseId, (ulong)localAssignment.CanvasId, localAssignment);
|
||||
await CreateRubric(courseId, canvasAssignmentId, localAssignment);
|
||||
}
|
||||
|
||||
public async Task Delete(ulong courseId, ulong assignmentCanvasId, string assignmentName)
|
||||
|
||||
Reference in New Issue
Block a user