Remove Team.Number
Add Team.Identifier
This commit is contained in:
@@ -132,7 +132,7 @@ namespace Core.Calculation
|
||||
where students.Any()
|
||||
select new Team
|
||||
{
|
||||
TeamId = _events[e].Name,
|
||||
Identifier = _events[e].Name,
|
||||
Event = _events[e],
|
||||
Students = students.ToList()
|
||||
};
|
||||
|
||||
@@ -67,7 +67,7 @@ public class UnassignedStudentScheduler
|
||||
private IEnumerable<Team> GetAvailableTeams_BiggestGroup(
|
||||
IEnumerable<Team> scheduledTeams, IEnumerable<Student> assignedStudents) =>
|
||||
_teams
|
||||
.Where(t => scheduledTeams.All(st => st.TeamId != t.TeamId))
|
||||
.Where(t => scheduledTeams.All(st => st.Identifier != t.Identifier))
|
||||
.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))
|
||||
@@ -78,7 +78,7 @@ public class UnassignedStudentScheduler
|
||||
private IEnumerable<Team> GetAvailableTeams_Individual(
|
||||
IEnumerable<Team> scheduledTeams, IEnumerable<Student> assignedStudents) =>
|
||||
_teams
|
||||
.Where(t => scheduledTeams.All(st => st.TeamId != t.TeamId))
|
||||
.Where(t => scheduledTeams.All(st => st.Identifier != t.Identifier))
|
||||
.Where(t => t.Event.EventFormat == EventFormat.Individual || t.Students.Count == 1)
|
||||
.Select(t => t.CloneWithOmittedStudents(assignedStudents))
|
||||
.Where(t => t.Students.Count > 0);
|
||||
@@ -87,7 +87,7 @@ public class UnassignedStudentScheduler
|
||||
private IEnumerable<Team> GetAvailableTeams_AnyNotMeetingAlready(
|
||||
IEnumerable<Team> scheduledTeams, IEnumerable<Student> assignedStudents) =>
|
||||
_teams
|
||||
.Where(t => scheduledTeams.All(st => st.TeamId != t.TeamId))
|
||||
.Where(t => scheduledTeams.All(st => st.Identifier != t.Identifier))
|
||||
.Select(t => t.CloneWithOmittedStudents(assignedStudents))
|
||||
.Where(t => t.Students.Count > 0);
|
||||
|
||||
@@ -102,7 +102,7 @@ public class UnassignedStudentScheduler
|
||||
private IEnumerable<Team> GetAvailableTeams_LevelOfEffort(
|
||||
IEnumerable<Team> scheduledTeams, IEnumerable<Student> assignedStudents) =>
|
||||
_teams
|
||||
.Where(t => scheduledTeams.All(st => st.TeamId != t.TeamId))
|
||||
.Where(t => scheduledTeams.All(st => st.Identifier != t.Identifier))
|
||||
.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))
|
||||
@@ -114,7 +114,7 @@ public class UnassignedStudentScheduler
|
||||
// sort by how many teammembers are already in that timeslot, descending
|
||||
foreach (var timeslot in _timeSlots.OrderBy(ts => ts.SelectMany(t => t.Students).Count(team.Students.Contains)))
|
||||
{
|
||||
if (timeslot.Any(t => t.TeamId == team.TeamId))
|
||||
if (timeslot.Any(t => t.Identifier == team.Identifier))
|
||||
continue;
|
||||
timeslot.Add(team);
|
||||
break;
|
||||
|
||||
@@ -8,6 +8,6 @@ public class PartialTeam : Team
|
||||
{
|
||||
var remainingStudents = Students.Where(s => !studentsToOmit.Contains(s)).ToList();
|
||||
var omittedStudents = OmittedStudents.Union(Students.Where(studentsToOmit.Contains)).Distinct().ToList();
|
||||
return new PartialTeam{TeamId = TeamId, Event = Event, Students = remainingStudents, OmittedStudents = omittedStudents };
|
||||
return new PartialTeam{Identifier = Identifier, Event = Event, Students = remainingStudents, OmittedStudents = omittedStudents };
|
||||
}
|
||||
}
|
||||
+8
-14
@@ -4,22 +4,16 @@ namespace Core.Entities;
|
||||
public class Team
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
[Display(Name = "Team Number")]
|
||||
public int? Number { get; set; }
|
||||
|
||||
public EventDefinition Event
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public EventDefinition Event { get; set; }
|
||||
|
||||
public List<Student> Students { get; set; } = [];
|
||||
|
||||
public Student? Captain { get; set; }
|
||||
|
||||
[Display(Name = "Team Id")]
|
||||
public string? TeamId { get; set; }
|
||||
[Display(Name = "Team Identifier")]
|
||||
[StringLength(32)]
|
||||
public string? Identifier { get; set; }
|
||||
|
||||
|
||||
// public Tuple<DateTime,DateTime?>? RegionalTimeSlotObj
|
||||
@@ -54,10 +48,10 @@ public class Team
|
||||
var studentsToOmitList = studentsToOmit.ToList();
|
||||
var omittedStudents = Students.Where(studentsToOmitList.Contains).ToList();
|
||||
if (!omittedStudents.Any())
|
||||
return new Team{Captain = Captain, Event = Event, Students = Students.ToList(), TeamId = TeamId, Number = Number};
|
||||
return new Team{Captain = Captain, Event = Event, Students = Students.ToList(), Identifier = Identifier};
|
||||
|
||||
var remainingStudents = Students.Where(s => !studentsToOmitList.Contains(s)).ToList();
|
||||
return new PartialTeam { Number = Number, Event = Event, Students = remainingStudents, OmittedStudents = omittedStudents};
|
||||
return new PartialTeam { Event = Event, Students = remainingStudents, OmittedStudents = omittedStudents};
|
||||
}
|
||||
|
||||
public Team Clone() => CloneWithOmittedStudents([]);
|
||||
@@ -65,6 +59,6 @@ public class Team
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{Event.Name} {(Number != null ? $"(#{Number})" : "")}";
|
||||
return $"{Event.Name} {(Identifier != null ? $"({Identifier})" : "")}";
|
||||
}
|
||||
}
|
||||
@@ -39,7 +39,7 @@ namespace Core.Parsers
|
||||
|
||||
foreach (var team in _teams)
|
||||
{
|
||||
csv.WriteField(team.TeamId);
|
||||
csv.WriteField(team.Identifier);
|
||||
csv.WriteField(team.Event.Name);
|
||||
foreach (var teamStudent in team.Students)
|
||||
{
|
||||
@@ -146,14 +146,14 @@ namespace Core.Parsers
|
||||
{
|
||||
if (@event.EventFormat is EventFormat.Team)
|
||||
{
|
||||
teams.Add(new Team { Event = @event, Students = teamStudents, Captain = captain, TeamId = teamNumber});
|
||||
teams.Add(new Team { Event = @event, Students = teamStudents, Captain = captain, Identifier = teamNumber});
|
||||
}
|
||||
else if (@event.EventFormat is EventFormat.Individual)
|
||||
{
|
||||
foreach (var student in teamStudents)
|
||||
{
|
||||
teams.Add(new Team{Event = @event,
|
||||
Students = [student], Captain = student, TeamId = teamNumber});
|
||||
Students = [student], Captain = student, Identifier = teamNumber});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user