6407dfca71
Add Team.Identifier
127 lines
4.9 KiB
Plaintext
127 lines
4.9 KiB
Plaintext
@page "/teams"
|
|
@using Microsoft.EntityFrameworkCore
|
|
@using WebApp.Models
|
|
@inject AppDbContext Context
|
|
@inject IDialogService DialogService
|
|
@inject ISnackbar Snackbar
|
|
|
|
<PageTitle>TimeSlots</PageTitle>
|
|
|
|
<MudText Typo="Typo.h3">Teams</MudText>
|
|
|
|
<MudButton StartIcon="@Icons.Material.Filled.Create" Href="teams/create">Create New</MudButton>
|
|
<MudButton StartIcon="@Icons.Material.Filled.Assignment" Href="teams/assignment">Assignment</MudButton>
|
|
<MudButton StartIcon="@Icons.Material.Filled.Print" Href="teams/printout">Printout</MudButton>
|
|
|
|
|
|
<MudDataGrid T="Team" ServerData="ServerReload" @ref="_dataGrid" Filterable="true" RowsPerPage="35">
|
|
<Columns>
|
|
<TemplateColumn Title="Event">
|
|
<CellTemplate>
|
|
@context.Item.ToString()
|
|
</CellTemplate>
|
|
</TemplateColumn>
|
|
<TemplateColumn Title="Attributes">
|
|
<CellTemplate>
|
|
<EventAttributes EventDefinition="@context.Item.Event"></EventAttributes>
|
|
</CellTemplate>
|
|
</TemplateColumn>
|
|
<TemplateColumn Title="Students">
|
|
<CellTemplate>
|
|
@foreach (var student in
|
|
context.Item.Students
|
|
.OrderBy(e =>
|
|
e.EventRankings
|
|
.Find(er => er.EventDefinition == context.Item.Event)?.Rank ?? 10)
|
|
.ThenBy(s => s.Grade + s.TsaYear))
|
|
{
|
|
var eventRank =
|
|
student.EventRankings
|
|
.Find(e => e.EventDefinition == context.Item.Event)?.Rank;
|
|
var color = AppIcons.RankedEventColor(eventRank ?? 0);
|
|
var captain = context.Item.Captain != null && context.Item.Captain.Equals(student);
|
|
|
|
<MudPaper Class="d-inline-flex pa-2 mx-2 my-1" Style="@($"background:{color};")">
|
|
@student.FirstName @if(captain){<span> *</span>}
|
|
</MudPaper>
|
|
}
|
|
</CellTemplate>
|
|
</TemplateColumn>
|
|
@* <TemplateColumn Title="Grade (TSA Year)" SortBy="e => e.Grade" Sortable="true">
|
|
<CellTemplate>
|
|
@context.Item.Grade (@context.Item.TsaYear)
|
|
</CellTemplate>
|
|
</TemplateColumn> *@
|
|
<TemplateColumn>
|
|
<CellTemplate>
|
|
<MudStack Row>
|
|
<MudButtonGroup Size="Size.Small">
|
|
<MudTooltip Text="Details">
|
|
<MudIconButton Href="@($"/teams/details?id={context.Item!.Id}")" Icon="@Icons.Material.Filled.Description">Details</MudIconButton>
|
|
</MudTooltip>
|
|
<MudTooltip Text="Edit">
|
|
<MudIconButton Href="@($"/teams/edit?id={context.Item!.Id}")" Icon="@Icons.Material.Filled.Edit">Edit</MudIconButton>
|
|
</MudTooltip>
|
|
<MudTooltip Text="Delete">
|
|
<MudIconButton Icon="@Icons.Material.Outlined.Delete"
|
|
Color="Color.Error"
|
|
OnClick="() => DeleteTeam(context.Item!)"/>
|
|
</MudTooltip>
|
|
</MudButtonGroup>
|
|
</MudStack>
|
|
</CellTemplate>
|
|
</TemplateColumn>
|
|
</Columns>
|
|
<PagerContent>
|
|
<MudDataGridPager T="Student"></MudDataGridPager>
|
|
</PagerContent>
|
|
</MudDataGrid>
|
|
|
|
@code {
|
|
MudDataGrid<Team> _dataGrid = null!;
|
|
|
|
private async Task<GridData<Team>> ServerReload(GridState<Team> state)
|
|
{
|
|
var query
|
|
= Context.Teams
|
|
.Include(e => e.Event)
|
|
.Include(e => e.Students)
|
|
.ThenInclude(e => e.EventRankings)
|
|
.OrderBy(e => e.Event.Name)
|
|
.ThenBy(e => e.Identifier)
|
|
.Where(state.FilterDefinitions)
|
|
.OrderBy(state.SortDefinitions);
|
|
|
|
var totalItems = await query.CountAsync();
|
|
var pagedData = await query.Skip(state.Page * state.PageSize).Take(state.PageSize).ToArrayAsync();
|
|
|
|
return new GridData<Team>
|
|
{
|
|
TotalItems = totalItems,
|
|
Items = pagedData
|
|
};
|
|
}
|
|
|
|
private async Task DeleteTeam(Team team)
|
|
{
|
|
//_isRowBlocked = true;
|
|
|
|
var result = await DialogService
|
|
.ShowMessageBox("Delete team",
|
|
(MarkupString)$"Are you sure want to delete <b>{team}</b>? This cannot be undone.",
|
|
yesText: "Yes",
|
|
noText: "Cancel");
|
|
|
|
if (result == true)
|
|
{
|
|
Context.Teams.Remove(team!);
|
|
await Context.SaveChangesAsync();
|
|
Snackbar.Add($"Delete event: Delete of Team {team}", Severity.Info);
|
|
}
|
|
|
|
//_isRowBlocked = false;
|
|
StateHasChanged();
|
|
_dataGrid.ReloadServerData();
|
|
}
|
|
}
|