From 45edcf5e5f7c29f8b4cb68947735a8598353c669 Mon Sep 17 00:00:00 2001 From: James Kolpack Date: Sat, 10 Jan 2026 18:36:52 -0500 Subject: [PATCH] Refactor event assignment structure and introduce new models for assignment parameters and requirements This commit removes the obsolete EventAssignment class from Core.Entities and introduces new models in Core.Models, including AssignmentParameters, AssignmentRequirement, PartialTeam, and StudentEventStatistics. The changes enhance the organization of assignment-related data and improve the overall structure of the codebase. Additionally, several files have been updated to include references to the new Core.Models namespace, ensuring consistency across the application. --- Core/Calculation/EventAssignment.cs | 1 + Core/Entities/EventAssignment.cs | 7 ------- Core/Entities/Team.cs | 1 + Core/{Entities => Models}/AssignmentParameters.cs | 7 +++++-- Core/{Entities => Models}/AssignmentRequirement.cs | 7 +++++-- Core/{Entities => Models}/PartialTeam.cs | 7 +++++-- Core/{Entities => Models}/StudentEventStatistics.cs | 7 +++++-- Core/Parsers/AssignmentRequirementParser.cs | 1 + .../Rules/BaseRules/EventCountThresholdRuleBase.cs | 1 + .../Rules/BaseRules/RequiredEventTypeAssignmentRuleBase.cs | 1 + .../NoOnSiteActivityAssignmentRule.cs | 1 + .../NoRegionalEventAssignmentRule.cs | 1 + .../Rules/StudentAssignmentRules/TooFewEventsRule.cs | 1 + .../Rules/StudentAssignmentRules/TooManyEventsRule.cs | 1 + .../TooManyRegionalEventsAssignmentRule.cs | 1 + Core/Validation/ValidationConfiguration.cs | 1 + Core/Validation/ValidationService.cs | 1 + Tests/Builders/AssignmentRequirementBuilder.cs | 1 + Tests/Calculation/EventAssignmentTests.cs | 1 + Tests/Parsers/TestEntityHandler.cs | 1 + Tests/Validation/Rules/StudentAssignmentRulesTests.cs | 1 + Tests/Validation/ValidationConfigurationTests.cs | 1 + Tests/Validation/ValidationServiceTests.cs | 1 + WebApp/Components/_Imports.razor | 1 + 24 files changed, 39 insertions(+), 15 deletions(-) delete mode 100644 Core/Entities/EventAssignment.cs rename Core/{Entities => Models}/AssignmentParameters.cs (96%) rename Core/{Entities => Models}/AssignmentRequirement.cs (85%) rename Core/{Entities => Models}/PartialTeam.cs (91%) rename Core/{Entities => Models}/StudentEventStatistics.cs (95%) diff --git a/Core/Calculation/EventAssignment.cs b/Core/Calculation/EventAssignment.cs index 4681b79..5f42fd8 100644 --- a/Core/Calculation/EventAssignment.cs +++ b/Core/Calculation/EventAssignment.cs @@ -1,5 +1,6 @@ using System.Diagnostics; using Core.Entities; +using Core.Models; using Google.OrTools.Sat; namespace Core.Calculation diff --git a/Core/Entities/EventAssignment.cs b/Core/Entities/EventAssignment.cs deleted file mode 100644 index 47cff9a..0000000 --- a/Core/Entities/EventAssignment.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Core.Entities; - -public class EventAssignment(EventDefinition eventDefinition, Student student) -{ - public EventDefinition EventDefinition { get; } = eventDefinition; - public Student Student { get; } = student; -} \ No newline at end of file diff --git a/Core/Entities/Team.cs b/Core/Entities/Team.cs index d7e4473..43efc9a 100644 --- a/Core/Entities/Team.cs +++ b/Core/Entities/Team.cs @@ -1,4 +1,5 @@ using System.ComponentModel.DataAnnotations; +using Core.Models; namespace Core.Entities; public class Team diff --git a/Core/Entities/AssignmentParameters.cs b/Core/Models/AssignmentParameters.cs similarity index 96% rename from Core/Entities/AssignmentParameters.cs rename to Core/Models/AssignmentParameters.cs index 404fd64..31a8c20 100644 --- a/Core/Entities/AssignmentParameters.cs +++ b/Core/Models/AssignmentParameters.cs @@ -1,4 +1,6 @@ -namespace Core.Entities +using Core.Entities; + +namespace Core.Models { public class AssignmentParameters( int effortLowerBound = 6, @@ -28,4 +30,5 @@ $"Effort Range: [{EffortLowerBound}-{EffortUpperBound}]"; } } -} \ No newline at end of file +} + diff --git a/Core/Entities/AssignmentRequirement.cs b/Core/Models/AssignmentRequirement.cs similarity index 85% rename from Core/Entities/AssignmentRequirement.cs rename to Core/Models/AssignmentRequirement.cs index 178df4c..7d2740d 100644 --- a/Core/Entities/AssignmentRequirement.cs +++ b/Core/Models/AssignmentRequirement.cs @@ -1,8 +1,11 @@ -namespace Core.Entities; +using Core.Entities; + +namespace Core.Models; public class AssignmentRequirement(EventDefinition eventDefinition, Student student, Requirement requirement) { public EventDefinition EventDefinition { get; } = eventDefinition; public Student Student { get; } = student; public Requirement Requirement { get; } = requirement; -} \ No newline at end of file +} + diff --git a/Core/Entities/PartialTeam.cs b/Core/Models/PartialTeam.cs similarity index 91% rename from Core/Entities/PartialTeam.cs rename to Core/Models/PartialTeam.cs index 2678eaa..75c30b1 100644 --- a/Core/Entities/PartialTeam.cs +++ b/Core/Models/PartialTeam.cs @@ -1,4 +1,6 @@ -namespace Core.Entities; +using Core.Entities; + +namespace Core.Models; public class PartialTeam : Team { @@ -10,4 +12,5 @@ public class PartialTeam : Team var omittedStudents = OmittedStudents.Union(Students.Where(studentsToOmit.Contains)).Distinct().ToList(); return new PartialTeam{Identifier = Identifier, Event = Event, Students = remainingStudents, OmittedStudents = omittedStudents }; } -} \ No newline at end of file +} + diff --git a/Core/Entities/StudentEventStatistics.cs b/Core/Models/StudentEventStatistics.cs similarity index 95% rename from Core/Entities/StudentEventStatistics.cs rename to Core/Models/StudentEventStatistics.cs index ce1c573..97fd6cc 100644 --- a/Core/Entities/StudentEventStatistics.cs +++ b/Core/Models/StudentEventStatistics.cs @@ -1,4 +1,6 @@ -namespace Core.Entities; +using Core.Entities; + +namespace Core.Models; public class StudentEventStatistics { @@ -29,4 +31,5 @@ public class StudentEventStatistics return statistics.Values.ToList(); } -} \ No newline at end of file +} + diff --git a/Core/Parsers/AssignmentRequirementParser.cs b/Core/Parsers/AssignmentRequirementParser.cs index 31b9a34..ab9cb98 100644 --- a/Core/Parsers/AssignmentRequirementParser.cs +++ b/Core/Parsers/AssignmentRequirementParser.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; namespace Core.Parsers; diff --git a/Core/Validation/Rules/BaseRules/EventCountThresholdRuleBase.cs b/Core/Validation/Rules/BaseRules/EventCountThresholdRuleBase.cs index 42eab42..7de95fa 100644 --- a/Core/Validation/Rules/BaseRules/EventCountThresholdRuleBase.cs +++ b/Core/Validation/Rules/BaseRules/EventCountThresholdRuleBase.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; namespace Core.Validation.Rules.BaseRules; diff --git a/Core/Validation/Rules/BaseRules/RequiredEventTypeAssignmentRuleBase.cs b/Core/Validation/Rules/BaseRules/RequiredEventTypeAssignmentRuleBase.cs index a4d3f27..7692083 100644 --- a/Core/Validation/Rules/BaseRules/RequiredEventTypeAssignmentRuleBase.cs +++ b/Core/Validation/Rules/BaseRules/RequiredEventTypeAssignmentRuleBase.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; namespace Core.Validation.Rules.BaseRules; diff --git a/Core/Validation/Rules/StudentAssignmentRules/NoOnSiteActivityAssignmentRule.cs b/Core/Validation/Rules/StudentAssignmentRules/NoOnSiteActivityAssignmentRule.cs index 556ed6c..27e8ac2 100644 --- a/Core/Validation/Rules/StudentAssignmentRules/NoOnSiteActivityAssignmentRule.cs +++ b/Core/Validation/Rules/StudentAssignmentRules/NoOnSiteActivityAssignmentRule.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; using Core.Validation.Rules.BaseRules; namespace Core.Validation.Rules.StudentAssignmentRules; diff --git a/Core/Validation/Rules/StudentAssignmentRules/NoRegionalEventAssignmentRule.cs b/Core/Validation/Rules/StudentAssignmentRules/NoRegionalEventAssignmentRule.cs index 0e44408..7303499 100644 --- a/Core/Validation/Rules/StudentAssignmentRules/NoRegionalEventAssignmentRule.cs +++ b/Core/Validation/Rules/StudentAssignmentRules/NoRegionalEventAssignmentRule.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; using Core.Validation.Rules.BaseRules; namespace Core.Validation.Rules.StudentAssignmentRules; diff --git a/Core/Validation/Rules/StudentAssignmentRules/TooFewEventsRule.cs b/Core/Validation/Rules/StudentAssignmentRules/TooFewEventsRule.cs index a86e1bb..8133784 100644 --- a/Core/Validation/Rules/StudentAssignmentRules/TooFewEventsRule.cs +++ b/Core/Validation/Rules/StudentAssignmentRules/TooFewEventsRule.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; using Core.Validation.Rules.BaseRules; namespace Core.Validation.Rules.StudentAssignmentRules; diff --git a/Core/Validation/Rules/StudentAssignmentRules/TooManyEventsRule.cs b/Core/Validation/Rules/StudentAssignmentRules/TooManyEventsRule.cs index 6b32b3b..21a0c4e 100644 --- a/Core/Validation/Rules/StudentAssignmentRules/TooManyEventsRule.cs +++ b/Core/Validation/Rules/StudentAssignmentRules/TooManyEventsRule.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; using Core.Validation.Rules.BaseRules; namespace Core.Validation.Rules.StudentAssignmentRules; diff --git a/Core/Validation/Rules/StudentAssignmentRules/TooManyRegionalEventsAssignmentRule.cs b/Core/Validation/Rules/StudentAssignmentRules/TooManyRegionalEventsAssignmentRule.cs index 2ac1818..025f92e 100644 --- a/Core/Validation/Rules/StudentAssignmentRules/TooManyRegionalEventsAssignmentRule.cs +++ b/Core/Validation/Rules/StudentAssignmentRules/TooManyRegionalEventsAssignmentRule.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; using Core.Validation.Rules.BaseRules; namespace Core.Validation.Rules.StudentAssignmentRules; diff --git a/Core/Validation/ValidationConfiguration.cs b/Core/Validation/ValidationConfiguration.cs index 7fc0b62..3d61038 100644 --- a/Core/Validation/ValidationConfiguration.cs +++ b/Core/Validation/ValidationConfiguration.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; using System.Text.Json; namespace Core.Validation; diff --git a/Core/Validation/ValidationService.cs b/Core/Validation/ValidationService.cs index 7f28c08..8106021 100644 --- a/Core/Validation/ValidationService.cs +++ b/Core/Validation/ValidationService.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; using System.Reflection; namespace Core.Validation; diff --git a/Tests/Builders/AssignmentRequirementBuilder.cs b/Tests/Builders/AssignmentRequirementBuilder.cs index 7fcc873..1f103d4 100644 --- a/Tests/Builders/AssignmentRequirementBuilder.cs +++ b/Tests/Builders/AssignmentRequirementBuilder.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; namespace Tests.Builders; diff --git a/Tests/Calculation/EventAssignmentTests.cs b/Tests/Calculation/EventAssignmentTests.cs index f1bdf4e..19798cd 100644 --- a/Tests/Calculation/EventAssignmentTests.cs +++ b/Tests/Calculation/EventAssignmentTests.cs @@ -1,5 +1,6 @@ using Core.Calculation; using Core.Entities; +using Core.Models; using Tests.Builders; using Tests.Fixtures; using EventAssignment = Core.Calculation.EventAssignment; diff --git a/Tests/Parsers/TestEntityHandler.cs b/Tests/Parsers/TestEntityHandler.cs index fc6d5c8..d47f430 100644 --- a/Tests/Parsers/TestEntityHandler.cs +++ b/Tests/Parsers/TestEntityHandler.cs @@ -1,5 +1,6 @@ using System.Collections; using Core.Entities; +using Core.Models; using Core.Parsers; using Core.Utility; diff --git a/Tests/Validation/Rules/StudentAssignmentRulesTests.cs b/Tests/Validation/Rules/StudentAssignmentRulesTests.cs index b7fdf58..671b7ed 100644 --- a/Tests/Validation/Rules/StudentAssignmentRulesTests.cs +++ b/Tests/Validation/Rules/StudentAssignmentRulesTests.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; using Core.Validation; using Core.Validation.Rules.StudentAssignmentRules; using Tests.Builders; diff --git a/Tests/Validation/ValidationConfigurationTests.cs b/Tests/Validation/ValidationConfigurationTests.cs index f5f442d..0cc541e 100644 --- a/Tests/Validation/ValidationConfigurationTests.cs +++ b/Tests/Validation/ValidationConfigurationTests.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; using Core.Validation; using System.Text.Json; diff --git a/Tests/Validation/ValidationServiceTests.cs b/Tests/Validation/ValidationServiceTests.cs index 381853d..0a1d933 100644 --- a/Tests/Validation/ValidationServiceTests.cs +++ b/Tests/Validation/ValidationServiceTests.cs @@ -1,4 +1,5 @@ using Core.Entities; +using Core.Models; using Core.Validation; using Tests.Builders; diff --git a/WebApp/Components/_Imports.razor b/WebApp/Components/_Imports.razor index 39e4dc2..76a1629 100644 --- a/WebApp/Components/_Imports.razor +++ b/WebApp/Components/_Imports.razor @@ -25,5 +25,6 @@ @using WebApp.Components.Features.Calendar @using MudBlazor @using Core.Entities +@using Core.Models @using Data @using VisNetwork.Blazor