mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
added new file change checker
This commit is contained in:
@@ -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; } = [];
|
||||
}
|
||||
Reference in New Issue
Block a user