Address compiler warnings

This commit is contained in:
2025-12-26 13:58:41 -05:00
parent f2389fa1c1
commit f395dba043
25 changed files with 112 additions and 99 deletions
@@ -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; }
+4 -4
View File
@@ -10,22 +10,22 @@ public class TeamScheduleTimeSlot
/// <summary>
/// Gets or sets the name of this time slot.
/// </summary>
public string Name { get; set; }
public string Name { get; set; } = null!;
/// <summary>
/// Gets or sets the teams scheduled in this time slot.
/// </summary>
public Team[] Teams;
public Team[] Teams = null!;
/// <summary>
/// Gets or sets the students who are not scheduled in any team during this time slot.
/// </summary>
public Student[] UnscheduledStudents;
public Student[] UnscheduledStudents = null!;
/// <summary>
/// Gets or sets the students who have overlapping team meetings in this time slot.
/// </summary>
public IEnumerable<(Student student, IEnumerable<Team> teams)> StudentOverlaps;
public IEnumerable<(Student student, IEnumerable<Team> teams)> StudentOverlaps = null!;
/// <summary>
/// Checks if a student has overlapping team meetings in this time slot.
+2 -2
View File
@@ -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)]
+4 -4
View File
@@ -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") ||
+1 -1
View File
@@ -2,7 +2,7 @@
public class PartialTeam : Team
{
public IList<Student> OmittedStudents { get; set; }
public IList<Student> OmittedStudents { get; set; } = null!;
public override Team CloneWithOmittedStudents(IEnumerable<Student> studentsToOmit)
{
+3 -3
View File
@@ -10,12 +10,12 @@ public class Student : IEquatable<Student>
[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<Student>
[Display(Name = "Officer Role")]
public OfficerRole? OfficerRole { get; set; }
public List<Team> Teams { get; set; } = null;
public List<Team> Teams { get; set; } = null!;
public List<EventDefinition> RankedEvents { get; } = [];
public List<StudentEventRanking> EventRankings { get; } = [];
+1 -1
View File
@@ -2,7 +2,7 @@
public class StudentEventStatistics
{
public Student Student { get; set; }
public Student Student { get; set; } = null!;
public List<EventDefinition> Events { get; set; } = [];
public int? TotalLevelOfEffort => Events.Sum(e => e.LevelOfEffort);
+1 -1
View File
@@ -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<Student> Students { get; set; } = [];
+8 -4
View File
@@ -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;
}
}
}
+4 -4
View File
@@ -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
+1 -1
View File
@@ -31,7 +31,7 @@ public class EventOccurrenceParser
public IDictionary<EventDefinition, List<EventOccurrence>> Parse()
{
var occurrences = new Dictionary<EventDefinition, List<EventOccurrence>>();
EventDefinition currentEventDefinition = null;
EventDefinition? currentEventDefinition = null;
var lines = File.ReadLines(_txtFile.FullName);
foreach (var line in lines)
@@ -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()
{
@@ -10,7 +10,7 @@
ShowBackButton="true"
BackButtonUrl="/events" />
<EditForm id="create-event-form" Model="EventDefinition" OnValidSubmit="OnValidSubmit" Enhance>
<EditForm Model="EventDefinition" OnValidSubmit="OnValidSubmit" Enhance>
<FormChangeTracker @ref="_formChangeTracker" />
<AntiforgeryToken />
<DataAnnotationsValidator />
@@ -45,13 +45,12 @@
</MudPaper>
</MudItem>
</MudGrid>
<FormActions>
<MudButton ButtonType="ButtonType.Submit" Variant="Variant.Filled" Color="Color.Primary">Create</MudButton>
<MudButton OnClick="HandleCancel" Variant="Variant.Text">Cancel</MudButton>
</FormActions>
</EditForm>
<FormActions>
<MudButton ButtonType="ButtonType.Submit" Variant="Variant.Filled" Color="Color.Primary" Form="create-event-form">Create</MudButton>
<MudButton OnClick="HandleCancel" Variant="Variant.Text">Cancel</MudButton>
</FormActions>
@code {
[SupplyParameterFromForm]
private EventDefinition EventDefinition { get; set; } = new();
+5 -6
View File
@@ -17,7 +17,7 @@
ShowBackButton="true"
BackButtonUrl="/events" />
<EditForm id="edit-event-form" Model="EventDefinition" OnValidSubmit="OnValidSubmit" Enhance>
<EditForm Model="EventDefinition" OnValidSubmit="OnValidSubmit" Enhance>
<FormChangeTracker @ref="_formChangeTracker" />
<AntiforgeryToken />
<DataAnnotationsValidator />
@@ -52,13 +52,12 @@
</MudPaper>
</MudItem>
</MudGrid>
<FormActions>
<MudButton ButtonType="ButtonType.Submit" Variant="Variant.Filled" Color="Color.Primary">Save</MudButton>
<MudButton OnClick="HandleCancel" Variant="Variant.Text">Cancel</MudButton>
</FormActions>
</EditForm>
<FormActions>
<MudButton ButtonType="ButtonType.Submit" Variant="Variant.Filled" Color="Color.Primary" Form="edit-event-form">Save</MudButton>
<MudButton OnClick="HandleCancel" Variant="Variant.Text">Cancel</MudButton>
</FormActions>
@code {
[SupplyParameterFromQuery]
private int Id { get; set; }
@@ -25,15 +25,13 @@
@context.Item.Name
</MudLink>
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
<MudIconButton Icon="@Icons.Material.Filled.Edit"
Size="Size.Small"
Href="@($"/events/edit?id={context.Item.Id}")"
Title="Edit" />
<MudIconButton Icon="@Icons.Material.Outlined.Delete"
Size="Size.Small"
Color="Color.Error"
OnClick="() => DeleteEventDefinition(context.Item!)"
Title="Delete" />
<IconButtonWithTooltip Icon="@Icons.Material.Filled.Edit"
TooltipText="Edit"
Href="@($"/events/edit?id={context.Item.Id}")" />
<IconButtonWithTooltip Icon="@Icons.Material.Outlined.Delete"
TooltipText="Delete"
Color="Color.Error"
OnClick="() => DeleteEventDefinition(context.Item!)" />
</MudStack>
</MudStack>
</CellTemplate>
@@ -102,11 +102,11 @@
</MudPaper>
@code {
private Team[]? _teams;
private Student[]? _students;
MudTable<TeamScheduleTimeSlot> _solutionData;
private TeamSchedulerSolution _solution;
private TeamSchedulerOptions _parameters;
private Team[] _teams = null!;
private Student[] _students = null!;
MudTable<TeamScheduleTimeSlot> _solutionData = null!;
private TeamSchedulerSolution _solution = null!;
private TeamSchedulerOptions _parameters = null!;
bool _isSolving;
private IEnumerable<Team> _scheduledTeams = [];
private IEnumerable<Student> _absentStudents = [];
@@ -10,7 +10,7 @@
ShowBackButton="true"
BackButtonUrl="/students" />
<EditForm id="create-student-form" Model="Student" OnValidSubmit="OnValidSubmit" Enhance>
<EditForm Model="Student" OnValidSubmit="OnValidSubmit" Enhance>
<FormChangeTracker @ref="_formChangeTracker" />
<AntiforgeryToken />
<DataAnnotationsValidator />
@@ -26,13 +26,12 @@
</MudPaper>
</MudItem>
</MudGrid>
<FormActions>
<MudButton ButtonType="ButtonType.Submit" Variant="Variant.Filled" Color="Color.Primary">Create</MudButton>
<MudButton OnClick="HandleCancel" Variant="Variant.Text">Cancel</MudButton>
</FormActions>
</EditForm>
<FormActions>
<MudButton ButtonType="ButtonType.Submit" Variant="Variant.Filled" Color="Color.Primary" Form="create-student-form">Create</MudButton>
<MudButton OnClick="HandleCancel" Variant="Variant.Text">Cancel</MudButton>
</FormActions>
@code {
[SupplyParameterFromForm]
private Student Student { get; set; } = new() { TsaYear = 1 };
@@ -97,11 +97,11 @@ else
private Student[]? _students;
private class EventStudentRankings {
public EventDefinition Event {get; set; }
public Tuple<Student,int> [] StudentRanking { get; set; }
public required EventDefinition Event {get; set; }
public required Tuple<Student,int>[] StudentRanking { get; set; }
}
private EventStudentRankings[] _eventStudentRankings;
private EventStudentRankings[] _eventStudentRankings = null!;
private int _maxEventStudentRankings;
protected override async Task OnInitializedAsync()
@@ -32,15 +32,13 @@
}
</MudStack>
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
<MudIconButton Icon="@Icons.Material.Filled.Edit"
Size="Size.Small"
Href="@($"/students/edit?id={context.Item.Id}&returnUrl=/students")"
Title="Edit" />
<MudIconButton Icon="@Icons.Material.Outlined.Delete"
Size="Size.Small"
Color="Color.Error"
OnClick="() => DeleteStudent(context.Item!)"
Title="Delete" />
<IconButtonWithTooltip Icon="@Icons.Material.Filled.Edit"
TooltipText="Edit"
Href="@($"/students/edit?id={context.Item.Id}&returnUrl=/students")" />
<IconButtonWithTooltip Icon="@Icons.Material.Outlined.Delete"
TooltipText="Delete"
Color="Color.Error"
OnClick="() => DeleteStudent(context.Item!)" />
</MudStack>
</MudStack>
</CellTemplate>
@@ -309,19 +309,19 @@
private readonly AssignmentParameters _parameters = new() { RequireOnSite = false, RequireRegional = false };
private ValidationService _validationService = new ValidationService(ValidationConfiguration.Default);
private List<EventDefinition>? _events;
private List<Student>? _students;
private List<EventDefinition> _events = null!;
private List<Student> _students = null!;
private List<EventAssignmentThresholds> _eventAssignmentThresholds = [];
MudTable<Team> _teamData;
MudTable<Team> _teamData = null!;
private Team[] _teams = [];
MudTable<StudentEventStatistics> _statisticData;
MudTable<StudentEventStatistics> _statisticData = null!;
private List<StudentEventStatistics> _statistics = [];
MudTable<AssignmentRequirement> _assignmentRequirementData;
MudTable<AssignmentRequirement> _assignmentRequirementData = null!;
private List<AssignmentRequirement> _assignmentRequirements = [];
MudTable<EventDefinition> _eventTwoTeamData;
MudTable<EventDefinition> _eventTwoTeamData = null!;
private List<EventDefinition> _eventTwoTeams = [];
MudTable<EventDefinition> _eventOmittedData;
MudTable<EventDefinition> _eventOmittedData = null!;
private List<EventDefinition> _eventOmitted = [];
private string _solutionStatus = string.Empty;
@@ -387,9 +387,9 @@
return new TableData<Team> { Items = _teams };
}
private async Task<TableData<StudentEventStatistics>> ReloadStatistics(TableState arg1, CancellationToken arg2)
private Task<TableData<StudentEventStatistics>> ReloadStatistics(TableState arg1, CancellationToken arg2)
{
return new TableData<StudentEventStatistics> {Items = _statistics};
return Task.FromResult(new TableData<StudentEventStatistics> {Items = _statistics});
}
private void UpdateValidationConfig()
@@ -403,20 +403,20 @@
return _validationService.ValidateStudentStatistics(stats, ValidationContext.StudentAssignment);
}
private async Task<TableData<AssignmentRequirement>> ReloadAssignmentRequirements(TableState arg1, CancellationToken arg2)
private Task<TableData<AssignmentRequirement>> ReloadAssignmentRequirements(TableState arg1, CancellationToken arg2)
{
return new TableData<AssignmentRequirement> { Items = _assignmentRequirements };
return Task.FromResult(new TableData<AssignmentRequirement> { Items = _assignmentRequirements });
}
private async Task<TableData<EventDefinition>> ReloadEventTwoTeam(TableState arg1, CancellationToken arg2)
private Task<TableData<EventDefinition>> ReloadEventTwoTeam(TableState arg1, CancellationToken arg2)
{
return new TableData<EventDefinition> { Items = _eventTwoTeams };
return Task.FromResult(new TableData<EventDefinition> { Items = _eventTwoTeams });
}
private async Task<TableData<EventDefinition>> ReloadOmittedEvents(TableState arg1, CancellationToken arg2)
private Task<TableData<EventDefinition>> ReloadOmittedEvents(TableState arg1, CancellationToken arg2)
{
return new TableData<EventDefinition> { Items = _eventOmitted };
return Task.FromResult(new TableData<EventDefinition> { Items = _eventOmitted });
}
private void RequireEvent(EventDefinition evt, Student student, Requirement requirement)
@@ -12,7 +12,7 @@
</MudSelect>
@code {
[Parameter] public Team[]? Teams { get; set; }
[Parameter] public Team[] Teams { get; set; } = null!;
[Parameter] public required IEnumerable<Team> SelectedTeams { get; set; }
[Parameter] public string Label { get; set; } = "Teams";
}
@@ -23,5 +23,5 @@
@code {
[Parameter]
public Team Team { get; set; }
public required Team Team { get; set; }
}
+7 -9
View File
@@ -25,15 +25,13 @@
@context.Item.ToString()
</MudLink>
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
<MudIconButton Icon="@Icons.Material.Filled.Edit"
Size="Size.Small"
Href="@($"/teams/edit?id={context.Item.Id}")"
Title="Edit" />
<MudIconButton Icon="@Icons.Material.Outlined.Delete"
Size="Size.Small"
Color="Color.Error"
OnClick="() => DeleteTeam(context.Item!)"
Title="Delete" />
<IconButtonWithTooltip Icon="@Icons.Material.Filled.Edit"
TooltipText="Edit"
Href="@($"/teams/edit?id={context.Item.Id}")" />
<IconButtonWithTooltip Icon="@Icons.Material.Outlined.Delete"
TooltipText="Delete"
Color="Color.Error"
OnClick="() => DeleteTeam(context.Item!)" />
</MudStack>
</MudStack>
</CellTemplate>
@@ -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)
{
@@ -0,0 +1,18 @@
@namespace WebApp.Components.Shared.Components
<MudTooltip Text="@TooltipText">
<MudIconButton Icon="@Icon"
Size="@Size"
Color="@Color"
Href="@Href"
OnClick="@OnClick" />
</MudTooltip>
@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<MouseEventArgs> OnClick { get; set; }
}