diff --git a/Lieb/Data/UserService.cs b/Lieb/Data/UserService.cs index ec36928..3b773cd 100644 --- a/Lieb/Data/UserService.cs +++ b/Lieb/Data/UserService.cs @@ -9,11 +9,13 @@ namespace Lieb.Data { private readonly IDbContextFactory _contextFactory; private readonly DiscordService _discordService; + private readonly GuildWars2AccountService _guildWars2AccountService; - public UserService(IDbContextFactory contextFactory, DiscordService discordService) + public UserService(IDbContextFactory contextFactory, DiscordService discordService, GuildWars2AccountService guildWars2AccountService) { _contextFactory = contextFactory; _discordService = discordService; + _guildWars2AccountService = guildWars2AccountService; } public List GetLiebUsers() @@ -101,6 +103,21 @@ namespace Lieb.Data await _discordService.RenameUser(user.Id, user.Name, GetMainAccount(user.Id).AccountName); } + public async Task DeleteUser(LiebUser user) + { + using var context = _contextFactory.CreateDbContext(); + + foreach(GuildWars2Account account in user.GuildWars2Accounts) + { + await _guildWars2AccountService.DeleteAccount(account.GuildWars2AccountId); + } + context.RaidLogs.RemoveRange(context.RaidLogs.Where(r => r.UserId == user.Id).ToList()); + context.RaidSignUps.RemoveRange(context.RaidSignUps.Where(r => r.LiebUserId == user.Id)); + context.RoleAssignments.RemoveRange(context.RoleAssignments.Where(r => r.LiebUserId == user.Id)); + context.Remove(user); + await context.SaveChangesAsync(); + } + public async Task UpdateBannedUntil(ulong userId, DateTime? date) { using var context = _contextFactory.CreateDbContext(); diff --git a/Lieb/Pages/User/ManageAccount.razor b/Lieb/Pages/User/ManageAccount.razor index 4d63335..8c1101a 100644 --- a/Lieb/Pages/User/ManageAccount.razor +++ b/Lieb/Pages/User/ManageAccount.razor @@ -7,6 +7,7 @@ @inject UserService UserService @inject NavigationManager NavigationManager @inject AuthenticationStateProvider AuthenticationStateProvider +@inject IJSRuntime JsRuntime

Manage Account

@@ -71,6 +72,12 @@
+
+
+
+
+
+ Delete Account @@ -99,4 +106,17 @@ await UserService.EditUser(_user); _saveMessage = "changes saved successfully"; } + + async Task DeleteAccountClicked() + { + bool confirmed = await JsRuntime.InvokeAsync("confirm", "Are you sure you want to delete this Website Account?\nThis will sign you off in every raid in which you are signed up."); + if (confirmed) + { + await UserService.DeleteUser(_user); + } + else + { + NavigationManager.NavigateTo("accountedit"); + } + } } \ No newline at end of file