mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
extracted a lot of canvas interfaces
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
// namespace Management.Test;
|
// namespace Management.Test;
|
||||||
|
|
||||||
// public class CanvasServiceTests
|
// public class ICanvasServiceTests
|
||||||
// {
|
// {
|
||||||
// [Test]
|
// [Test]
|
||||||
// public async Task CanReadCanvasSemesters()
|
// public async Task CanReadCanvasSemesters()
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
// };
|
// };
|
||||||
// Mock<IWebRequestor> mockRequestor = getTermsMock(expectedTerms);
|
// Mock<IWebRequestor> mockRequestor = getTermsMock(expectedTerms);
|
||||||
|
|
||||||
// var service = new CanvasService(mockRequestor.Object);
|
// var service = new ICanvasService(mockRequestor.Object);
|
||||||
// var canvasTerms = await service.GetTerms();
|
// var canvasTerms = await service.GetTerms();
|
||||||
|
|
||||||
// canvasTerms.Should().BeEquivalentTo(expectedTerms);
|
// canvasTerms.Should().BeEquivalentTo(expectedTerms);
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
// ),
|
// ),
|
||||||
// };
|
// };
|
||||||
// Mock<IWebRequestor> mockRequestor = getTermsMock(expectedTerms);
|
// Mock<IWebRequestor> mockRequestor = getTermsMock(expectedTerms);
|
||||||
// var service = new CanvasService(mockRequestor.Object);
|
// var service = new ICanvasService(mockRequestor.Object);
|
||||||
|
|
||||||
// var queryDate = new DateTime(2022, 6, 1);
|
// var queryDate = new DateTime(2022, 6, 1);
|
||||||
// var canvasTerms = await service.GetCurrentTermsFor(queryDate);
|
// var canvasTerms = await service.GetCurrentTermsFor(queryDate);
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
<PackageReference Include="dotenv.net" Version="3.1.2" />
|
<PackageReference Include="dotenv.net" Version="3.1.2" />
|
||||||
<PackageReference Include="Markdig" Version="0.31.0" />
|
<PackageReference Include="Markdig" Version="0.31.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="8.0.3" />
|
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="8.0.3" />
|
||||||
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.7.0" />
|
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.8.1" />
|
||||||
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.7.0" />
|
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.8.1" />
|
||||||
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.7.0" />
|
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.8.1" />
|
||||||
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.7.0" />
|
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.8.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
@using CanvasModel.Assignments
|
@using CanvasModel.Assignments
|
||||||
|
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject NavigationManager Navigation
|
@inject NavigationManager Navigation
|
||||||
@inject AssignmentEditorContext assignmentContext
|
@inject AssignmentEditorContext assignmentContext
|
||||||
|
|
||||||
@@ -144,15 +144,15 @@
|
|||||||
|
|
||||||
private async Task deleteFromCanvas()
|
private async Task deleteFromCanvas()
|
||||||
{
|
{
|
||||||
if (assignmentInCanvas == null
|
if (assignmentInCanvas == null
|
||||||
|| planner?.LocalCourse?.Settings.CanvasId == null
|
|| planner?.LocalCourse?.Settings.CanvasId == null
|
||||||
|| assignmentContext.Assignment == null
|
|| assignmentContext.Assignment == null
|
||||||
)
|
)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
deletingAssignmentFromCanvas = true;
|
deletingAssignmentFromCanvas = true;
|
||||||
await canvas.Assignments.Delete(
|
await canvas.Assignments.Delete(
|
||||||
(ulong)planner.LocalCourse.Settings.CanvasId,
|
(ulong)planner.LocalCourse.Settings.CanvasId,
|
||||||
assignmentInCanvas.Id,
|
assignmentInCanvas.Id,
|
||||||
assignmentContext.Assignment.Name
|
assignmentContext.Assignment.Name
|
||||||
);
|
);
|
||||||
@@ -186,8 +186,8 @@
|
|||||||
Toggle Help
|
Toggle Help
|
||||||
</button>
|
</button>
|
||||||
<ConfirmationModal Label="Delete" Class="btn btn-danger" OnConfirmAsync="HandleDelete" />
|
<ConfirmationModal Label="Delete" Class="btn btn-danger" OnConfirmAsync="HandleDelete" />
|
||||||
<button
|
<button
|
||||||
class="btn btn-outline-secondary mx-3"
|
class="btn btn-outline-secondary mx-3"
|
||||||
disabled="@(addingAssignmentToCanvas || deletingAssignmentFromCanvas)"
|
disabled="@(addingAssignmentToCanvas || deletingAssignmentFromCanvas)"
|
||||||
@onclick="addToCanvas"
|
@onclick="addToCanvas"
|
||||||
>
|
>
|
||||||
@@ -195,26 +195,26 @@
|
|||||||
</button>
|
</button>
|
||||||
@if (assignmentInCanvas != null)
|
@if (assignmentInCanvas != null)
|
||||||
{
|
{
|
||||||
<a
|
<a
|
||||||
class="btn btn-outline-secondary me-1"
|
class="btn btn-outline-secondary me-1"
|
||||||
href="@canvasAssignmentUrl"
|
href="@canvasAssignmentUrl"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
disabled="@(addingAssignmentToCanvas || deletingAssignmentFromCanvas)"
|
disabled="@(addingAssignmentToCanvas || deletingAssignmentFromCanvas)"
|
||||||
>
|
>
|
||||||
View in Canvas
|
View in Canvas
|
||||||
</a>
|
</a>
|
||||||
<button
|
<button
|
||||||
class="btn btn-outline-secondary mx-3"
|
class="btn btn-outline-secondary mx-3"
|
||||||
disabled="@(addingAssignmentToCanvas || deletingAssignmentFromCanvas)"
|
disabled="@(addingAssignmentToCanvas || deletingAssignmentFromCanvas)"
|
||||||
@onclick="updateInCanvas"
|
@onclick="updateInCanvas"
|
||||||
>
|
>
|
||||||
Update In Canvas
|
Update In Canvas
|
||||||
</button>
|
</button>
|
||||||
<ConfirmationModal
|
<ConfirmationModal
|
||||||
Disabled="@(addingAssignmentToCanvas || deletingAssignmentFromCanvas)"
|
Disabled="@(addingAssignmentToCanvas || deletingAssignmentFromCanvas)"
|
||||||
Label="Delete from Canvas"
|
Label="Delete from Canvas"
|
||||||
Class="btn btn-outline-danger mx-3"
|
Class="btn btn-outline-danger mx-3"
|
||||||
OnConfirmAsync="deleteFromCanvas"
|
OnConfirmAsync="deleteFromCanvas"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
<button class="btn btn-primary mx-2" @onclick="@(() => {
|
<button class="btn btn-primary mx-2" @onclick="@(() => {
|
||||||
@@ -225,5 +225,5 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
@using Management.Web.Shared.Components
|
@using Management.Web.Shared.Components
|
||||||
|
|
||||||
@inject FileStorageManager fileStorageManager
|
@inject FileStorageManager fileStorageManager
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
@inject AssignmentEditorContext assignmentContext
|
@inject AssignmentEditorContext assignmentContext
|
||||||
@inject ILogger<AssignmentFormPage> logger
|
@inject ILogger<AssignmentFormPage> logger
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
@page "/test"
|
@page "/test"
|
||||||
@rendermode InteractiveServer
|
@rendermode InteractiveServer
|
||||||
|
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
@inject FileStorageManager fileStorageManager
|
@inject FileStorageManager fileStorageManager
|
||||||
@inject NavigationManager Navigation
|
@inject NavigationManager Navigation
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
@using Management.Web.Shared.Components
|
@using Management.Web.Shared.Components
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
|
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
private Action<ChangeEventArgs> saveGroupName(string groupId)
|
private Action<ChangeEventArgs> saveGroupName(string groupId)
|
||||||
{
|
{
|
||||||
return (e) =>
|
return (e) =>
|
||||||
{
|
{
|
||||||
if(planner.LocalCourse != null)
|
if(planner.LocalCourse != null)
|
||||||
{
|
{
|
||||||
@@ -54,17 +54,17 @@
|
|||||||
);
|
);
|
||||||
planner.LocalCourse = planner.LocalCourse with
|
planner.LocalCourse = planner.LocalCourse with
|
||||||
{
|
{
|
||||||
Settings = planner.LocalCourse.Settings with
|
Settings = planner.LocalCourse.Settings with
|
||||||
{
|
{
|
||||||
AssignmentGroups = newGroups
|
AssignmentGroups = newGroups
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private Action<ChangeEventArgs> saveGroupWeight(string groupId)
|
private Action<ChangeEventArgs> saveGroupWeight(string groupId)
|
||||||
{
|
{
|
||||||
return (e) =>
|
return (e) =>
|
||||||
{
|
{
|
||||||
if(planner.LocalCourse != null)
|
if(planner.LocalCourse != null)
|
||||||
{
|
{
|
||||||
@@ -76,13 +76,13 @@
|
|||||||
);
|
);
|
||||||
planner.LocalCourse = planner.LocalCourse with
|
planner.LocalCourse = planner.LocalCourse with
|
||||||
{
|
{
|
||||||
Settings = planner.LocalCourse.Settings with
|
Settings = planner.LocalCourse.Settings with
|
||||||
{
|
{
|
||||||
AssignmentGroups = newGroups
|
AssignmentGroups = newGroups
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task SyncAssignmentGroupsWithCanvas()
|
private async Task SyncAssignmentGroupsWithCanvas()
|
||||||
@@ -105,13 +105,13 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<label class="form-label">Group Name</label>
|
<label class="form-label">Group Name</label>
|
||||||
<input
|
<input
|
||||||
class="form-control"
|
class="form-control"
|
||||||
@bind="groupName" @oninput="nameInputCallback">
|
@bind="groupName" @oninput="nameInputCallback">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<label class="form-label">Weight</label>
|
<label class="form-label">Weight</label>
|
||||||
<input
|
<input
|
||||||
class="form-control"
|
class="form-control"
|
||||||
@bind="weight"
|
@bind="weight"
|
||||||
@oninput="weightInputCallback"
|
@oninput="weightInputCallback"
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
<div class="d-flex justify-content-end">
|
<div class="d-flex justify-content-end">
|
||||||
<button
|
<button
|
||||||
class="btn btn-outline-primary"
|
class="btn btn-outline-primary"
|
||||||
@onclick="AddAssignmentGroup"
|
@onclick="AddAssignmentGroup"
|
||||||
>
|
>
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="btn btn-outline-secondary"
|
class="btn btn-outline-secondary"
|
||||||
@onclick="SyncAssignmentGroupsWithCanvas"
|
@onclick="SyncAssignmentGroupsWithCanvas"
|
||||||
disabled="@syncingAssignmentGroups"
|
disabled="@syncingAssignmentGroups"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
|
|
||||||
@inject FileStorageManager fileStorageManager
|
@inject FileStorageManager fileStorageManager
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
@inject NavigationManager navigtion
|
@inject NavigationManager navigtion
|
||||||
@inject IConfiguration config
|
@inject IConfiguration config
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
@using Management.Web.Pages.Course.Module
|
@using Management.Web.Pages.Course.Module
|
||||||
@using Management.Web.Pages.Course.CourseCalendar
|
@using Management.Web.Pages.Course.CourseCalendar
|
||||||
|
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
|
|
||||||
@code
|
@code
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
@using Management.Web.Shared.Components
|
@using Management.Web.Shared.Components
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
|
|
||||||
@code
|
@code
|
||||||
@@ -19,23 +19,23 @@
|
|||||||
}
|
}
|
||||||
private IEnumerable<EnrollmentTermModel>? terms { get; set; } = null;
|
private IEnumerable<EnrollmentTermModel>? terms { get; set; } = null;
|
||||||
private ulong? _selectedTermId {get; set;}
|
private ulong? _selectedTermId {get; set;}
|
||||||
private ulong? selectedTermId {
|
private ulong? selectedTermId {
|
||||||
get => _selectedTermId;
|
get => _selectedTermId;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_selectedTermId = value;
|
_selectedTermId = value;
|
||||||
if(selectedTerm != null && planner.LocalCourse != null)
|
if(selectedTerm != null && planner.LocalCourse != null)
|
||||||
{
|
{
|
||||||
planner.LocalCourse = planner.LocalCourse with
|
planner.LocalCourse = planner.LocalCourse with
|
||||||
{
|
{
|
||||||
Settings = planner.LocalCourse.Settings with
|
Settings = planner.LocalCourse.Settings with
|
||||||
{
|
{
|
||||||
StartDate=selectedTerm.StartAt ?? new DateTime(),
|
StartDate=selectedTerm.StartAt ?? new DateTime(),
|
||||||
EndDate=selectedTerm.EndAt ?? new DateTime(),
|
EndDate=selectedTerm.EndAt ?? new DateTime(),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private EnrollmentTermModel? selectedTerm
|
private EnrollmentTermModel? selectedTerm
|
||||||
{
|
{
|
||||||
@@ -59,8 +59,8 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="btn btn-outline-secondary"
|
class="btn btn-outline-secondary"
|
||||||
@onclick="@(() => modal.Show())"
|
@onclick="@(() => modal.Show())"
|
||||||
>
|
>
|
||||||
Edit Course Settings
|
Edit Course Settings
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
<h1>Course Settings</h1>
|
<h1>Course Settings</h1>
|
||||||
</Title>
|
</Title>
|
||||||
<Body>
|
<Body>
|
||||||
|
|
||||||
<h5 class="text-center">Select Days Of Week</h5>
|
<h5 class="text-center">Select Days Of Week</h5>
|
||||||
<div class="row m-3">
|
<div class="row m-3">
|
||||||
@foreach (DayOfWeek day in (DayOfWeek[])Enum.GetValues(typeof(DayOfWeek)))
|
@foreach (DayOfWeek day in (DayOfWeek[])Enum.GetValues(typeof(DayOfWeek)))
|
||||||
@@ -80,16 +80,16 @@
|
|||||||
<button
|
<button
|
||||||
class="@(
|
class="@(
|
||||||
planner.LocalCourse?.Settings.DaysOfWeek.Contains(day) ?? false
|
planner.LocalCourse?.Settings.DaysOfWeek.Contains(day) ?? false
|
||||||
? "btn btn-secondary"
|
? "btn btn-secondary"
|
||||||
: "btn btn-outline-secondary"
|
: "btn btn-outline-secondary"
|
||||||
)"
|
)"
|
||||||
@onclick="() =>
|
@onclick="() =>
|
||||||
{
|
{
|
||||||
if(planner.LocalCourse?.Settings.DaysOfWeek.Contains(day) ?? false)
|
if(planner.LocalCourse?.Settings.DaysOfWeek.Contains(day) ?? false)
|
||||||
{
|
{
|
||||||
planner.LocalCourse = planner.LocalCourse with
|
planner.LocalCourse = planner.LocalCourse with
|
||||||
{
|
{
|
||||||
Settings = planner.LocalCourse.Settings with
|
Settings = planner.LocalCourse.Settings with
|
||||||
{
|
{
|
||||||
DaysOfWeek = planner.LocalCourse.Settings.DaysOfWeek.Where((d) => d != day)
|
DaysOfWeek = planner.LocalCourse.Settings.DaysOfWeek.Where((d) => d != day)
|
||||||
}
|
}
|
||||||
@@ -99,16 +99,16 @@
|
|||||||
{
|
{
|
||||||
if (planner.LocalCourse != null)
|
if (planner.LocalCourse != null)
|
||||||
{
|
{
|
||||||
planner.LocalCourse = planner.LocalCourse with
|
planner.LocalCourse = planner.LocalCourse with
|
||||||
{
|
{
|
||||||
Settings = planner.LocalCourse.Settings with
|
Settings = planner.LocalCourse.Settings with
|
||||||
{
|
{
|
||||||
DaysOfWeek = planner.LocalCourse.Settings.DaysOfWeek.Append(day)
|
DaysOfWeek = planner.LocalCourse.Settings.DaysOfWeek.Append(day)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
@day
|
@day
|
||||||
</button>
|
</button>
|
||||||
@@ -138,15 +138,15 @@
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@if(planner.LocalCourse != null)
|
@if(planner.LocalCourse != null)
|
||||||
{
|
{
|
||||||
<div class="row justify-content-center m-3 text-center">
|
<div class="row justify-content-center m-3 text-center">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<div>Default Assignment Due Time</div>
|
<div>Default Assignment Due Time</div>
|
||||||
<TimePicker Time="planner.LocalCourse.Settings.DefaultDueTime" UpdateTime="@((newTime) =>
|
<TimePicker Time="planner.LocalCourse.Settings.DefaultDueTime" UpdateTime="@((newTime) =>
|
||||||
planner.LocalCourse =
|
planner.LocalCourse =
|
||||||
planner.LocalCourse with
|
planner.LocalCourse with
|
||||||
{ Settings = planner.LocalCourse.Settings with { DefaultDueTime=newTime } }
|
{ Settings = planner.LocalCourse.Settings with { DefaultDueTime=newTime } }
|
||||||
)"
|
)"
|
||||||
/>
|
/>
|
||||||
@@ -156,11 +156,11 @@
|
|||||||
<AssignmentGroups />
|
<AssignmentGroups />
|
||||||
</Body>
|
</Body>
|
||||||
<Footer>
|
<Footer>
|
||||||
<button
|
<button
|
||||||
class="btn btn-outline-secondary"
|
class="btn btn-outline-secondary"
|
||||||
@onclick="@(() => modal.Hide())"
|
@onclick="@(() => modal.Hide())"
|
||||||
>
|
>
|
||||||
Done Editing Course Settings
|
Done Editing Course Settings
|
||||||
</button>
|
</button>
|
||||||
</Footer>
|
</Footer>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
Name=Name
|
Name=Name
|
||||||
};
|
};
|
||||||
|
|
||||||
planner.LocalCourse = planner.LocalCourse with
|
planner.LocalCourse = planner.LocalCourse with
|
||||||
{
|
{
|
||||||
Modules = planner.LocalCourse.Modules.Append(newModule)
|
Modules = planner.LocalCourse.Modules.Append(newModule)
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
@using CanvasModel.Pages
|
@using CanvasModel.Pages
|
||||||
|
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject NavigationManager Navigation
|
@inject NavigationManager Navigation
|
||||||
@inject PageEditorContext pageContext
|
@inject PageEditorContext pageContext
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
@using Management.Web.Shared.Components
|
@using Management.Web.Shared.Components
|
||||||
|
|
||||||
@inject FileStorageManager fileStorageManager
|
@inject FileStorageManager fileStorageManager
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
@inject PageEditorContext pageContext
|
@inject PageEditorContext pageContext
|
||||||
@inject ILogger<CoursePageFormPage> logger
|
@inject ILogger<CoursePageFormPage> logger
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
@using Management.Web.Pages.Course.Module.ModuleItems
|
@using Management.Web.Pages.Course.Module.ModuleItems
|
||||||
@using Management.Web.Shared.Components
|
@using Management.Web.Shared.Components
|
||||||
|
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
@using Management.Web.Pages.Course.Module.ModuleItems
|
@using Management.Web.Pages.Course.Module.ModuleItems
|
||||||
|
|
||||||
@inject FileStorageManager fileStorageManager
|
@inject FileStorageManager fileStorageManager
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
@inject QuizEditorContext quizContext
|
@inject QuizEditorContext quizContext
|
||||||
@inject MyLogger<QuizFormPage> logger
|
@inject MyLogger<QuizFormPage> logger
|
||||||
|
|||||||
@@ -73,12 +73,12 @@ builder.Services.AddScoped(typeof(MyLogger<>));
|
|||||||
|
|
||||||
builder.Services.AddScoped<IWebRequestor, WebRequestor>();
|
builder.Services.AddScoped<IWebRequestor, WebRequestor>();
|
||||||
builder.Services.AddScoped<CanvasServiceUtils>();
|
builder.Services.AddScoped<CanvasServiceUtils>();
|
||||||
builder.Services.AddScoped<CanvasAssignmentService>();
|
builder.Services.AddScoped<ICanvasAssignmentService, CanvasAssignmentService>();
|
||||||
builder.Services.AddScoped<CanvasCoursePageService>();
|
builder.Services.AddScoped<ICanvasCoursePageService, CanvasCoursePageService>();
|
||||||
builder.Services.AddScoped<CanvasAssignmentGroupService>();
|
builder.Services.AddScoped<ICanvasAssignmentGroupService, CanvasAssignmentGroupService>();
|
||||||
builder.Services.AddScoped<CanvasQuizService>();
|
builder.Services.AddScoped<ICanvasQuizService, CanvasQuizService>();
|
||||||
builder.Services.AddScoped<CanvasModuleService>();
|
builder.Services.AddScoped<ICanvasModuleService, CanvasModuleService>();
|
||||||
builder.Services.AddScoped<CanvasService, CanvasService>();
|
builder.Services.AddScoped<ICanvasService, CanvasService>();
|
||||||
|
|
||||||
builder.Services.AddScoped<MarkdownCourseSaver>();
|
builder.Services.AddScoped<MarkdownCourseSaver>();
|
||||||
builder.Services.AddScoped<CourseMarkdownLoader>();
|
builder.Services.AddScoped<CourseMarkdownLoader>();
|
||||||
@@ -122,7 +122,6 @@ app.UseRouting();
|
|||||||
app.UseResponseCompression();
|
app.UseResponseCompression();
|
||||||
|
|
||||||
app.MapBlazorHub();
|
app.MapBlazorHub();
|
||||||
app.MapHub<SignalRHub>("/SignalRHub");
|
|
||||||
app.MapFallbackToPage("/_Host");
|
app.MapFallbackToPage("/_Host");
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
|
@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
|
||||||
@using LocalModels
|
@using LocalModels
|
||||||
|
|
||||||
@inject CanvasService canvas
|
@inject ICanvasService canvas
|
||||||
@inject FileStorageManager fileStorageManager
|
@inject FileStorageManager fileStorageManager
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,12 +8,12 @@ public class AssignmentEditorContext
|
|||||||
{
|
{
|
||||||
public event Action? StateHasChanged;
|
public event Action? StateHasChanged;
|
||||||
|
|
||||||
public CanvasService canvas { get; }
|
public ICanvasService canvas { get; }
|
||||||
private CoursePlanner planner { get; }
|
private CoursePlanner planner { get; }
|
||||||
|
|
||||||
public AssignmentEditorContext(
|
public AssignmentEditorContext(
|
||||||
MyLogger<AssignmentEditorContext> logger,
|
MyLogger<AssignmentEditorContext> logger,
|
||||||
CanvasService canvas,
|
ICanvasService canvas,
|
||||||
CoursePlanner planner
|
CoursePlanner planner
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ public class CoursePlanner
|
|||||||
{
|
{
|
||||||
private readonly MyLogger<CoursePlanner> logger;
|
private readonly MyLogger<CoursePlanner> logger;
|
||||||
private readonly FileStorageManager fileStorageManager;
|
private readonly FileStorageManager fileStorageManager;
|
||||||
private readonly CanvasService canvas;
|
private readonly ICanvasService canvas;
|
||||||
private readonly ILogger<CoursePlanner> _otherLogger;
|
private readonly ILogger<CoursePlanner> _otherLogger;
|
||||||
|
|
||||||
public bool LoadingCanvasData { get; internal set; } = false;
|
public bool LoadingCanvasData { get; internal set; } = false;
|
||||||
@@ -24,7 +24,7 @@ public class CoursePlanner
|
|||||||
public CoursePlanner(
|
public CoursePlanner(
|
||||||
MyLogger<CoursePlanner> logger,
|
MyLogger<CoursePlanner> logger,
|
||||||
FileStorageManager fileStorageManager,
|
FileStorageManager fileStorageManager,
|
||||||
CanvasService canvas,
|
ICanvasService canvas,
|
||||||
ILogger<CoursePlanner> otherLogger
|
ILogger<CoursePlanner> otherLogger
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ using Management.Services.Canvas;
|
|||||||
|
|
||||||
public class PageEditorContext(
|
public class PageEditorContext(
|
||||||
CoursePlanner planner,
|
CoursePlanner planner,
|
||||||
CanvasService canvas,
|
ICanvasService canvas,
|
||||||
MyLogger<PageEditorContext> logger)
|
MyLogger<PageEditorContext> logger)
|
||||||
{
|
{
|
||||||
public event Action? StateHasChanged;
|
public event Action? StateHasChanged;
|
||||||
private CoursePlanner planner { get; } = planner;
|
private CoursePlanner planner { get; } = planner;
|
||||||
private CanvasService canvas { get; } = canvas;
|
private ICanvasService canvas { get; } = canvas;
|
||||||
private readonly MyLogger<PageEditorContext> logger = logger;
|
private readonly MyLogger<PageEditorContext> logger = logger;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,12 +7,12 @@ using Management.Services.Canvas;
|
|||||||
|
|
||||||
public class QuizEditorContext(
|
public class QuizEditorContext(
|
||||||
CoursePlanner planner,
|
CoursePlanner planner,
|
||||||
CanvasService canvas,
|
ICanvasService canvas,
|
||||||
MyLogger<QuizEditorContext> logger)
|
MyLogger<QuizEditorContext> logger)
|
||||||
{
|
{
|
||||||
public event Action? StateHasChanged;
|
public event Action? StateHasChanged;
|
||||||
private CoursePlanner planner { get; } = planner;
|
private CoursePlanner planner { get; } = planner;
|
||||||
private CanvasService canvas { get; } = canvas;
|
private ICanvasService canvas { get; } = canvas;
|
||||||
private readonly MyLogger<QuizEditorContext> logger = logger;
|
private readonly MyLogger<QuizEditorContext> logger = logger;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public static partial class AssignmentGroupSyncronizationExtensions
|
|||||||
this LocalCourse localCourse,
|
this LocalCourse localCourse,
|
||||||
ulong courseCanvasId,
|
ulong courseCanvasId,
|
||||||
IEnumerable<CanvasAssignmentGroup> canvasAssignmentGroups,
|
IEnumerable<CanvasAssignmentGroup> canvasAssignmentGroups,
|
||||||
CanvasService canvas
|
ICanvasService canvas
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
var canvasAssignmentGroupIds = canvasAssignmentGroups.Select(g => g.Id).ToArray();
|
var canvasAssignmentGroupIds = canvasAssignmentGroups.Select(g => g.Id).ToArray();
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ public static partial class AssignmentSyncronizationExtensions
|
|||||||
ulong canvasCourseId,
|
ulong canvasCourseId,
|
||||||
LocalAssignment localAssignment,
|
LocalAssignment localAssignment,
|
||||||
IEnumerable<CanvasAssignment> canvasAssignments,
|
IEnumerable<CanvasAssignment> canvasAssignments,
|
||||||
CanvasService canvas
|
ICanvasService canvas
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
var canvasAssignment = canvasAssignments.FirstOrDefault(
|
var canvasAssignment = canvasAssignments.FirstOrDefault(
|
||||||
@@ -42,7 +42,7 @@ public static partial class AssignmentSyncronizationExtensions
|
|||||||
ulong canvasCourseId,
|
ulong canvasCourseId,
|
||||||
LocalAssignment localAssignment,
|
LocalAssignment localAssignment,
|
||||||
CanvasAssignment canvasAssignment,
|
CanvasAssignment canvasAssignment,
|
||||||
CanvasService canvas,
|
ICanvasService canvas,
|
||||||
ulong? canvasAssignmentGroupId
|
ulong? canvasAssignmentGroupId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ public static partial class ModuleSyncronizationExtensions
|
|||||||
// this LocalCourse localCourse,
|
// this LocalCourse localCourse,
|
||||||
// ulong canvasId,
|
// ulong canvasId,
|
||||||
// IEnumerable<CanvasModule> canvasModules,
|
// IEnumerable<CanvasModule> canvasModules,
|
||||||
// CanvasService canvas
|
// ICanvasService canvas
|
||||||
// )
|
// )
|
||||||
// {
|
// {
|
||||||
// var currentCanvasPositions = canvasModules.ToDictionary(m => m.Id, m => m.Position);
|
// var currentCanvasPositions = canvasModules.ToDictionary(m => m.Id, m => m.Position);
|
||||||
@@ -34,7 +34,7 @@ public static partial class ModuleSyncronizationExtensions
|
|||||||
this LocalModule localModule,
|
this LocalModule localModule,
|
||||||
ulong canvasId,
|
ulong canvasId,
|
||||||
ulong moduleCanvasId,
|
ulong moduleCanvasId,
|
||||||
CanvasService canvas
|
ICanvasService canvas
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
var canvasModuleItems = await canvas.Modules.GetModuleItems(canvasId, moduleCanvasId);
|
var canvasModuleItems = await canvas.Modules.GetModuleItems(canvasId, moduleCanvasId);
|
||||||
@@ -79,7 +79,7 @@ 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,
|
ICanvasService canvas,
|
||||||
IEnumerable<CanvasAssignment> canvasAssignments
|
IEnumerable<CanvasAssignment> canvasAssignments
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ public static class PageSynchronizationExtension
|
|||||||
public static async Task<CanvasPage?> AddPageToCanvas(
|
public static async Task<CanvasPage?> AddPageToCanvas(
|
||||||
this LocalCourse localCourse,
|
this LocalCourse localCourse,
|
||||||
LocalCoursePage localPage,
|
LocalCoursePage localPage,
|
||||||
CanvasService canvas
|
ICanvasService canvas
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (localCourse.Settings.CanvasId == null)
|
if (localCourse.Settings.CanvasId == null)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ public static partial class QuizSyncronizationExtensions
|
|||||||
public static async Task<ulong?> AddQuizToCanvas(
|
public static async Task<ulong?> AddQuizToCanvas(
|
||||||
this LocalCourse localCourse,
|
this LocalCourse localCourse,
|
||||||
LocalQuiz localQuiz,
|
LocalQuiz localQuiz,
|
||||||
CanvasService canvas
|
ICanvasService canvas
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (localCourse.Settings.CanvasId == null)
|
if (localCourse.Settings.CanvasId == null)
|
||||||
|
|||||||
@@ -4,7 +4,15 @@ using RestSharp;
|
|||||||
|
|
||||||
namespace Management.Services.Canvas;
|
namespace Management.Services.Canvas;
|
||||||
|
|
||||||
public class CanvasAssignmentGroupService
|
|
||||||
|
public interface ICanvasAssignmentGroupService
|
||||||
|
{
|
||||||
|
Task<IEnumerable<CanvasAssignmentGroup>> GetAll(ulong courseId);
|
||||||
|
Task<LocalAssignmentGroup> Create(ulong canvasCourseId, LocalAssignmentGroup localAssignmentGroup);
|
||||||
|
Task Update(ulong canvasCourseId, LocalAssignmentGroup localAssignmentGroup);
|
||||||
|
|
||||||
|
}
|
||||||
|
public class CanvasAssignmentGroupService: ICanvasAssignmentGroupService
|
||||||
{
|
{
|
||||||
private readonly IWebRequestor webRequestor;
|
private readonly IWebRequestor webRequestor;
|
||||||
private readonly CanvasServiceUtils utils;
|
private readonly CanvasServiceUtils utils;
|
||||||
|
|||||||
@@ -3,12 +3,28 @@ using LocalModels;
|
|||||||
using RestSharp;
|
using RestSharp;
|
||||||
|
|
||||||
namespace Management.Services.Canvas;
|
namespace Management.Services.Canvas;
|
||||||
|
public interface ICanvasAssignmentService
|
||||||
|
{
|
||||||
|
Task<IEnumerable<CanvasAssignment>> GetAll(ulong courseId);
|
||||||
|
Task<ulong> Create(
|
||||||
|
ulong canvasCourseId,
|
||||||
|
LocalAssignment localAssignment,
|
||||||
|
ulong? canvasAssignmentGroupId
|
||||||
|
);
|
||||||
|
Task Update(
|
||||||
|
ulong courseId,
|
||||||
|
ulong canvasAssignmentId,
|
||||||
|
LocalAssignment localAssignment,
|
||||||
|
ulong? canvasAssignmentGroupId
|
||||||
|
);
|
||||||
|
Task Delete(ulong courseId, ulong assignmentCanvasId, string assignmentName);
|
||||||
|
Task CreateRubric(ulong courseId, ulong assignmentCanvasId, LocalAssignment localAssignment);
|
||||||
|
}
|
||||||
public class CanvasAssignmentService(
|
public class CanvasAssignmentService(
|
||||||
IWebRequestor webRequestor,
|
IWebRequestor webRequestor,
|
||||||
CanvasServiceUtils utils,
|
CanvasServiceUtils utils,
|
||||||
MyLogger<CanvasAssignmentService> logger
|
MyLogger<CanvasAssignmentService> logger
|
||||||
)
|
): ICanvasAssignmentService
|
||||||
{
|
{
|
||||||
private readonly IWebRequestor webRequestor = webRequestor;
|
private readonly IWebRequestor webRequestor = webRequestor;
|
||||||
private readonly CanvasServiceUtils utils = utils;
|
private readonly CanvasServiceUtils utils = utils;
|
||||||
|
|||||||
@@ -6,11 +6,18 @@ using LocalModels;
|
|||||||
using RestSharp;
|
using RestSharp;
|
||||||
|
|
||||||
namespace Management.Services.Canvas;
|
namespace Management.Services.Canvas;
|
||||||
|
public interface ICanvasCoursePageService
|
||||||
|
{
|
||||||
|
Task<IEnumerable<CanvasPage>> GetAll(ulong courseId);
|
||||||
|
Task<CanvasPage> Create(ulong canvasCourseId, LocalCoursePage localCourse);
|
||||||
|
Task Update(ulong courseId, ulong canvasPageId, LocalCoursePage localCoursePage);
|
||||||
|
Task Delete(ulong courseId, ulong canvasPageId);
|
||||||
|
}
|
||||||
public class CanvasCoursePageService(
|
public class CanvasCoursePageService(
|
||||||
IWebRequestor webRequestor,
|
IWebRequestor webRequestor,
|
||||||
CanvasServiceUtils utils,
|
CanvasServiceUtils utils,
|
||||||
MyLogger<CanvasCoursePageService> logger
|
MyLogger<CanvasCoursePageService> logger
|
||||||
)
|
) : ICanvasCoursePageService
|
||||||
{
|
{
|
||||||
private readonly IWebRequestor webRequestor = webRequestor;
|
private readonly IWebRequestor webRequestor = webRequestor;
|
||||||
private readonly CanvasServiceUtils utils = utils;
|
private readonly CanvasServiceUtils utils = utils;
|
||||||
|
|||||||
@@ -5,7 +5,18 @@ using RestSharp;
|
|||||||
|
|
||||||
namespace Management.Services.Canvas;
|
namespace Management.Services.Canvas;
|
||||||
|
|
||||||
public class CanvasModuleService
|
|
||||||
|
public interface ICanvasModuleService
|
||||||
|
{
|
||||||
|
Task<IEnumerable<CanvasModule>> GetModules(ulong courseId);
|
||||||
|
Task<CanvasModule> CreateModule(ulong courseId, string name);
|
||||||
|
Task UpdateModule(ulong courseId, ulong moduleId, string name, uint position);
|
||||||
|
Task<IEnumerable<CanvasModuleItem>> GetModuleItems(ulong courseId, ulong moduleId);
|
||||||
|
Task<Dictionary<CanvasModule, IEnumerable<CanvasModuleItem>>> GetAllModulesItems(ulong courseId, IEnumerable<CanvasModule> modules);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CanvasModuleService: ICanvasModuleService
|
||||||
{
|
{
|
||||||
|
|
||||||
private readonly IWebRequestor webRequestor;
|
private readonly IWebRequestor webRequestor;
|
||||||
|
|||||||
@@ -4,16 +4,23 @@ using RestSharp;
|
|||||||
|
|
||||||
namespace Management.Services.Canvas;
|
namespace Management.Services.Canvas;
|
||||||
|
|
||||||
|
public interface ICanvasQuizService
|
||||||
|
{
|
||||||
|
Task<IEnumerable<CanvasQuiz>> GetAll(ulong courseId);
|
||||||
|
Task<ulong> Create(ulong canvasCourseId, LocalQuiz localQuiz, ulong? canvasAssignmentGroupId);
|
||||||
|
Task CreateQuizQuestions(ulong canvasCourseId, ulong canvasQuizId, LocalQuiz localQuiz);
|
||||||
|
|
||||||
|
}
|
||||||
public class CanvasQuizService(
|
public class CanvasQuizService(
|
||||||
IWebRequestor webRequestor,
|
IWebRequestor webRequestor,
|
||||||
CanvasServiceUtils utils,
|
CanvasServiceUtils utils,
|
||||||
CanvasAssignmentService assignments,
|
ICanvasAssignmentService assignments,
|
||||||
ILogger<CanvasQuizService> logger
|
ILogger<CanvasQuizService> logger
|
||||||
)
|
): ICanvasQuizService
|
||||||
{
|
{
|
||||||
private readonly IWebRequestor webRequestor = webRequestor;
|
private readonly IWebRequestor webRequestor = webRequestor;
|
||||||
private readonly CanvasServiceUtils utils = utils;
|
private readonly CanvasServiceUtils utils = utils;
|
||||||
private readonly CanvasAssignmentService assignments = assignments;
|
private readonly ICanvasAssignmentService assignments = assignments;
|
||||||
private readonly ILogger<CanvasQuizService> logger = logger;
|
private readonly ILogger<CanvasQuizService> logger = logger;
|
||||||
|
|
||||||
public async Task<IEnumerable<CanvasQuiz>> GetAll(ulong courseId)
|
public async Task<IEnumerable<CanvasQuiz>> GetAll(ulong courseId)
|
||||||
|
|||||||
@@ -9,26 +9,43 @@ using RestSharp;
|
|||||||
|
|
||||||
namespace Management.Services.Canvas;
|
namespace Management.Services.Canvas;
|
||||||
|
|
||||||
|
public interface ICanvasService
|
||||||
|
{
|
||||||
|
ICanvasAssignmentService Assignments { get; }
|
||||||
|
ICanvasAssignmentGroupService AssignmentGroups { get; }
|
||||||
|
ICanvasModuleService Modules { get; }
|
||||||
|
ICanvasQuizService Quizzes { get; }
|
||||||
|
ICanvasCoursePageService Pages { get; }
|
||||||
|
Task<IEnumerable<EnrollmentTermModel>> GetTerms();
|
||||||
|
Task<IEnumerable<CourseModel>> GetCourses(ulong termId);
|
||||||
|
Task<CourseModel> GetCourse(ulong courseId);
|
||||||
|
Task<IEnumerable<EnrollmentTermModel>> GetCurrentTermsFor(DateTime? queryDate = null);
|
||||||
|
Task UpdateModuleItem(ulong canvasCourseId, ulong canvasModuleId, CanvasModuleItem item);
|
||||||
|
Task CreateModuleItem(ulong canvasCourseId, ulong canvasModuleId, string title, string type, ulong contentId);
|
||||||
|
Task CreateModuleItem(ulong canvasCourseId, ulong canvasModuleId, string title, string type, string contentId);
|
||||||
|
Task CreatePageModuleItem(ulong canvasCourseId, ulong canvasModuleId, string title, CanvasPage canvasPage);
|
||||||
|
}
|
||||||
|
|
||||||
public class CanvasService(
|
public class CanvasService(
|
||||||
IWebRequestor webRequestor,
|
IWebRequestor webRequestor,
|
||||||
CanvasServiceUtils utils,
|
CanvasServiceUtils utils,
|
||||||
CanvasAssignmentService Assignments,
|
ICanvasAssignmentService Assignments,
|
||||||
CanvasAssignmentGroupService AssignmentGroups,
|
ICanvasAssignmentGroupService AssignmentGroups,
|
||||||
CanvasModuleService Modules,
|
ICanvasModuleService Modules,
|
||||||
CanvasQuizService Quizzes,
|
ICanvasQuizService Quizzes,
|
||||||
CanvasCoursePageService Pages,
|
ICanvasCoursePageService Pages,
|
||||||
MyLogger<CanvasService> logger
|
MyLogger<ICanvasService> logger
|
||||||
)
|
):ICanvasService
|
||||||
{
|
{
|
||||||
private readonly IWebRequestor webRequestor = webRequestor;
|
private readonly IWebRequestor webRequestor = webRequestor;
|
||||||
private readonly CanvasServiceUtils utils = utils;
|
private readonly CanvasServiceUtils utils = utils;
|
||||||
private readonly MyLogger<CanvasService> logger = logger;
|
private readonly MyLogger<ICanvasService> logger = logger;
|
||||||
|
|
||||||
public CanvasAssignmentService Assignments { get; } = Assignments;
|
public ICanvasAssignmentService Assignments { get; } = Assignments;
|
||||||
public CanvasAssignmentGroupService AssignmentGroups { get; } = AssignmentGroups;
|
public ICanvasAssignmentGroupService AssignmentGroups { get; } = AssignmentGroups;
|
||||||
public CanvasModuleService Modules { get; } = Modules;
|
public ICanvasModuleService Modules { get; } = Modules;
|
||||||
public CanvasQuizService Quizzes { get; } = Quizzes;
|
public ICanvasQuizService Quizzes { get; } = Quizzes;
|
||||||
public CanvasCoursePageService Pages { get; } = Pages;
|
public ICanvasCoursePageService Pages { get; } = Pages;
|
||||||
|
|
||||||
public async Task<IEnumerable<EnrollmentTermModel>> GetTerms()
|
public async Task<IEnumerable<EnrollmentTermModel>> GetTerms()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ using RestSharp;
|
|||||||
|
|
||||||
namespace Management.Services.Canvas;
|
namespace Management.Services.Canvas;
|
||||||
|
|
||||||
|
|
||||||
public class CanvasServiceUtils
|
public class CanvasServiceUtils
|
||||||
{
|
{
|
||||||
private const string BaseUrl = "https://snow.instructure.com/api/v1/";
|
private const string BaseUrl = "https://snow.instructure.com/api/v1/";
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
using Microsoft.AspNetCore.SignalR;
|
|
||||||
|
|
||||||
public class SignalRHub : Hub
|
|
||||||
{
|
|
||||||
public async Task SendMessage(string user, string message)
|
|
||||||
{
|
|
||||||
await Clients.All.SendAsync("ReceiveMessage", user, message);
|
|
||||||
}
|
|
||||||
public override Task OnConnectedAsync()
|
|
||||||
{
|
|
||||||
var connectionId = Context.ConnectionId;
|
|
||||||
// Store the connection ID for later use, e.g., in a database or in-memory store
|
|
||||||
return base.OnConnectedAsync();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -46,3 +46,5 @@ make the ux easier to change course pages
|
|||||||
schedule planning view? just outline concepts? (maybe some non-canvas scheduled thing that only shows up in planner? like a note, could be de-emphasized in webpage)
|
schedule planning view? just outline concepts? (maybe some non-canvas scheduled thing that only shows up in planner? like a note, could be de-emphasized in webpage)
|
||||||
|
|
||||||
holiday schedule
|
holiday schedule
|
||||||
|
|
||||||
|
multi-seciton support for due dates/times
|
||||||
|
|||||||
Reference in New Issue
Block a user