From f395dba043817854b5c936cc87358ec7620a6e77 Mon Sep 17 00:00:00 2001 From: James Kolpack Date: Fri, 26 Dec 2025 13:58:41 -0500 Subject: [PATCH] Address compiler warnings --- Core/Calculation/EventAssignmentThresholds.cs | 2 +- Core/Calculation/TeamScheduleTimeSlot.cs | 8 ++--- Core/Entities/EventDefinition.cs | 4 +-- Core/Entities/EventOccurrence.cs | 8 ++--- Core/Entities/PartialTeam.cs | 2 +- Core/Entities/Student.cs | 6 ++-- Core/Entities/StudentEventStatistics.cs | 2 +- Core/Entities/Team.cs | 2 +- Core/Parsers/AssignmentRequirementParser.cs | 12 +++++--- Core/Parsers/EventDefinitionParser.cs | 8 ++--- Core/Parsers/EventOccurrenceParser.cs | 2 +- .../Events/Components/EventAttributes.razor | 4 +-- .../Components/Features/Events/Create.razor | 11 ++++--- WebApp/Components/Features/Events/Edit.razor | 11 ++++--- WebApp/Components/Features/Events/Index.razor | 16 +++++----- .../Features/MeetingSchedule/Index.razor | 10 +++---- .../Components/Features/Students/Create.razor | 11 ++++--- .../Features/Students/EventRanking.razor | 6 ++-- .../Components/Features/Students/Index.razor | 16 +++++----- .../Features/Teams/Assignment.razor | 30 +++++++++---------- .../Teams/Components/TeamSelector.razor | 2 +- .../Teams/Components/TeamStudents.razor | 2 +- WebApp/Components/Features/Teams/Index.razor | 16 +++++----- .../Components/Features/Teams/Printout.razor | 2 +- .../Components/IconButtonWithTooltip.razor | 18 +++++++++++ 25 files changed, 112 insertions(+), 99 deletions(-) create mode 100644 WebApp/Components/Shared/Components/IconButtonWithTooltip.razor diff --git a/Core/Calculation/EventAssignmentThresholds.cs b/Core/Calculation/EventAssignmentThresholds.cs index c836d3b..b61925a 100644 --- a/Core/Calculation/EventAssignmentThresholds.cs +++ b/Core/Calculation/EventAssignmentThresholds.cs @@ -4,7 +4,7 @@ namespace Core.Calculation; public class EventAssignmentThresholds { - public EventDefinition Event { get; set; } + public EventDefinition Event { get; set; } = null!; public int TeamCount { get; set; } public int LowerBound { get; set; } public int UpperBound { get; set; } diff --git a/Core/Calculation/TeamScheduleTimeSlot.cs b/Core/Calculation/TeamScheduleTimeSlot.cs index 646100f..584c00c 100644 --- a/Core/Calculation/TeamScheduleTimeSlot.cs +++ b/Core/Calculation/TeamScheduleTimeSlot.cs @@ -10,22 +10,22 @@ public class TeamScheduleTimeSlot /// /// Gets or sets the name of this time slot. /// - public string Name { get; set; } + public string Name { get; set; } = null!; /// /// Gets or sets the teams scheduled in this time slot. /// - public Team[] Teams; + public Team[] Teams = null!; /// /// Gets or sets the students who are not scheduled in any team during this time slot. /// - public Student[] UnscheduledStudents; + public Student[] UnscheduledStudents = null!; /// /// Gets or sets the students who have overlapping team meetings in this time slot. /// - public IEnumerable<(Student student, IEnumerable teams)> StudentOverlaps; + public IEnumerable<(Student student, IEnumerable teams)> StudentOverlaps = null!; /// /// Checks if a student has overlapping team meetings in this time slot. diff --git a/Core/Entities/EventDefinition.cs b/Core/Entities/EventDefinition.cs index 1a91735..befea1e 100644 --- a/Core/Entities/EventDefinition.cs +++ b/Core/Entities/EventDefinition.cs @@ -9,7 +9,7 @@ public class EventDefinition [Required] [StringLength(100, MinimumLength = 2)] [Display(Name = "Event Name")] - public string Name { get; set; } + public string Name { get; set; } = null!; [Required] [StringLength(40, MinimumLength = 2)] @@ -72,7 +72,7 @@ public class EventDefinition [Required] [StringLength(256)] - public string Eligibility { get; set; } + public string Eligibility { get; set; } = null!; [StringLength(4096)] public string? Theme { get; set; } [StringLength(1024)] diff --git a/Core/Entities/EventOccurrence.cs b/Core/Entities/EventOccurrence.cs index 6e98deb..c171b18 100644 --- a/Core/Entities/EventOccurrence.cs +++ b/Core/Entities/EventOccurrence.cs @@ -3,12 +3,12 @@ namespace Core.Entities { public class EventOccurrence { - public string Name { get; set; } - public string Time { get; set; } - public string Date { get; set; } + public string Name { get; set; } = null!; + public string Time { get; set; } = null!; + public string Date { get; set; } = null!; public DateTime StartTime { get; set; } public DateTime? EndTime { get; set; } - public string Location { get; set; } + public string Location { get; set; } = null!; public bool SignupSubmitPickup => Name.Contains("Sign-up") || diff --git a/Core/Entities/PartialTeam.cs b/Core/Entities/PartialTeam.cs index 7715b82..2678eaa 100644 --- a/Core/Entities/PartialTeam.cs +++ b/Core/Entities/PartialTeam.cs @@ -2,7 +2,7 @@ public class PartialTeam : Team { - public IList OmittedStudents { get; set; } + public IList OmittedStudents { get; set; } = null!; public override Team CloneWithOmittedStudents(IEnumerable studentsToOmit) { diff --git a/Core/Entities/Student.cs b/Core/Entities/Student.cs index f17a39c..9a014e1 100644 --- a/Core/Entities/Student.cs +++ b/Core/Entities/Student.cs @@ -10,12 +10,12 @@ public class Student : IEquatable [Required] [StringLength(50,MinimumLength = 2)] [Display(Name = "First Name")] - public string FirstName { get; set; } + public string FirstName { get; set; } = null!; [Required] [StringLength(50, MinimumLength = 2)] [Display(Name = "Last Name")] - public string LastName { get; set; } + public string LastName { get; set; } = null!; [Range(5,12)] [Display(Name = "Grade")] @@ -44,7 +44,7 @@ public class Student : IEquatable [Display(Name = "Officer Role")] public OfficerRole? OfficerRole { get; set; } - public List Teams { get; set; } = null; + public List Teams { get; set; } = null!; public List RankedEvents { get; } = []; public List EventRankings { get; } = []; diff --git a/Core/Entities/StudentEventStatistics.cs b/Core/Entities/StudentEventStatistics.cs index 225b549..ce1c573 100644 --- a/Core/Entities/StudentEventStatistics.cs +++ b/Core/Entities/StudentEventStatistics.cs @@ -2,7 +2,7 @@ public class StudentEventStatistics { - public Student Student { get; set; } + public Student Student { get; set; } = null!; public List Events { get; set; } = []; public int? TotalLevelOfEffort => Events.Sum(e => e.LevelOfEffort); diff --git a/Core/Entities/Team.cs b/Core/Entities/Team.cs index f2d26e6..d7e4473 100644 --- a/Core/Entities/Team.cs +++ b/Core/Entities/Team.cs @@ -6,7 +6,7 @@ public class Team public int Id { get; set; } [Required] - public EventDefinition Event { get; set; } + public EventDefinition Event { get; set; } = null!; public List Students { get; set; } = []; diff --git a/Core/Parsers/AssignmentRequirementParser.cs b/Core/Parsers/AssignmentRequirementParser.cs index 8a2fc12..2587cb1 100644 --- a/Core/Parsers/AssignmentRequirementParser.cs +++ b/Core/Parsers/AssignmentRequirementParser.cs @@ -15,7 +15,7 @@ public class AssignmentRequirementParser : CsvParserBase CsvReader.Read(); CsvReader.ReadHeader(); var studentColumns = - CsvReader.HeaderRecord.Select(h => h.Trim()).Where(h => !string.IsNullOrEmpty(h)).ToArray(); + CsvReader.HeaderRecord!.Select(h => h.Trim()).Where(h => !string.IsNullOrEmpty(h)).ToArray(); var studentArray = studentColumns @@ -30,21 +30,25 @@ public class AssignmentRequirementParser : CsvParserBase throw new Exception($"Could not find eventDefinition named {eventShortName}"); for (int i = 0; i <= studentArray.Length; i++) { + var student = studentArray[i]; + if (student == null) + continue; + var field = CsvReader.GetField(i + 1); switch (field) { case "x": case "X": - assumptions.Add(new AssignmentRequirement(evt, studentArray[i], Requirement.Exclude)); + assumptions.Add(new AssignmentRequirement(evt, student, Requirement.Exclude)); break; case "i": case "I": - assumptions.Add(new AssignmentRequirement(evt, studentArray[i], Requirement.Include)); + assumptions.Add(new AssignmentRequirement(evt, student, Requirement.Include)); break; default: break; } - + } } diff --git a/Core/Parsers/EventDefinitionParser.cs b/Core/Parsers/EventDefinitionParser.cs index 5c22992..bb2e912 100644 --- a/Core/Parsers/EventDefinitionParser.cs +++ b/Core/Parsers/EventDefinitionParser.cs @@ -53,8 +53,8 @@ public class EventDefinitionParser : CsvParserBase var competitiveEvent = new EventDefinition { - Name = name.Trim(), - ShortName = shortName.Trim(), + Name = name.Trim(), + ShortName = shortName?.Trim() ?? string.Empty, EventFormat = format, ChapterEligibilityCountState = stateTeams, MinTeamSize = min, @@ -64,10 +64,10 @@ public class EventDefinitionParser : CsvParserBase //RegionalPresubmit = regionalPresubmit.Trim() == "TRUE", Notes = regionalNotes, Documentation= documentation, - Presubmission = statePresubmission.Trim() == "TRUE", + Presubmission = statePresubmission?.Trim() == "TRUE", //StatePretesting = statePretesting.Trim() == "TRUE", //StatePreliminaryRound = statePreliminary.Trim() == "TRUE", - Eligibility = eligibility, + Eligibility = eligibility ?? string.Empty, Theme = theme, Description = description, LevelOfEffort = levelOfEffort diff --git a/Core/Parsers/EventOccurrenceParser.cs b/Core/Parsers/EventOccurrenceParser.cs index c7d395b..9d2ea60 100644 --- a/Core/Parsers/EventOccurrenceParser.cs +++ b/Core/Parsers/EventOccurrenceParser.cs @@ -31,7 +31,7 @@ public class EventOccurrenceParser public IDictionary> Parse() { var occurrences = new Dictionary>(); - EventDefinition currentEventDefinition = null; + EventDefinition? currentEventDefinition = null; var lines = File.ReadLines(_txtFile.FullName); foreach (var line in lines) diff --git a/WebApp/Components/Features/Events/Components/EventAttributes.razor b/WebApp/Components/Features/Events/Components/EventAttributes.razor index fa69a9c..bab2d55 100644 --- a/WebApp/Components/Features/Events/Components/EventAttributes.razor +++ b/WebApp/Components/Features/Events/Components/EventAttributes.razor @@ -27,9 +27,9 @@ @code { [Parameter] - public EventDefinition EventDefinition { get; set; } + public required EventDefinition EventDefinition { get; set; } - private string _attributes; + private string _attributes = string.Empty; protected override void OnParametersSet() { diff --git a/WebApp/Components/Features/Events/Create.razor b/WebApp/Components/Features/Events/Create.razor index 183e9f6..70e6042 100644 --- a/WebApp/Components/Features/Events/Create.razor +++ b/WebApp/Components/Features/Events/Create.razor @@ -10,7 +10,7 @@ ShowBackButton="true" BackButtonUrl="/events" /> - + @@ -45,13 +45,12 @@ + + Create + Cancel + - - Create - Cancel - - @code { [SupplyParameterFromForm] private EventDefinition EventDefinition { get; set; } = new(); diff --git a/WebApp/Components/Features/Events/Edit.razor b/WebApp/Components/Features/Events/Edit.razor index 646a04e..e5b1d20 100644 --- a/WebApp/Components/Features/Events/Edit.razor +++ b/WebApp/Components/Features/Events/Edit.razor @@ -17,7 +17,7 @@ ShowBackButton="true" BackButtonUrl="/events" /> - + @@ -52,13 +52,12 @@ + + Save + Cancel + - - Save - Cancel - - @code { [SupplyParameterFromQuery] private int Id { get; set; } diff --git a/WebApp/Components/Features/Events/Index.razor b/WebApp/Components/Features/Events/Index.razor index 0ce099e..d54242d 100644 --- a/WebApp/Components/Features/Events/Index.razor +++ b/WebApp/Components/Features/Events/Index.razor @@ -25,15 +25,13 @@ @context.Item.Name - - + + diff --git a/WebApp/Components/Features/MeetingSchedule/Index.razor b/WebApp/Components/Features/MeetingSchedule/Index.razor index 9b8d733..afaf322 100644 --- a/WebApp/Components/Features/MeetingSchedule/Index.razor +++ b/WebApp/Components/Features/MeetingSchedule/Index.razor @@ -102,11 +102,11 @@ @code { - private Team[]? _teams; - private Student[]? _students; - MudTable _solutionData; - private TeamSchedulerSolution _solution; - private TeamSchedulerOptions _parameters; + private Team[] _teams = null!; + private Student[] _students = null!; + MudTable _solutionData = null!; + private TeamSchedulerSolution _solution = null!; + private TeamSchedulerOptions _parameters = null!; bool _isSolving; private IEnumerable _scheduledTeams = []; private IEnumerable _absentStudents = []; diff --git a/WebApp/Components/Features/Students/Create.razor b/WebApp/Components/Features/Students/Create.razor index 84b9c23..dc29273 100644 --- a/WebApp/Components/Features/Students/Create.razor +++ b/WebApp/Components/Features/Students/Create.razor @@ -10,7 +10,7 @@ ShowBackButton="true" BackButtonUrl="/students" /> - + @@ -26,13 +26,12 @@ + + Create + Cancel + - - Create - Cancel - - @code { [SupplyParameterFromForm] private Student Student { get; set; } = new() { TsaYear = 1 }; diff --git a/WebApp/Components/Features/Students/EventRanking.razor b/WebApp/Components/Features/Students/EventRanking.razor index 6da004e..149e77c 100644 --- a/WebApp/Components/Features/Students/EventRanking.razor +++ b/WebApp/Components/Features/Students/EventRanking.razor @@ -97,11 +97,11 @@ else private Student[]? _students; private class EventStudentRankings { - public EventDefinition Event {get; set; } - public Tuple [] StudentRanking { get; set; } + public required EventDefinition Event {get; set; } + public required Tuple[] StudentRanking { get; set; } } - private EventStudentRankings[] _eventStudentRankings; + private EventStudentRankings[] _eventStudentRankings = null!; private int _maxEventStudentRankings; protected override async Task OnInitializedAsync() diff --git a/WebApp/Components/Features/Students/Index.razor b/WebApp/Components/Features/Students/Index.razor index ec3881b..3a9d408 100644 --- a/WebApp/Components/Features/Students/Index.razor +++ b/WebApp/Components/Features/Students/Index.razor @@ -32,15 +32,13 @@ } - - + + diff --git a/WebApp/Components/Features/Teams/Assignment.razor b/WebApp/Components/Features/Teams/Assignment.razor index 4486218..f86f8a8 100644 --- a/WebApp/Components/Features/Teams/Assignment.razor +++ b/WebApp/Components/Features/Teams/Assignment.razor @@ -309,19 +309,19 @@ private readonly AssignmentParameters _parameters = new() { RequireOnSite = false, RequireRegional = false }; private ValidationService _validationService = new ValidationService(ValidationConfiguration.Default); - private List? _events; - private List? _students; + private List _events = null!; + private List _students = null!; private List _eventAssignmentThresholds = []; - MudTable _teamData; + MudTable _teamData = null!; private Team[] _teams = []; - MudTable _statisticData; + MudTable _statisticData = null!; private List _statistics = []; - MudTable _assignmentRequirementData; + MudTable _assignmentRequirementData = null!; private List _assignmentRequirements = []; - MudTable _eventTwoTeamData; + MudTable _eventTwoTeamData = null!; private List _eventTwoTeams = []; - MudTable _eventOmittedData; + MudTable _eventOmittedData = null!; private List _eventOmitted = []; private string _solutionStatus = string.Empty; @@ -387,9 +387,9 @@ return new TableData { Items = _teams }; } - private async Task> ReloadStatistics(TableState arg1, CancellationToken arg2) + private Task> ReloadStatistics(TableState arg1, CancellationToken arg2) { - return new TableData {Items = _statistics}; + return Task.FromResult(new TableData {Items = _statistics}); } private void UpdateValidationConfig() @@ -403,20 +403,20 @@ return _validationService.ValidateStudentStatistics(stats, ValidationContext.StudentAssignment); } - private async Task> ReloadAssignmentRequirements(TableState arg1, CancellationToken arg2) + private Task> ReloadAssignmentRequirements(TableState arg1, CancellationToken arg2) { - return new TableData { Items = _assignmentRequirements }; + return Task.FromResult(new TableData { Items = _assignmentRequirements }); } - private async Task> ReloadEventTwoTeam(TableState arg1, CancellationToken arg2) + private Task> ReloadEventTwoTeam(TableState arg1, CancellationToken arg2) { - return new TableData { Items = _eventTwoTeams }; + return Task.FromResult(new TableData { Items = _eventTwoTeams }); } - private async Task> ReloadOmittedEvents(TableState arg1, CancellationToken arg2) + private Task> ReloadOmittedEvents(TableState arg1, CancellationToken arg2) { - return new TableData { Items = _eventOmitted }; + return Task.FromResult(new TableData { Items = _eventOmitted }); } private void RequireEvent(EventDefinition evt, Student student, Requirement requirement) diff --git a/WebApp/Components/Features/Teams/Components/TeamSelector.razor b/WebApp/Components/Features/Teams/Components/TeamSelector.razor index 022efe0..b2dc95b 100644 --- a/WebApp/Components/Features/Teams/Components/TeamSelector.razor +++ b/WebApp/Components/Features/Teams/Components/TeamSelector.razor @@ -12,7 +12,7 @@ @code { - [Parameter] public Team[]? Teams { get; set; } + [Parameter] public Team[] Teams { get; set; } = null!; [Parameter] public required IEnumerable SelectedTeams { get; set; } [Parameter] public string Label { get; set; } = "Teams"; } diff --git a/WebApp/Components/Features/Teams/Components/TeamStudents.razor b/WebApp/Components/Features/Teams/Components/TeamStudents.razor index aed5dcf..5665764 100644 --- a/WebApp/Components/Features/Teams/Components/TeamStudents.razor +++ b/WebApp/Components/Features/Teams/Components/TeamStudents.razor @@ -23,5 +23,5 @@ @code { [Parameter] - public Team Team { get; set; } + public required Team Team { get; set; } } diff --git a/WebApp/Components/Features/Teams/Index.razor b/WebApp/Components/Features/Teams/Index.razor index bf9c2e1..940d1b0 100644 --- a/WebApp/Components/Features/Teams/Index.razor +++ b/WebApp/Components/Features/Teams/Index.razor @@ -25,15 +25,13 @@ @context.Item.ToString() - - + + diff --git a/WebApp/Components/Features/Teams/Printout.razor b/WebApp/Components/Features/Teams/Printout.razor index 5533fad..cb19aad 100644 --- a/WebApp/Components/Features/Teams/Printout.razor +++ b/WebApp/Components/Features/Teams/Printout.razor @@ -205,7 +205,7 @@ else private Team[]? _teams; private int _maxTeamSize; private Student[]? _students; - private bool _rankColorEnabled; + private bool _rankColorEnabled = false; private string EventRankClass(int rank) { diff --git a/WebApp/Components/Shared/Components/IconButtonWithTooltip.razor b/WebApp/Components/Shared/Components/IconButtonWithTooltip.razor new file mode 100644 index 0000000..e80970c --- /dev/null +++ b/WebApp/Components/Shared/Components/IconButtonWithTooltip.razor @@ -0,0 +1,18 @@ +@namespace WebApp.Components.Shared.Components + + + + + +@code { + [Parameter] public required string Icon { get; set; } + [Parameter] public required string TooltipText { get; set; } + [Parameter] public Size Size { get; set; } = Size.Small; + [Parameter] public Color Color { get; set; } = Color.Default; + [Parameter] public string? Href { get; set; } + [Parameter] public EventCallback OnClick { get; set; } +}