@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
{
}
@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";
}
_user = UserService.GetLiebUser(_user.Id);
}
}