mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
40 lines
1.1 KiB
C#
40 lines
1.1 KiB
C#
using LocalModels;
|
|
|
|
public static class CourseDifferences
|
|
{
|
|
public static NewCourseChanges GetNewChanges(LocalCourse newCourse, LocalCourse oldCourse)
|
|
{
|
|
if (newCourse == oldCourse)
|
|
return new NewCourseChanges();
|
|
|
|
var differentModules = newCourse.Modules
|
|
.Where(newModule =>
|
|
!oldCourse.Modules.Any(oldModule => oldModule.Equals(newModule))
|
|
)
|
|
.Select(newModule =>
|
|
{
|
|
var oldModule = oldCourse.Modules.FirstOrDefault(m => m.Name == newModule.Name);
|
|
if (oldModule == null)
|
|
return newModule;
|
|
|
|
var newAssignments = newModule.Assignments.Where(
|
|
newAssignment => !oldModule.Assignments.Any(oldAssignment => newAssignment == oldAssignment)
|
|
);
|
|
return newModule with { Assignments = newAssignments };
|
|
})
|
|
.ToArray();
|
|
|
|
return new NewCourseChanges
|
|
{
|
|
Settings = newCourse.Settings,
|
|
Modules = differentModules,
|
|
};
|
|
}
|
|
|
|
}
|
|
|
|
public record NewCourseChanges
|
|
{
|
|
public IEnumerable<LocalModule> Modules { get; init; } = [];
|
|
public LocalCourseSettings? Settings { get; init; }
|
|
} |