Newer
Older
hypermedia-blazorcrud / Blazorcrud.Client / Pages / Person / Add.razor
@Derek Comartin Derek Comartin on 12 Jul 1 KB Init
@page "/person/createperson"
@attribute [Authorize]
@inject IAlertService AlertService
@inject IPersonService PersonService
@inject NavigationManager navManager
@inject Blazorcrud.Client.Shared.PageHistoryState PageHistoryState

<h1>Create Person</h1>
<br/>

<Form ButtonText="Create Person" person="@person" loading="@loading"
            OnValidSubmit="@CreatePerson" />

@code {
    bool loading = false;
    
    Person person = new Person
    {
        FirstName = "",
        LastName = "",
        Gender = Gender.Other,
        PhoneNumber = "",
        Addresses = new List<Address>
        {
            new Address {Street="", City="", State="", ZipCode=""}   
        }
    };
    async Task CreatePerson()
    {
        loading = true;
        try
        {
            await PersonService.AddPerson(person);
            AlertService.Success("Person added successfully", keepAfterRouteChange: true);
            if (PageHistoryState.CanGoBack()){
                navManager.NavigateTo(PageHistoryState.GetGoBackPage());
            }
            else{
                navManager.NavigateTo("/person/1");
            } 
        }
        catch (Exception ex)
        {
            AlertService.Error(ex.Message);
            loading = false;
            StateHasChanged();
        }
    }
}