added new file change checker

This commit is contained in:
2024-05-06 16:53:39 -06:00
parent 5c931af141
commit 3aaf64d3a0
5 changed files with 878 additions and 211 deletions

View File

@@ -2,6 +2,53 @@ using LocalModels;
public static class CourseDifferences
{
public static DeleteCourseChanges GetDeletedChanges(LocalCourse newCourse, LocalCourse oldCourse)
{
if (newCourse == oldCourse)
return new DeleteCourseChanges();
var moduleNamesNoLongerReferenced = oldCourse.Modules
.Where(oldModule =>
!newCourse.Modules.Any(newModule => newModule.Name == oldModule.Name)
)
.Select(oldModule => oldModule.Name)
.ToList();
var modulesWithDeletions = oldCourse.Modules
.Where(oldModule =>
!newCourse.Modules.Any(newModule => newModule.Equals(oldModule))
)
.Select(oldModule =>
{
var newModule = newCourse.Modules.FirstOrDefault(m => m.Name == oldModule.Name);
if (newModule == null)
return oldModule;
var unreferencedAssignments = oldModule.Assignments.Where(oldAssignment =>
!newModule.Assignments.Any(newAssignment => newAssignment.Name == oldAssignment.Name)
);
var unreferencedQuizzes = oldModule.Quizzes.Where(oldQuiz =>
!newModule.Quizzes.Any(newQuiz => newQuiz.Name == oldQuiz.Name)
);
var unreferencedPages = oldModule.Pages.Where(oldPage =>
!newModule.Pages.Any(newPage => newPage.Name == oldPage.Name)
);
return oldModule with
{
Assignments = unreferencedAssignments,
Quizzes = unreferencedQuizzes,
Pages = unreferencedPages,
};
})
.ToList();
return new DeleteCourseChanges
{
NamesOfModulesToDeleteCompletely = moduleNamesNoLongerReferenced,
DeleteContentsOfModule = modulesWithDeletions,
};
}
public static NewCourseChanges GetNewChanges(LocalCourse newCourse, LocalCourse oldCourse)
{
if (newCourse == oldCourse)
@@ -20,7 +67,18 @@ public static class CourseDifferences
var newAssignments = newModule.Assignments.Where(
newAssignment => !oldModule.Assignments.Any(oldAssignment => newAssignment == oldAssignment)
);
return newModule with { Assignments = newAssignments };
var newQuizzes = newModule.Quizzes.Where(
newQuiz => !oldModule.Quizzes.Any(oldQuiz => newQuiz == oldQuiz)
);
var newPages = newModule.Pages.Where(
newPage => !oldModule.Pages.Any(oldPage => newPage == oldPage)
);
return newModule with
{
Assignments = newAssignments,
Quizzes = newQuizzes,
Pages = newPages,
};
})
.ToArray();
@@ -37,4 +95,9 @@ public record NewCourseChanges
{
public IEnumerable<LocalModule> Modules { get; init; } = [];
public LocalCourseSettings? Settings { get; init; }
}
public record DeleteCourseChanges
{
public IEnumerable<string> NamesOfModulesToDeleteCompletely { get; init; } = [];
public IEnumerable<LocalModule> DeleteContentsOfModule { get; init; } = [];
}