178 lines
8.8 KiB
Plaintext
178 lines
8.8 KiB
Plaintext
@page "/events/edit"
|
|
@using Microsoft.EntityFrameworkCore
|
|
@using Core.Entities
|
|
@using Data
|
|
@inject AppDbContext context
|
|
@inject NavigationManager NavigationManager
|
|
|
|
<PageTitle>Edit</PageTitle>
|
|
|
|
<h1>Edit</h1>
|
|
|
|
<h2>EventDefinition</h2>
|
|
<hr />
|
|
@if (EventDefinition is null)
|
|
{
|
|
<p><em>Loading...</em></p>
|
|
}
|
|
else
|
|
{
|
|
<div class="row">
|
|
<div class="col-md-4">
|
|
<EditForm method="post" Model="EventDefinition" OnValidSubmit="UpdateEventDefinition" FormName="edit" Enhance>
|
|
<DataAnnotationsValidator />
|
|
<ValidationSummary role="alert"/>
|
|
<input type="hidden" name="EventDefinition.Id" value="@EventDefinition.Id" />
|
|
<div class="mb-3">
|
|
<label for="name" class="form-label">Name:</label>
|
|
<InputText id="name" @bind-Value="EventDefinition.Name" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.Name" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="shortname" class="form-label">ShortName:</label>
|
|
<InputText id="shortname" @bind-Value="EventDefinition.ShortName" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.ShortName" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="eventformat" class="form-label">EventFormat:</label>
|
|
<InputSelect @bind-Value="@EventDefinition.EventFormat">
|
|
@foreach (var format in Enum.GetValues(typeof(EventFormat)))
|
|
{
|
|
<option value="@format">@(@format.ToString())</option>
|
|
}
|
|
</InputSelect>
|
|
<ValidationMessage For="() => EventDefinition.EventFormat" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="minteamsize" class="form-label">MinTeamSize:</label>
|
|
<InputNumber id="minteamsize" @bind-Value="EventDefinition.MinTeamSize" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.MinTeamSize" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="maxteamsize" class="form-label">MaxTeamSize:</label>
|
|
<InputNumber id="maxteamsize" @bind-Value="EventDefinition.MaxTeamSize" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.MaxTeamSize" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="semifinalistactivity" class="form-label">SemifinalistActivity:</label>
|
|
<InputText id="semifinalistactivity" @bind-Value="EventDefinition.SemifinalistActivity" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.SemifinalistActivity" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="notes" class="form-label">Notes:</label>
|
|
<InputText id="notes" @bind-Value="EventDefinition.Notes" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.Notes" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="maxteamcountstate" class="form-label">MaxTeamCountState:</label>
|
|
<InputNumber id="maxteamcountstate" @bind-Value="EventDefinition.MaxTeamCountState" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.MaxTeamCountState" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="regionalevent" class="form-label">RegionalEvent:</label>
|
|
<InputCheckbox id="regionalevent" @bind-Value="EventDefinition.RegionalEvent" class="form-check-input" />
|
|
<ValidationMessage For="() => EventDefinition.RegionalEvent" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="regionalpresubmit" class="form-label">RegionalPresubmit:</label>
|
|
<InputCheckbox id="regionalpresubmit" @bind-Value="EventDefinition.RegionalPresubmit" class="form-check-input" />
|
|
<ValidationMessage For="() => EventDefinition.RegionalPresubmit" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="statepresubmission" class="form-label">StatePresubmission:</label>
|
|
<InputCheckbox id="statepresubmission" @bind-Value="EventDefinition.StatePresubmission" class="form-check-input" />
|
|
<ValidationMessage For="() => EventDefinition.StatePresubmission" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="statepretesting" class="form-label">StatePretesting:</label>
|
|
<InputCheckbox id="statepretesting" @bind-Value="EventDefinition.StatePretesting" class="form-check-input" />
|
|
<ValidationMessage For="() => EventDefinition.StatePretesting" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="statepreliminaryround" class="form-label">StatePreliminaryRound:</label>
|
|
<InputCheckbox id="statepreliminaryround" @bind-Value="EventDefinition.StatePreliminaryRound" class="form-check-input" />
|
|
<ValidationMessage For="() => EventDefinition.StatePreliminaryRound" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="documentation" class="form-label">Documentation:</label>
|
|
<InputText id="documentation" @bind-Value="EventDefinition.Documentation" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.Documentation" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="eligibility" class="form-label">Eligibility:</label>
|
|
<InputText id="eligibility" @bind-Value="EventDefinition.Eligibility" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.Eligibility" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="theme" class="form-label">Theme:</label>
|
|
<InputText id="theme" @bind-Value="EventDefinition.Theme" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.Theme" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="description" class="form-label">Description:</label>
|
|
<InputText id="description" @bind-Value="EventDefinition.Description" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.Description" class="text-danger" />
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="levelofeffort" class="form-label">LevelOfEffort:</label>
|
|
<InputNumber id="levelofeffort" @bind-Value="EventDefinition.LevelOfEffort" class="form-control" />
|
|
<ValidationMessage For="() => EventDefinition.LevelOfEffort" class="text-danger" />
|
|
</div>
|
|
<button type="submit" class="btn btn-primary">Save</button>
|
|
</EditForm>
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
<div>
|
|
<a href="/events">Back to List</a>
|
|
</div>
|
|
|
|
@code {
|
|
[SupplyParameterFromQuery]
|
|
private int Id { get; set; }
|
|
|
|
[SupplyParameterFromForm]
|
|
private EventDefinition? EventDefinition { get; set; }
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
EventDefinition ??= await context.Events.FirstOrDefaultAsync(m => m.Id == Id);
|
|
|
|
if (EventDefinition is null)
|
|
{
|
|
NavigationManager.NavigateTo("notfound");
|
|
}
|
|
}
|
|
|
|
// To protect from overposting attacks, enable the specific properties you want to bind to.
|
|
// For more information, see https://learn.microsoft.com/aspnet/core/blazor/forms/#mitigate-overposting-attacks.
|
|
private async Task UpdateEventDefinition()
|
|
{
|
|
context.Attach(EventDefinition!).State = EntityState.Modified;
|
|
|
|
try
|
|
{
|
|
await context.SaveChangesAsync();
|
|
}
|
|
catch (DbUpdateConcurrencyException)
|
|
{
|
|
if (!EventDefinitionExists(EventDefinition!.Id))
|
|
{
|
|
NavigationManager.NavigateTo("notfound");
|
|
}
|
|
else
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
NavigationManager.NavigateTo("/events");
|
|
}
|
|
|
|
private bool EventDefinitionExists(int id)
|
|
{
|
|
return context.Events.Any(e => e.Id == id);
|
|
}
|
|
}
|