diff --git a/Management.Test/Features/ConfigurationTests.cs b/Management.Test/Features/ConfigurationTests.cs
index 2a78ab9..5bb1989 100644
--- a/Management.Test/Features/ConfigurationTests.cs
+++ b/Management.Test/Features/ConfigurationTests.cs
@@ -1,26 +1,26 @@
-using CanvasModel.EnrollmentTerms;
+// using CanvasModel.EnrollmentTerms;
-public class ConfigurationTests
-{
- [Test]
- public void TestCanCreateConfigFromTermAndDays()
- {
- DateTime startAt = new DateTime(2022, 1, 1);
- DateTime endAt = new DateTime(2022, 1, 2);
- var canvasTerm = new EnrollmentTermModel(
- Id: 1,
- Name: "one",
- StartAt: startAt,
- EndAt: endAt
- );
- var daysOfWeek = new DayOfWeek[] { DayOfWeek.Monday };
- var management = new CoursePlanner();
- management.SetConfiguration(canvasTerm, daysOfWeek);
- var config = management.SemesterCalendar;
+// public class ConfigurationTests
+// {
+// [Test]
+// public void TestCanCreateConfigFromTermAndDays()
+// {
+// DateTime startAt = new DateTime(2022, 1, 1);
+// DateTime endAt = new DateTime(2022, 1, 2);
+// var canvasTerm = new EnrollmentTermModel(
+// Id: 1,
+// Name: "one",
+// StartAt: startAt,
+// EndAt: endAt
+// );
+// var daysOfWeek = new DayOfWeek[] { DayOfWeek.Monday };
+// var management = new CoursePlanner();
+// management.SetConfiguration(canvasTerm, daysOfWeek);
+// var config = management.SemesterCalendar;
- if(config == null) Assert.Fail();
- config!.StartDate.Should().Be(startAt);
- config!.EndDate.Should().Be(endAt);
- config!.Days.Should().BeEquivalentTo(daysOfWeek);
- }
-}
\ No newline at end of file
+// if(config == null) Assert.Fail();
+// config!.StartDate.Should().Be(startAt);
+// config!.EndDate.Should().Be(endAt);
+// config!.Days.Should().BeEquivalentTo(daysOfWeek);
+// }
+// }
\ No newline at end of file
diff --git a/Management.Test/Features/SemesterPlannerTests.cs b/Management.Test/Features/SemesterPlannerTests.cs
index 050158a..b74ed73 100644
--- a/Management.Test/Features/SemesterPlannerTests.cs
+++ b/Management.Test/Features/SemesterPlannerTests.cs
@@ -1,97 +1,97 @@
-using CanvasModel.EnrollmentTerms;
+// using CanvasModel.EnrollmentTerms;
-namespace Management.Test;
+// namespace Management.Test;
-public class SemesterPlannerTests
-{
- [Test]
- public void TestCanCreatePlanner()
- {
+// public class SemesterPlannerTests
+// {
+// [Test]
+// public void TestCanCreatePlanner()
+// {
- var config = new SemesterCalendarConfig(
- StartDate: new DateTime(2022, 1, 1),
- EndDate: new DateTime(2022, 1, 2),
- new DayOfWeek[] { }
- );
+// var config = new SemesterCalendarConfig(
+// StartDate: new DateTime(2022, 1, 1),
+// EndDate: new DateTime(2022, 1, 2),
+// new DayOfWeek[] { }
+// );
- var semester = new SemesterPlanner(config);
+// var semester = new SemesterPlanner(config);
- semester.Months.Count().Should().Be(1);
- }
+// semester.Months.Count().Should().Be(1);
+// }
- [Test]
- public void TestNewPlannerHasCorrectNumberOfMonths()
- {
- var config = new SemesterCalendarConfig(
- StartDate: new DateTime(2022, 1, 1),
- EndDate: new DateTime(2022, 2, 1),
- new DayOfWeek[] { }
- );
+// [Test]
+// public void TestNewPlannerHasCorrectNumberOfMonths()
+// {
+// var config = new SemesterCalendarConfig(
+// StartDate: new DateTime(2022, 1, 1),
+// EndDate: new DateTime(2022, 2, 1),
+// new DayOfWeek[] { }
+// );
- var semester = new SemesterPlanner(config);
+// var semester = new SemesterPlanner(config);
- semester.Months.Count().Should().Be(2);
- }
+// semester.Months.Count().Should().Be(2);
+// }
- [Test]
- public void TestNewPlannerHandlesTermsThatWrapYears()
- {
- var config = new SemesterCalendarConfig(
- StartDate: new DateTime(2022, 12, 1),
- EndDate: new DateTime(2023, 1, 1),
- new DayOfWeek[] { }
- );
+// [Test]
+// public void TestNewPlannerHandlesTermsThatWrapYears()
+// {
+// var config = new SemesterCalendarConfig(
+// StartDate: new DateTime(2022, 12, 1),
+// EndDate: new DateTime(2023, 1, 1),
+// new DayOfWeek[] { }
+// );
- var semester = new SemesterPlanner(config);
+// var semester = new SemesterPlanner(config);
- semester.Months.Count().Should().Be(2);
- }
+// semester.Months.Count().Should().Be(2);
+// }
- [Test]
- public void TestSemesterGetsCorrectMonths()
- {
- var config = new SemesterCalendarConfig(
- StartDate: new DateTime(2022, 1, 1),
- EndDate: new DateTime(2022, 2, 1),
- new DayOfWeek[] { }
- );
+// [Test]
+// public void TestSemesterGetsCorrectMonths()
+// {
+// var config = new SemesterCalendarConfig(
+// StartDate: new DateTime(2022, 1, 1),
+// EndDate: new DateTime(2022, 2, 1),
+// new DayOfWeek[] { }
+// );
- var semester = new SemesterPlanner(config);
+// var semester = new SemesterPlanner(config);
- semester.Months.First().Month.Should().Be(1);
- semester.Months.Last().Month.Should().Be(2);
- }
+// semester.Months.First().Month.Should().Be(1);
+// semester.Months.Last().Month.Should().Be(2);
+// }
- [Test]
- public void TestMonthsCanWrapYears()
- {
- var config = new SemesterCalendarConfig(
- StartDate: new DateTime(2022, 12, 1),
- EndDate: new DateTime(2023, 1, 1),
- new DayOfWeek[] { }
- );
+// [Test]
+// public void TestMonthsCanWrapYears()
+// {
+// var config = new SemesterCalendarConfig(
+// StartDate: new DateTime(2022, 12, 1),
+// EndDate: new DateTime(2023, 1, 1),
+// new DayOfWeek[] { }
+// );
- var semester = new SemesterPlanner(config);
+// var semester = new SemesterPlanner(config);
- semester.Months.First().Month.Should().Be(12);
- semester.Months.First().Year.Should().Be(2022);
+// semester.Months.First().Month.Should().Be(12);
+// semester.Months.First().Year.Should().Be(2022);
- semester.Months.Last().Month.Should().Be(1);
- semester.Months.Last().Year.Should().Be(2023);
- }
+// semester.Months.Last().Month.Should().Be(1);
+// semester.Months.Last().Year.Should().Be(2023);
+// }
- [Test]
- public void TestSemesterTracksDaysOfWeek()
- {
- DayOfWeek[] days = new DayOfWeek[] { DayOfWeek.Monday };
- var config = new SemesterCalendarConfig(
- StartDate: new DateTime(2022, 12, 1),
- EndDate: new DateTime(2023, 1, 1),
- days
- );
+// [Test]
+// public void TestSemesterTracksDaysOfWeek()
+// {
+// DayOfWeek[] days = new DayOfWeek[] { DayOfWeek.Monday };
+// var config = new SemesterCalendarConfig(
+// StartDate: new DateTime(2022, 12, 1),
+// EndDate: new DateTime(2023, 1, 1),
+// days
+// );
- var semester = new SemesterPlanner(config);
- semester.Days.Should().BeEquivalentTo(days);
- }
-}
\ No newline at end of file
+// var semester = new SemesterPlanner(config);
+// semester.Days.Should().BeEquivalentTo(days);
+// }
+// }
\ No newline at end of file
diff --git a/Management.Web/Pages/Index.razor b/Management.Web/Pages/Index.razor
index 5edd309..604451d 100644
--- a/Management.Web/Pages/Index.razor
+++ b/Management.Web/Pages/Index.razor
@@ -13,9 +13,17 @@
@code
{
private bool showNewFile { get; set; } = false;
- protected override void OnInitialized()
+protected override void OnInitialized()
{
- planner.StateHasChanged += () => this.InvokeAsync(this.StateHasChanged);
+ planner.StateHasChanged += reload;
+ }
+ private void reload()
+ {
+ this.InvokeAsync(this.StateHasChanged);
+ }
+ public void Dispose()
+ {
+ planner.StateHasChanged -= reload;
}
}
diff --git a/Management.Web/Pages/_Host.cshtml b/Management.Web/Pages/_Host.cshtml
index c7cfa20..069fdcd 100644
--- a/Management.Web/Pages/_Host.cshtml
+++ b/Management.Web/Pages/_Host.cshtml
@@ -9,13 +9,15 @@
-
+ @* *@
+
+
-
+
diff --git a/Management.Web/Shared/Components/Modal.razor b/Management.Web/Shared/Components/Modal.razor
new file mode 100644
index 0000000..3eb46d9
--- /dev/null
+++ b/Management.Web/Shared/Components/Modal.razor
@@ -0,0 +1,52 @@
+@using Management.Web.Shared.Components
+
+@code {
+ [Parameter, EditorRequired]
+ public RenderFragment? Title { get; set; }
+
+ [Parameter, EditorRequired]
+ public RenderFragment? Body { get; set; }
+
+ [Parameter, EditorRequired]
+ public RenderFragment? Footer { get; set; }
+
+ [Parameter]
+ public Action OnShow { get; set; } = () => { };
+
+ [Parameter]
+ public Action OnHide { get; set; } = () => { };
+
+ private string modalClass = "hide-modal";
+ private bool showBackdrop = false;
+ public void Show()
+ {
+ modalClass = "show-modal";
+ showBackdrop = true;
+ OnShow();
+ }
+
+ public void Hide()
+ {
+ modalClass = "hide-modal";
+ showBackdrop = false;
+ OnHide();
+ }
+}
+
+
+
+@if (showBackdrop)
+{
+
+}
diff --git a/Management.Web/Shared/Components/Modal.razor.css b/Management.Web/Shared/Components/Modal.razor.css
new file mode 100644
index 0000000..46eda54
--- /dev/null
+++ b/Management.Web/Shared/Components/Modal.razor.css
@@ -0,0 +1,16 @@
+
+.show-modal {
+ animation: enter 250ms;
+ display: block;
+ opacity: 1;
+}
+
+@keyframes enter {
+ from {
+ display: block;
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+}
diff --git a/Management.Web/Shared/Course/CourseDetails.razor b/Management.Web/Shared/Course/CourseDetails.razor
index d819306..d89b337 100644
--- a/Management.Web/Shared/Course/CourseDetails.razor
+++ b/Management.Web/Shared/Course/CourseDetails.razor
@@ -10,7 +10,15 @@
private bool showEditCourseSettings = false;
protected override void OnInitialized()
{
- planner.StateHasChanged += () => this.InvokeAsync(this.StateHasChanged);
+ planner.StateHasChanged += reload;
+ }
+ private void reload()
+ {
+ this.InvokeAsync(this.StateHasChanged);
+ }
+ public void Dispose()
+ {
+ planner.StateHasChanged -= reload;
}
}
@@ -42,7 +50,7 @@ else
}
}
-
\ No newline at end of file
diff --git a/Management.Web/Shared/MainLayout.razor b/Management.Web/Shared/MainLayout.razor
index e07dcdb..e5fa9d5 100644
--- a/Management.Web/Shared/MainLayout.razor
+++ b/Management.Web/Shared/MainLayout.razor
@@ -3,14 +3,15 @@
Management.Web
- *@
-
+ @* maybe put some common buttons up here *@
+ @*
+
*@
@Body
diff --git a/Management.Web/Shared/Module/Assignment/AssignmentCard.razor b/Management.Web/Shared/Module/Assignment/AssignmentCard.razor
deleted file mode 100644
index 818d910..0000000
--- a/Management.Web/Shared/Module/Assignment/AssignmentCard.razor
+++ /dev/null
@@ -1,24 +0,0 @@
-@inject AssignmentDragContainer dragContainer
-
-@code {
- [Parameter]
- [Required]
- public LocalAssignment assignment { get; set; } = new();
- private void HandleDragStart()
- {
- dragContainer.AssignmentBeingDragged = assignment;
- System.Console.WriteLine("assignment set");
- }
-}
-
-
diff --git a/Management.Web/Shared/Module/Assignment/AssignmentDetails.razor b/Management.Web/Shared/Module/Assignment/AssignmentDetails.razor
new file mode 100644
index 0000000..84c60f2
--- /dev/null
+++ b/Management.Web/Shared/Module/Assignment/AssignmentDetails.razor
@@ -0,0 +1,98 @@
+@using Management.Web.Shared.Components
+
+@inject AssignmentDragContainer dragContainer
+@inject CoursePlanner planner
+
+@code {
+ [Parameter]
+ [EditorRequired]
+ public LocalAssignment assignment { get; set; } = new();
+ [Parameter]
+ [EditorRequired]
+ public LocalModule module { get; set; } = new();
+ private bool showUpdateForm = false;
+
+ protected override void OnInitialized()
+ {
+ planner.StateHasChanged += reload;
+ }
+ private void reload()
+ {
+ this.InvokeAsync(this.StateHasChanged);
+ }
+ public void Dispose()
+ {
+ planner.StateHasChanged -= reload;
+ }
+ private Modal? assignmentEditorModal {get; set;}
+ private void HandleDragStart()
+ {
+ dragContainer.DropCallback = (DateTime dropDate) => {
+ if (planner.LocalCourse != null)
+ {
+ var newCourse = planner.LocalCourse with
+ {
+ Modules = planner.LocalCourse.Modules.Select(m =>
+ m.Name != module.Name
+ ? m
+ : m with
+ {
+ Assignments = module.Assignments.Select(a =>
+ a.id != assignment.id
+ ? a
+ : a with
+ {
+ due_at=dropDate
+ }
+ )
+ }
+ )
+ };
+ planner.LocalCourse = newCourse;
+ }
+ };
+ }
+
+ private void HandleDragEnd()
+ {
+ dragContainer.DropCallback = null;
+ }
+
+}
+
+ showUpdateForm = true)"
+ class="draggableCart"
+ role="button"
+>
+
+
+
@assignment.name
+
+ @assignment.description
+
Due At: @assignment.due_at
+
Lock At: @assignment.lock_at
+
Points: @assignment.points_possible
+ @if(assignment.canvasId != null)
+ {
+
Synced with canvas
+ }
+ else
+ {
+
Not synced with canvas
+ }
+
@JsonSerializer.Serialize(@assignment.rubric)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Management.Web/Shared/Module/Assignment/AssignmentForm.razor b/Management.Web/Shared/Module/Assignment/AssignmentForm.razor
new file mode 100644
index 0000000..474f790
--- /dev/null
+++ b/Management.Web/Shared/Module/Assignment/AssignmentForm.razor
@@ -0,0 +1,59 @@
+@using Management.Web.Shared.Components
+
+@code {
+ [Parameter]
+ [EditorRequired]
+ public LocalAssignment assignment
+ {
+ get;
+ set;
+ } = default!;
+
+ [Parameter]
+ [EditorRequired]
+ public bool Show { get; set; }
+
+ [Parameter]
+ public Action OnHide { get; set; } = () => { };
+ public Modal AssignmentModal { get; set; }
+
+ private string description { get; set; }
+
+ protected override void OnParametersSet()
+ {
+ if(Show)
+ {
+ AssignmentModal.Show();
+ }
+ description = assignment.description;
+ }
+
+ private void submitHandler()
+ {
+
+ }
+}
+
+
+ @assignment.name
+
+
+
+
+
diff --git a/Management.Web/Shared/Module/Assignment/NewAssignment.razor b/Management.Web/Shared/Module/Assignment/NewAssignment.razor
index 2b89d26..5443944 100644
--- a/Management.Web/Shared/Module/Assignment/NewAssignment.razor
+++ b/Management.Web/Shared/Module/Assignment/NewAssignment.razor
@@ -1,26 +1,28 @@
+@using Management.Web.Shared.Components
+
@inject CoursePlanner planner
@code {
- [Parameter, EditorRequired]
- public string ModuleName { get; set; } = "";
-
[Parameter]
- public EventCallback OnSubmit { get; set; }
+ [EditorRequired]
+ public LocalModule Module { get; set; } = default!;
[Required]
[StringLength(50, ErrorMessage = "Name too long (50 character limit).")]
private string Name { get; set; } = "";
- private async Task submitHandler()
+ private Modal? modal { get; set; }
+
+ private void submitHandler()
{
+ System.Console.WriteLine("new assignment");
var newAssignment = new LocalAssignment
{
id = Guid.NewGuid().ToString(),
name = Name,
- description = "testDescription",
- published = false,
+ description = "",
lock_at_due_date = true,
rubric = new RubricItem[] { },
lock_at = null,
@@ -28,21 +30,46 @@
points_possible = 10,
submission_types = new SubmissionType[] { SubmissionType.online_text_entry }
};
- @* planner.LocalCourse.Assignments = planner.Assignments.Append(newAssignment); *@
- await OnSubmit.InvokeAsync();
+
+ if(planner.LocalCourse != null)
+ {
+ planner.LocalCourse = planner.LocalCourse with
+ {
+ Modules=planner.LocalCourse.Modules.Select(m =>
+ m.Name != Module.Name
+ ? m
+ : Module with
+ {
+ Assignments=Module.Assignments.Append(newAssignment)
+ }
+ )
+ };
+ }
+ modal?.Hide();
}
}
+ modal?.Show()"
+>
+ New Assignment
+
-
-
-
-
-
- Name
-
- Save
-
-
-
-
-
\ No newline at end of file
+
+ New Assignment
+
+
+ Name
+
+
+
+
+
\ No newline at end of file
diff --git a/Management.Web/Shared/Module/ModuleDetail.razor b/Management.Web/Shared/Module/ModuleDetail.razor
index e632699..f347bfc 100644
--- a/Management.Web/Shared/Module/ModuleDetail.razor
+++ b/Management.Web/Shared/Module/ModuleDetail.razor
@@ -1,35 +1,71 @@
+
@using Management.Web.Shared.Module.Assignment
@using LocalModels
@inject CoursePlanner configurationManagement
+@inject CoursePlanner planner
@code {
[Parameter, EditorRequired]
public LocalModule Module { get; set; } = default!;
- private bool showAddAssignment { get; set; } = false;
+ protected override void OnInitialized()
+ {
+ planner.StateHasChanged += reload;
+ }
+ private void reload()
+ {
+ this.InvokeAsync(this.StateHasChanged);
+ }
+ public void Dispose()
+ {
+ planner.StateHasChanged -= reload;
+ }
+
+ private string accordionId {
+ get => Module.Name.Replace(" ", "") + "-AccordionItem";
+ }
}
+
-
@Module.Name
-
showAddAssignment = true"
->
- Add Assignment
-
+
+
+
-@if (showAddAssignment)
-{
-
-}
-
-
Assignments
-
-
-@* @foreach (var a in module.Assignments)
-{
-
-} *@
-
+
+
+
Assignments
+
+
+
+
+
+
+
+ @foreach (var a in Module.Assignments)
+ {
+
+ }
+
+
+
+
\ No newline at end of file
diff --git a/Management.Web/Shared/Module/Modules.razor b/Management.Web/Shared/Module/Modules.razor
index a1b4b04..0977836 100644
--- a/Management.Web/Shared/Module/Modules.razor
+++ b/Management.Web/Shared/Module/Modules.razor
@@ -8,16 +8,32 @@
@code {
private bool showNewModule { get; set; } = false;
+ protected override void OnInitialized()
+ {
+ planner.StateHasChanged += reload;
+ }
+ private void reload()
+ {
+ this.InvokeAsync(this.StateHasChanged);
+ }
+ public void Dispose()
+ {
+ planner.StateHasChanged -= reload;
+ }
}
-@if (!showNewModule)
-{
- showNewModule = true">New Module
-}
-else
-{
- showNewModule = false">Hide New Module
-}
+
+
+ @if (!showNewModule)
+ {
+ showNewModule = true">New Module
+ }
+ else
+ {
+ showNewModule = false">Hide New Module
+ }
+
+
@if (showNewModule)
{
@@ -26,9 +42,11 @@ else
@if (planner.LocalCourse != null)
{
+
+
@foreach (var module in planner.LocalCourse.Modules)
{
-
}
+
}
diff --git a/Management.Web/Shared/NavMenu.razor b/Management.Web/Shared/NavMenu.razor
index 8675057..b7a2b2a 100644
--- a/Management.Web/Shared/NavMenu.razor
+++ b/Management.Web/Shared/NavMenu.razor
@@ -1,29 +1,30 @@
@code {
- private bool collapseNavMenu = true;
-
- private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;
-
- private void ToggleNavMenu()
+ private bool collapseNavMenu = true; private string? NavMenuCssClass =>
+ collapseNavMenu ? "collapse" : null; private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
}
-}
+}
diff --git a/Management.Web/Shared/Semester/Day.razor b/Management.Web/Shared/Semester/Day.razor
index 9c320ef..9a9ea66 100644
--- a/Management.Web/Shared/Semester/Day.razor
+++ b/Management.Web/Shared/Semester/Day.razor
@@ -13,6 +13,30 @@
get => date?.DayOfWeek != null;
}
private bool dragging {get; set;} = false;
+ protected override void OnInitialized()
+ {
+ planner.StateHasChanged += reload;
+ }
+ private void reload()
+ {
+ this.InvokeAsync(this.StateHasChanged);
+ }
+ public void Dispose()
+ {
+ planner.StateHasChanged -= reload;
+ }
+
+ private IEnumerable TodaysAssignments {
+ get
+ {
+ if(planner.LocalCourse == null || date == null)
+ return Enumerable.Empty();
+ else
+ return planner.LocalCourse.Modules
+ .SelectMany(m => m.Assignments)
+ .Where(a => a.due_at.Date == date?.Date);
+ }
+ }
private string calculatedClass
{
get
@@ -30,7 +54,7 @@
&& date < planner.LocalCourse.EndDate
&& date > planner.LocalCourse.StartDate;
- var totalClasses = dayInSemester ? $"bg-light {baseClasses}" : baseClasses;
+ var totalClasses = dayInSemester ? $"bg-light-subtle text-light {baseClasses}" : baseClasses;
return totalClasses;
}
@@ -40,30 +64,27 @@
}
}
}
- void OnDragStart()
- {
- Console.WriteLine("on drag start");
- }
-
- void OnDrop()
- {
- Console.WriteLine("on drop");
- dragging = false;
- if(dragContainer.AssignmentBeingDragged == null){
- System.Console.WriteLine("no assignment in drop event");
- return;
- }
-
- Console.WriteLine(JsonSerializer.Serialize(dragContainer.AssignmentBeingDragged));
- dragContainer.AssignmentBeingDragged = null;
- }
-
void OnDragEnter() {
dragging = true;
}
void OnDragLeave() {
dragging = false;
}
+
+ void OnDrop()
+ {
+ @* System.Console.WriteLine("on drop"); *@
+ dragging = false;
+ if(dragContainer.DropCallback == null){
+ System.Console.WriteLine("no drop callback set");
+ return;
+ }
+ if(date != null)
+ {
+ DateTime d = date ?? throw new Exception("should not get here, error converting date from nullable");
+ dragContainer.DropCallback?.Invoke(d);
+ }
+ }
}
@(isWeekDay ? date?.Day : "")
+
+ @foreach (var assignment in TodaysAssignments)
+ {
+ @assignment.name
+ }
+
\ No newline at end of file
diff --git a/Management.Web/Utils/AssignmentDragContainer.cs b/Management.Web/Utils/AssignmentDragContainer.cs
index a165e40..f12c615 100644
--- a/Management.Web/Utils/AssignmentDragContainer.cs
+++ b/Management.Web/Utils/AssignmentDragContainer.cs
@@ -1,4 +1,4 @@
public class AssignmentDragContainer
{
- public LocalAssignment? AssignmentBeingDragged { get; set; }
-}
\ No newline at end of file
+ public Action? DropCallback { get; set; }
+}
diff --git a/Management/Models/Local/LocalModules.cs b/Management/Models/Local/LocalModules.cs
index 423429d..3d859b2 100644
--- a/Management/Models/Local/LocalModules.cs
+++ b/Management/Models/Local/LocalModules.cs
@@ -3,4 +3,6 @@ namespace LocalModels;
public record LocalModule
{
public string Name { get; init; } = string.Empty;
+ public IEnumerable Assignments { get; init; } =
+ Enumerable.Empty();
}
diff --git a/Management/Models/LocalAssignment.cs b/Management/Models/LocalAssignment.cs
index 2b55b90..dadc502 100644
--- a/Management/Models/LocalAssignment.cs
+++ b/Management/Models/LocalAssignment.cs
@@ -2,28 +2,28 @@ public record RubricItem(int Points, string Label);
public enum SubmissionType
{
- online_quiz,
- none,
- on_paper,
- discussion_topic,
- external_tool,
- online_upload,
- online_text_entry,
- online_url,
- media_recording,
- student_annotation,
+ online_quiz,
+ none,
+ on_paper,
+ discussion_topic,
+ external_tool,
+ online_upload,
+ online_text_entry,
+ online_url,
+ media_recording,
+ student_annotation,
}
public record LocalAssignment
{
- public string id { get; init; } = "";
- public string name { get; init; } = "";
- public string description { get; init; } = "";
- public bool published { get; init; }
- public bool lock_at_due_date { get; init; }
- public IEnumerable rubric { get; init; } = new RubricItem[] { };
- public DateTime? lock_at { get; init; }
- public DateTime due_at { get; init; }
- public int points_possible { get; init; }
- public IEnumerable submission_types { get; init; } = new SubmissionType[] { };
+ public string id { get; init; } = "";
+ public ulong? canvasId = null;
+ public string name { get; init; } = "";
+ public string description { get; init; } = "";
+ public bool lock_at_due_date { get; init; }
+ public IEnumerable rubric { get; init; } = new RubricItem[] { };
+ public DateTime? lock_at { get; init; }
+ public DateTime due_at { get; init; }
+ public int points_possible { get; init; }
+ public IEnumerable submission_types { get; init; } = new SubmissionType[] { };
}