Fix for team comparison in UnassignedStudentScheduler

This commit is contained in:
2025-10-22 09:42:44 -04:00
parent d777b4f67d
commit 5708d846d1
3 changed files with 17 additions and 8 deletions
@@ -69,7 +69,7 @@ public class UnassignedStudentScheduler
private IEnumerable<Team> GetAvailableTeams_BiggestGroup(
IEnumerable<Team> scheduledTeams, IEnumerable<Student> assignedStudents) =>
_teams
.Where(t => scheduledTeams.All(st => st.Identifier != t.Identifier))
.Where(t => scheduledTeams.All(st => st.Id != t.Id))
.Select(t => t.CloneWithOmittedStudents(assignedStudents))
.Where(t => t.Students.Count > 1) //|| t.Event.EventFormat is EventFormat.Individual
//.OrderBy(t => scheduledTeams.Count(st => st.Name == t.Name))
@@ -80,7 +80,7 @@ public class UnassignedStudentScheduler
private IEnumerable<Team> GetAvailableTeams_Individual(
IEnumerable<Team> scheduledTeams, IEnumerable<Student> assignedStudents) =>
_teams
.Where(t => scheduledTeams.All(st => st.Identifier != t.Identifier))
.Where(t => scheduledTeams.All(st => st.Id != t.Id))
.Where(t => t.Event.EventFormat == EventFormat.Individual || t.Students.Count == 1)
.Select(t => t.CloneWithOmittedStudents(assignedStudents))
.Where(t => t.Students.Count > 0);
@@ -89,7 +89,7 @@ public class UnassignedStudentScheduler
private IEnumerable<Team> GetAvailableTeams_AnyNotMeetingAlready(
IEnumerable<Team> scheduledTeams, IEnumerable<Student> assignedStudents) =>
_teams
.Where(t => scheduledTeams.All(st => st.Identifier != t.Identifier))
.Where(t => scheduledTeams.All(st => st.Id != t.Id))
.Select(t => t.CloneWithOmittedStudents(assignedStudents))
.Where(t => t.Students.Count > 0);
@@ -104,7 +104,7 @@ public class UnassignedStudentScheduler
private IEnumerable<Team> GetAvailableTeams_LevelOfEffort(
IEnumerable<Team> scheduledTeams, IEnumerable<Student> assignedStudents) =>
_teams
.Where(t => scheduledTeams.All(st => st.Identifier != t.Identifier))
.Where(t => scheduledTeams.All(st => st.Id != t.Id))
.Select(t => t.CloneWithOmittedStudents(assignedStudents))
.Where(t => t.Students.Count > 1) //|| t.Event.EventFormat is EventFormat.Individual
//.OrderBy(t => scheduledTeams.Count(st => st.Name == t.Name))
+2 -2
View File
@@ -49,10 +49,10 @@ public class Team
var studentsToOmitList = studentsToOmit.ToList();
var omittedStudents = Students.Where(studentsToOmitList.Contains).ToList();
if (omittedStudents.Count == 0)
return new Team{Captain = Captain, Event = Event, Students = Students.ToList(), Identifier = Identifier};
return new Team{Captain = Captain, Event = Event, Students = Students.ToList(), Identifier = Identifier, Id = Id};
var remainingStudents = Students.Where(s => !studentsToOmitList.Contains(s)).ToList();
return new PartialTeam { Event = Event, Students = remainingStudents, OmittedStudents = omittedStudents};
return new PartialTeam { Event = Event, Students = remainingStudents, OmittedStudents = omittedStudents, Identifier = Identifier, Id = Id};
}
public Team Clone() => CloneWithOmittedStudents([]);