Files
chapter-organizer/WebApp/Components/Pages/TeamPages/Index.razor
T

111 lines
4.0 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>
<TeamStudents Team="@context.Item"></TeamStudents>
</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();
}
}