@page "/useredit" @page "/useredit/{_userId}" @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 @inject IJSRuntime JsRuntime

User Edit

@_submitMessage

@if (_user.BannedUntil >= DateTime.Now.Date) { } else { }

@foreach (LiebRole role in _roles) { @{ bool hasRole = _user.RoleAssignments.Where(a => a.LiebRoleId == role.LiebRoleId).Any(); bool disabled = _editingUserRights < role.LevelToAssign || role.Type == RoleType.GuildRole; } }
Role Type
@role.RoleName @role.Type.ToString()

@code { [Parameter] public string _userId { get; set; } private LiebUser _user; private int _editingUserRights = 0; private List _roles; private string _submitMessage = 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); LiebUser editingUser = UserService.GetLiebUser(discordId); foreach(RoleAssignment assignment in editingUser.RoleAssignments) { if(_editingUserRights < assignment.LiebRole.Level) { _editingUserRights = assignment.LiebRole.Level; } } if(!string.IsNullOrEmpty(_userId) && ulong.TryParse(_userId, out ulong parsedId)) { _user = UserService.GetLiebUser(parsedId); _roles = UserService.GetLiebRoles(); } else { NavigationManager.NavigateTo("useroverview"); } } async Task RoleStatusChanged(LiebRole role, ChangeEventArgs args) { bool isChecked = bool.Parse(args.Value.ToString()); RoleAssignment? assignment = _user.RoleAssignments.FirstOrDefault(a => a.LiebRoleId == role.LiebRoleId); if(isChecked && assignment == null) { RoleAssignment roleAssignment = new RoleAssignment() { LiebRoleId = role.LiebRoleId, LiebUserId = _user.Id }; await UserService.AddRoleToUser(_user.Id, role.LiebRoleId); _user.RoleAssignments.Add(roleAssignment); } else if(!isChecked && assignment != null) { await UserService.RemoveRoleFromUser(_user.Id, role.LiebRoleId); _user.RoleAssignments.Remove(assignment); } } private async Task HandleValidSubmit() { await UserService.UpdateBannedUntil(_user.Id, _user.BannedUntil); if(_user.BannedUntil >= DateTime.Now.Date) { _submitMessage = "user banned successfully"; } else { _submitMessage = "user unbanned successfully"; } } }