87db67f979
Updated the MudPaper component styling in multiple files to use a consistent padding class of "pa-3 pa-md-6" instead of "pa-6". This change enhances the visual consistency of the UI across the Calendar, Events, Students, and Teams components, improving the overall user experience.
110 lines
4.1 KiB
Plaintext
110 lines
4.1 KiB
Plaintext
@page "/students/create"
|
|
@attribute [Authorize]
|
|
@using WebApp.Components.Shared.Components
|
|
@using MudBlazor
|
|
@using WebApp.Services
|
|
@using Microsoft.EntityFrameworkCore
|
|
@inject AppDbContext Context
|
|
@inject NavigationManager NavigationManager
|
|
@inject ISnackbar Snackbar
|
|
@inject FormValidationService ValidationService
|
|
|
|
<PageHeader
|
|
Title="Create"
|
|
Subtitle="Student"
|
|
ShowBackButton="true"
|
|
BackButtonUrl="@(ReturnUrl ?? "/students")" />
|
|
|
|
<EditForm EditContext="@_editContext" OnValidSubmit="OnValidSubmit" OnInvalidSubmit="OnInvalidSubmit" Enhance>
|
|
<FormChangeTracker @ref="_formChangeTracker" />
|
|
<AntiforgeryToken />
|
|
<DataAnnotationsValidator />
|
|
|
|
<ValidationErrorDisplay Errors="_validationErrors" />
|
|
|
|
<MudPaper Elevation="2" Class="pa-3 pa-md-6">
|
|
<MudText Typo="Typo.h5" Class="mb-4">Student Information</MudText>
|
|
<MudGrid Spacing="3">
|
|
<MudItem xs="12" sm="6">
|
|
<MudTextField T="string" Label="First Name" @bind-Value="Student.FirstName" For="@(() => Student.FirstName)" Variant="Variant.Outlined"></MudTextField>
|
|
</MudItem>
|
|
<MudItem xs="12" sm="6">
|
|
<MudTextField T="string" Label="Last Name" @bind-Value="Student.LastName" For="@(() => Student.LastName)" Variant="Variant.Outlined"></MudTextField>
|
|
</MudItem>
|
|
<MudItem xs="12" sm="6">
|
|
<MudTextField T="string" Label="Email Address" @bind-Value="Student.Email" For="@(() => Student.Email)" Variant="Variant.Outlined"></MudTextField>
|
|
</MudItem>
|
|
<MudItem xs="12" sm="6">
|
|
<MudTextField T="string" Label="Phone Number" @bind-Value="Student.PhoneNumber" For="@(() => Student.PhoneNumber)" Variant="Variant.Outlined"></MudTextField>
|
|
</MudItem>
|
|
<MudItem xs="12" sm="6">
|
|
<MudTextField T="int" Label="Grade" @bind-Value="Student.Grade" For="@(() => Student.Grade)" Variant="Variant.Outlined"></MudTextField>
|
|
</MudItem>
|
|
<MudItem xs="12" sm="6">
|
|
<MudTextField T="int" Label="TSA Year" @bind-Value="Student.TsaYear" For="@(() => Student.TsaYear)" Variant="Variant.Outlined"></MudTextField>
|
|
</MudItem>
|
|
</MudGrid>
|
|
|
|
<FormActions>
|
|
<MudButton ButtonType="ButtonType.Submit" Variant="Variant.Filled" Color="Color.Primary">Create</MudButton>
|
|
<MudButton OnClick="HandleCancel" Variant="Variant.Text">Cancel</MudButton>
|
|
</FormActions>
|
|
</MudPaper>
|
|
</EditForm>
|
|
|
|
@code {
|
|
[SupplyParameterFromQuery]
|
|
private string? ReturnUrl { get; set; }
|
|
|
|
[SupplyParameterFromForm]
|
|
private Student Student { get; set; } = new() { TsaYear = 1 };
|
|
|
|
private FormChangeTracker? _formChangeTracker;
|
|
private EditContext? _editContext;
|
|
private List<string> _validationErrors = new();
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
_editContext = new EditContext(Student);
|
|
}
|
|
|
|
private void OnInvalidSubmit(EditContext editContext)
|
|
{
|
|
_validationErrors = ValidationService.HandleInvalidSubmit(editContext, Student, errors => _validationErrors = errors);
|
|
StateHasChanged();
|
|
}
|
|
|
|
private async Task OnValidSubmit()
|
|
{
|
|
_validationErrors.Clear();
|
|
|
|
try
|
|
{
|
|
Context.Students.Add(Student);
|
|
await Context.SaveChangesAsync();
|
|
|
|
Snackbar.Add($"Student '{Student.FirstNameLastName}' created successfully.", Severity.Success);
|
|
_formChangeTracker?.AllowNavigation();
|
|
NavigationManager.NavigateTo(ReturnUrl ?? "/students");
|
|
}
|
|
catch (DbUpdateException ex)
|
|
{
|
|
ValidationService.HandleDbUpdateException(
|
|
ex,
|
|
"An error occurred while creating the student.",
|
|
"student",
|
|
"creating");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ValidationService.HandleException(ex);
|
|
}
|
|
}
|
|
|
|
private void HandleCancel()
|
|
{
|
|
_formChangeTracker?.AllowNavigation();
|
|
NavigationManager.NavigateTo(ReturnUrl ?? "/students");
|
|
}
|
|
}
|