Lieb-Website/Lieb/Pages/User/ManageAccount.razor
2022-03-21 01:12:35 +01:00

82 lines
No EOL
2.2 KiB
Text

@page "/accountedit"
@using Lieb.Data
@using Lieb.Models
@using Lieb.Models.GuildWars2
@using System.ComponentModel.DataAnnotations
@using System.Security.Claims
@inject UserService UserService
@inject NavigationManager NavigationManager
@inject AuthenticationStateProvider AuthenticationStateProvider
<h3>ManageAccount</h3>
<AuthorizeView Context="authorizationContext">
<Authorized>
<EditForm Model="@_user" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<p>@_saveMessage</p>
<p>
<label>
Name:
<InputText @bind-Value="_user.Name" />
</label>
</p>
@*<p>
<label>
Pronouns:
<InputText @bind-Value="_user.Pronouns" />
</label>
</p>*@
<p>
<label>
Birthday:
<InputDate @bind-Value="_user.Birthday" />
</label>
</p>
<br />
<button type="submit">Save</button>
<ValidationSummary />
</EditForm>
<br />
<div class="nav-item px-3">
<NavLink class="nav-link" href="gw2accountedit">
<span class="oi oi-plus" aria-hidden="true"></span> Add Guild Wars 2 Account
</NavLink>
</div>
@foreach(GuildWars2Account account in _user.GuildWars2Accounts)
{
<div class="nav-item px-3">
@{string navLink = $"gw2accountedit/{@account.GuildWars2AccountId}";}
<NavLink class="nav-link" href="@navLink">@account.AccountName</NavLink>
</div>
}
</Authorized>
</AuthorizeView>
@code {
public LiebUser _user;
private string _saveMessage = string.Empty;
protected override async Task OnInitializedAsync()
{
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
ulong discordId = ulong.Parse(authState.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value);
_user = UserService.GetLiebUserGW2AccountOnly(discordId);
}
private async Task HandleValidSubmit()
{
await UserService.EditUser(_user);
_saveMessage = "changes saved successfully";
}
}