mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
smarter canvas updates, only update when a change is detected
This commit is contained in:
89
Management/Services/Canvas/CanvasAssignmentService.cs
Normal file
89
Management/Services/Canvas/CanvasAssignmentService.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using CanvasModel.Assignments;
|
||||
using RestSharp;
|
||||
|
||||
namespace Management.Services.Canvas;
|
||||
|
||||
public class CanvasAssignmentService
|
||||
{
|
||||
private IWebRequestor webRequestor;
|
||||
private readonly CanvasServiceUtils utils;
|
||||
|
||||
public CanvasAssignmentService(IWebRequestor webRequestor, CanvasServiceUtils utils)
|
||||
{
|
||||
this.webRequestor = webRequestor;
|
||||
this.utils = utils;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<CanvasAssignment>> GetAll(ulong courseId)
|
||||
{
|
||||
var url = $"courses/{courseId}/assignments";
|
||||
var request = new RestRequest(url);
|
||||
var assignmentResponse = await utils.PaginatedRequest<IEnumerable<CanvasAssignment>>(request);
|
||||
return assignmentResponse.SelectMany(
|
||||
assignments =>
|
||||
assignments.Select(
|
||||
a =>
|
||||
a with
|
||||
{
|
||||
DueAt = a.DueAt?.ToLocalTime(),
|
||||
LockAt = a.LockAt?.ToLocalTime()
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public async Task<CanvasAssignment> Create(
|
||||
ulong courseId,
|
||||
string name,
|
||||
IEnumerable<SubmissionType> submissionTypes,
|
||||
string? description,
|
||||
DateTime? dueAt,
|
||||
DateTime? lockAt,
|
||||
int? pointsPossible
|
||||
)
|
||||
{
|
||||
System.Console.WriteLine($"creating assignment: {name}");
|
||||
var url = $"courses/{courseId}/assignments";
|
||||
var request = new RestRequest(url);
|
||||
var body = new CanvasAssignmentCreationRequest()
|
||||
{
|
||||
name = name,
|
||||
submission_types = submissionTypes.Select(t => t.ToString()),
|
||||
description = description ?? "",
|
||||
due_at = dueAt,
|
||||
lock_at = lockAt,
|
||||
points_possible = pointsPossible ?? 0
|
||||
};
|
||||
request.AddHeader("Content-Type", "application/json");
|
||||
var bodyObj = new { assignment = body };
|
||||
request.AddBody(bodyObj);
|
||||
var (canvasAssignment, response) = await webRequestor.PostAsync<CanvasAssignment>(request);
|
||||
if (canvasAssignment == null)
|
||||
throw new Exception("created canvas assignment was null");
|
||||
return canvasAssignment with
|
||||
{
|
||||
DueAt = canvasAssignment.DueAt?.ToLocalTime(),
|
||||
LockAt = canvasAssignment.LockAt?.ToLocalTime()
|
||||
};
|
||||
}
|
||||
|
||||
public async Task Update(ulong courseId, LocalAssignment localAssignment, string htmlDescription)
|
||||
{
|
||||
System.Console.WriteLine($"updating assignment: {localAssignment.name}");
|
||||
var url = $"courses/{courseId}/assignments/{localAssignment.canvasId}";
|
||||
var request = new RestRequest(url);
|
||||
var body = new CanvasAssignmentCreationRequest()
|
||||
{
|
||||
name = localAssignment.name,
|
||||
submission_types = localAssignment.submission_types.Select(t => t.ToString()),
|
||||
description = htmlDescription,
|
||||
due_at = localAssignment.due_at,
|
||||
lock_at = localAssignment.lock_at,
|
||||
points_possible = localAssignment.points_possible
|
||||
};
|
||||
request.AddHeader("Content-Type", "application/json");
|
||||
var bodyObj = new { assignment = body };
|
||||
request.AddBody(bodyObj);
|
||||
await webRequestor.PutAsync(request);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user