@page "/teams/printout"
@attribute [Authorize]
@using Microsoft.EntityFrameworkCore
@using WebApp.Models
@using WebApp.Components.Shared.Components
@using Core.Utility
@inject IConfiguration Configuration
@inject AppDbContext Context
@if (_teams == null)
{
Loading...
}
else
{
Team
@for (var i = 0; i <= _maxTeamSize; i++)
{
}
@context.ToString()
@{
var students
= context.Students
.OrderByDescending(s => s == context.Captain)
.ThenBy(s => s.EventRankings.Find(e => e.EventDefinition == context.Event)?.Rank ?? int.MaxValue)
.ThenByDescending(e => e.Grade)
.ThenBy(e => e.FirstName)
.ToArray();
}
@for (var i = 0; i <= _maxTeamSize; i++)
{
var student = i < students.Length ? students[i] : null;
if (student != null)
{
var rank = student.EventRankings
.Find(e => e.EventDefinition == context.Event)?.Rank ?? int.MaxValue;
@TeamStudentNameFormatter.FormatStudentName(
student,
context,
new TeamStudentNameFormatter.FormatOptions
{
CaptainIndicator = TeamStudentNameFormatter.CaptainIndicatorStyle.Captain
})
}
else
{
}
}
@if (context.Event.EventFormat == EventFormat.Team)
{
@if (context.Students.Count < context.Event.MinTeamSize)
{
Min Team Size: @context.Event.MinTeamSize
}
@if (context.Students.Count > context.Event.MaxTeamSize)
{
Max Team Size: @context.Event.MaxTeamSize
}
}
else if (context.Event.EventFormat == EventFormat.Individual
&& context.Students.Count > context.Event.ChapterEligibilityCountState)
{
Max Team Count State: @context.Event.ChapterEligibilityCountState
}
Student
Effort
@for (var i = 0; i <= 5; i++)
{
}
@context.Name
@context.Teams.Sum(e => e.Event?.LevelOfEffort ?? 0)
@{
var teams = context.Teams
.OrderBy(e =>
context.EventRankings.Find(ser => ser.EventDefinition == e.Event)?.Rank ?? int.MaxValue
).ToArray();
}
@for (var i = 0; i <= 5; i++)
{
var team = i < teams.Length ? teams[i] : null;
@if (team != null)
{
var rank = context.EventRankings
.Find(e => e.EventDefinition == team.Event)?.Rank ?? int.MaxValue;
@team.ToString()
@if (rank == int.MaxValue)
{
❔
}
}
else
{
}
}
@if (!context.Teams.Select(e => e.Event).Any(re => re.OnSiteActivity))
{
No On-Site Activity
}
@if (!context.Teams.Select(e => e.Event).Any(re => re.RegionalEvent))
{
No Regional Event
}
Student
Grade, TSA Year
Level of Effort
@context.Name
@AppIcons.GetOrdinal(context.Grade), @context.TsaYear
@context.Teams.Sum(e => e.Event?.LevelOfEffort ?? 0)
@if (!context.Teams.Select(e => e.Event).Any(re => re.OnSiteActivity))
{
No On-Site Activity
}
@if (!context.Teams.Select(e => e.Event).Any(re => re.RegionalEvent))
{
No Regional Event
}
@{ var rank = context.EventRankings
.Find(e => e.EventDefinition == team.Event)?.Rank ?? int.MaxValue; }
@team.ToString()
@AppIcons.EventEffort(team.Event)
@AppIcons.EventAttributes(team.Event)
@if (rank == int.MaxValue)
{
❔
}
@TeamStudentNameFormatter.FormatStudentList(
new Team { Students = team.Students.Where(e => e != context).ToList(), Event = team.Event },
new TeamStudentNameFormatter.FormatOptions
{
Ordering = TeamStudentNameFormatter.OrderingStyle.None
})
}
@code {
private Team[]? _teams;
private int _maxTeamSize;
private Student[]? _students;
private bool _rankColorEnabled = false;
private string EventRankClass(int rank)
{
if (!_rankColorEnabled)
return "";
return "event-rank-" + rank;
}
protected override async Task OnInitializedAsync()
{
_teams
= await Context.Teams
.AsNoTracking()
.Include(e => e.Event)
.Include(e => e.Students)
.OrderByEventFormatFirst()
.ThenBy(e => e.Event.Name)
.ThenBy(e => e.Identifier ?? "")
.ToArrayAsync();
_maxTeamSize = _teams.Max(t => t.Students.Count);
_students =
await Context.Students
.AsNoTracking()
.Include(e => e.Teams)
.ThenInclude(e => e.Captain)
.Include(e => e.Teams)
.ThenInclude(e => e.Event)
.Include(e => e.EventRankings)
.ThenInclude(e => e.EventDefinition)
.OrderBy(e => e.FirstName).ToArrayAsync();
}
}