mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 15:48:32 -06:00
49 lines
1.1 KiB
C#
49 lines
1.1 KiB
C#
using CanvasModel.EnrollmentTerms;
|
|
using CanvasModel.Courses;
|
|
using CanvasModel;
|
|
using LocalModels;
|
|
|
|
public class CoursePlanner
|
|
{
|
|
private readonly YamlManager yamlManager;
|
|
|
|
public CoursePlanner(YamlManager yamlManager)
|
|
{
|
|
this.yamlManager = yamlManager;
|
|
}
|
|
|
|
private LocalCourse? _localCourse { get; set; }
|
|
public LocalCourse? LocalCourse
|
|
{
|
|
get => _localCourse;
|
|
set
|
|
{
|
|
if (value == null)
|
|
{
|
|
_localCourse = null;
|
|
StateHasChanged?.Invoke();
|
|
return;
|
|
}
|
|
|
|
var verifiedCourse = verifyCourse(value);
|
|
// ignore initial load of course
|
|
if (_localCourse != null)
|
|
{
|
|
yamlManager.SaveCourse(verifiedCourse);
|
|
}
|
|
_localCourse = verifiedCourse;
|
|
StateHasChanged?.Invoke();
|
|
}
|
|
}
|
|
public event Action? StateHasChanged;
|
|
|
|
private LocalCourse verifyCourse(LocalCourse incomingCourse)
|
|
{
|
|
var modulesWithUniqueAssignments = incomingCourse.Modules.Select(
|
|
module => module with { Assignments = module.Assignments.DistinctBy(a => a.id) }
|
|
);
|
|
|
|
return incomingCourse with { Modules = modulesWithUniqueAssignments };
|
|
}
|
|
}
|