Files
canvasManagement/Management/Features/Configuration/CoursePlanner.cs

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 };
}
}