Commit Graph

18 Commits

Author SHA1 Message Date
poprhythm 1c7e704ad3 Add comprehensive validation system with runtime configuration
Implements a flexible validation framework for student rankings, team assignments, and team composition with administrator-configurable rules and thresholds.

Validation System:
- Reflection-based rule discovery eliminates manual registration
- Base classes (RequiredEventTypeRuleBase, EventCountThresholdRuleBase) reduce code duplication by ~250 lines
- 12 validation rules covering event requirements, counts, and team constraints
- Configurable severity levels (Warning/Error) per rule type
- ValidationService with caching for optimal performance
- Rules apply contextually (StudentRanking, StudentAssignment, TeamComposition)

Configuration & Admin UI:
- ValidationSettings admin page for editing thresholds and severity levels
- ChapterSettings admin page for editing chapter information
- Settings stored in Data/appsettings.json for runtime configuration
- JSON config works in both development and production environments
- Auto-creates Data directory and config template on first run

User Experience:
- ValidationWarnings component displays inline warnings/errors
- Integrated in Event Ranking, Registration, and Team Assignment pages
- Color-coded severity indicators (warning yellow, error red)
- Includes "Too Many Regional Events" rule (max 3 recommended)

Technical Improvements:
- Template Method pattern for rule base classes
- Singleton rule instances with lazy initialization
- Configuration loaded via IConfiguration with fallback to defaults
- Safe JSON updates preserve other appsettings sections
2025-12-13 22:15:16 -05:00
poprhythm 8039e751d8 Refactor/cleanup the EventAssignemnt 2025-12-01 21:38:14 -05:00
poprhythm 3461f94854 Refactor TeamScheduler, easier to read and maintain 2025-12-01 06:58:56 -05:00
poprhythm 72da28992f Team scheduler now considers all available students 2025-11-23 11:05:29 -05:00
poprhythm b7fa7fcbe1 Add recomendations for meeting scheduler 2025-10-31 13:29:43 -04:00
poprhythm cf9949876d Add a TimeSlot object, refactor 2025-10-30 09:35:41 -04:00
poprhythm 5708d846d1 Fix for team comparison in UnassignedStudentScheduler 2025-10-22 09:42:44 -04:00
poprhythm c42cc43399 Scheduler refinements 2025-10-20 12:03:46 -04:00
poprhythm dd8921f6fe Fix broken tests 2025-10-19 13:34:34 -04:00
poprhythm 3964a61794 Team schedule improvements 2025-10-17 07:58:14 -04:00
poprhythm 6407dfca71 Remove Team.Number
Add Team.Identifier
2025-10-03 12:47:05 -04:00
poprhythm 05e5e69d0b Clean up Team page
Add an EventAttributes display
2025-10-03 12:37:11 -04:00
poprhythm 688ca60511 Event definiteion updates 2025-09-26 11:33:25 -04:00
poprhythm 227dbcf336 Improve formatting for Event Create 2025-09-25 09:58:56 -04:00
poprhythm dc83a18d76 Add Team functions 2025-09-22 12:53:46 -04:00
poprhythm 3daa3b81b3 Add Blazor WebApp and rework data handling to utilize Entity Framework 2025-09-11 11:49:48 -04:00
poprhythm d4c46ae0fe Fix a few unit tests 2025-08-15 11:05:38 -04:00
poprhythm cf32cfcbcd first commit 2025-08-01 14:10:44 -04:00