@page "/events/create" @attribute [Authorize] @using WebApp.Components.Shared.Components @using Core.Utility @using Microsoft.EntityFrameworkCore @using MudBlazor @using WebApp.Services @inject AppDbContext context @inject NavigationManager NavigationManager @inject ISnackbar Snackbar @inject FormValidationService ValidationService @inject EventDefinitionService EventDefinitionService Basic Information Event Format @foreach (EventFormat format in Enum.GetValues(typeof(EventFormat))) { @format.ToString() } Event Details Team Configuration Competition Details Create Cancel @code { [SupplyParameterFromQuery] private string? ReturnUrl { get; set; } [SupplyParameterFromForm] private EventDefinition EventDefinition { get; set; } = new(); private FormChangeTracker? _formChangeTracker; private EditContext? _editContext; private List _validationErrors = new(); protected override void OnInitialized() { _editContext = new EditContext(EventDefinition); } private void OnInvalidSubmit(EditContext editContext) { _validationErrors = ValidationService.HandleInvalidSubmit(editContext, EventDefinition, errors => _validationErrors = errors); StateHasChanged(); } private async Task OnValidSubmit() { _validationErrors.Clear(); try { // Normalize and process related careers await EventDefinitionService.ProcessRelatedCareersAsync(EventDefinition); context.Events.Add(EventDefinition); await context.SaveChangesAsync(); Snackbar.Add($"Event '{EventDefinition.Name}' created successfully.", Severity.Success); _formChangeTracker?.AllowNavigation(); NavigationManager.NavigateTo(ReturnUrl ?? "/events"); } catch (DbUpdateException ex) { ValidationService.HandleDbUpdateException( ex, "An error occurred while creating the event.", "event", "creating", "name"); } catch (Exception ex) { ValidationService.HandleException(ex); } } private void HandleCancel() { _formChangeTracker?.AllowNavigation(); NavigationManager.NavigateTo(ReturnUrl ?? "/events"); } }