Newer
Older
hypermedia-blazorcrud / Blazorcrud.Client / Pages / Users / Update.razor
@Derek Comartin Derek Comartin on 12 Jul 1 KB Init
@page "/user/updateuser/{id}"
@attribute [Authorize]
@inject IAlertService AlertService
@inject IUserService UserService
@inject NavigationManager navManager
@inject Blazorcrud.Client.Shared.PageHistoryState PageHistoryState

<h1>Edit User</h1>
<br/>

<Form ButtonText="Update User" user="@user" loading="@loading"
            OnValidSubmit="@UpdateUser" />

@code {
    bool loading = false;
    
    [Parameter]
    public string Id { get; set; }

    User user = new User();
    
    protected async override Task OnParametersSetAsync()
    {
       user = await UserService.GetUser(int.Parse(Id));
    }

    async Task UpdateUser()
    {
        loading = true;
        try
        {
            await UserService.UpdateUser(user);
            AlertService.Success("User updated successfully", keepAfterRouteChange: true);
            if (PageHistoryState.CanGoBack()){
                navManager.NavigateTo(PageHistoryState.GetGoBackPage());
            }
            else{
                navManager.NavigateTo("/user/1");
            } 
        }
        catch (Exception ex)
        {
            AlertService.Error(ex.Message);
            loading = false;
            StateHasChanged();
        }
    }
}