From c3ed05fa7ef3bdc136eaeeb69bfc3e7d86aa78e3 Mon Sep 17 00:00:00 2001 From: Sarah Faey Date: Fri, 18 Nov 2022 00:14:16 +0100 Subject: [PATCH] Added discord settings --- Lieb/Data/DiscordService.cs | 27 +++++++ Lieb/Data/LiebContext.cs | 2 + Lieb/Models/DiscordSettings.cs | 11 +++ Lieb/Pages/Discord/DiscordOverview.razor | 39 ++++++++++ Lieb/Pages/Discord/DiscordSettingsEdit.razor | 82 ++++++++++++++++++++ Lieb/Pages/User/UserEdit.razor | 1 - Lieb/Shared/NavMenu.razor | 9 +++ 7 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 Lieb/Models/DiscordSettings.cs create mode 100644 Lieb/Pages/Discord/DiscordOverview.razor create mode 100644 Lieb/Pages/Discord/DiscordSettingsEdit.razor diff --git a/Lieb/Data/DiscordService.cs b/Lieb/Data/DiscordService.cs index dc17d49..6421de0 100644 --- a/Lieb/Data/DiscordService.cs +++ b/Lieb/Data/DiscordService.cs @@ -4,6 +4,7 @@ using static System.Net.Mime.MediaTypeNames; using System.Text.Json; using System.Text; using Lieb.Models.GuildWars2.Raid; +using Lieb.Models; using Microsoft.EntityFrameworkCore; namespace Lieb.Data @@ -24,6 +25,32 @@ namespace Lieb.Data }; } + public DiscordSettings GetDiscordSettings(ulong discordServerId) + { + using var context = _contextFactory.CreateDbContext(); + return context.DiscordSettings + .ToList() + .FirstOrDefault(s => s.DiscordSettingsId == discordServerId, new DiscordSettings()); + } + + public async Task AddOrEditDiscordSettings(DiscordSettings discordSettings) + { + if (discordSettings != null) + { + using var context = _contextFactory.CreateDbContext(); + if(!context.DiscordSettings.Where(s => s.DiscordSettingsId == discordSettings.DiscordSettingsId).Any()) + { + context.DiscordSettings.Add(discordSettings); + await context.SaveChangesAsync(); + } + else + { + context.Update(discordSettings); + await context.SaveChangesAsync(); + } + } + } + public async Task PostRaidMessage(int raidId) { try diff --git a/Lieb/Data/LiebContext.cs b/Lieb/Data/LiebContext.cs index ae7e715..2416627 100644 --- a/Lieb/Data/LiebContext.cs +++ b/Lieb/Data/LiebContext.cs @@ -26,6 +26,7 @@ namespace Lieb.Data public DbSet RaidSignUps { get; set; } public DbSet RaidLogs { get; set; } public DbSet DiscordRaidMessages { get; set; } + public DbSet DiscordSettings { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) @@ -43,6 +44,7 @@ namespace Lieb.Data modelBuilder.Entity().ToTable("RaidSignUp"); modelBuilder.Entity().ToTable("RaidLog"); modelBuilder.Entity().ToTable("DiscordRaidMessage"); + modelBuilder.Entity().ToTable("DiscordSettings"); } } } diff --git a/Lieb/Models/DiscordSettings.cs b/Lieb/Models/DiscordSettings.cs new file mode 100644 index 0000000..5ecf094 --- /dev/null +++ b/Lieb/Models/DiscordSettings.cs @@ -0,0 +1,11 @@ +namespace Lieb.Models +{ + public class DiscordSettings + { + public ulong DiscordSettingsId { get; set; } + + public ulong DiscordLogChannel {get; set; } + + public bool ChangeUserNames {get; set;} + } +} diff --git a/Lieb/Pages/Discord/DiscordOverview.razor b/Lieb/Pages/Discord/DiscordOverview.razor new file mode 100644 index 0000000..a24c850 --- /dev/null +++ b/Lieb/Pages/Discord/DiscordOverview.razor @@ -0,0 +1,39 @@ +@page "/discordoverview" +@using Lieb.Data +@using Lieb.Models +@using Lieb.Models.GuildWars2 +@using SharedClasses.SharedModels +@inject DiscordService DiscordService + + +

Discord Overview

+ + + + + + + + + @foreach (DiscordServer server in _discordServers) + { + + + + } +
Servers
+
+
+ +@code +{ + private List _discordServers = new List(); + + protected override async Task OnInitializedAsync() + { + _discordServers = await DiscordService.GetServers(); + } +} diff --git a/Lieb/Pages/Discord/DiscordSettingsEdit.razor b/Lieb/Pages/Discord/DiscordSettingsEdit.razor new file mode 100644 index 0000000..ddf5e41 --- /dev/null +++ b/Lieb/Pages/Discord/DiscordSettingsEdit.razor @@ -0,0 +1,82 @@ +@page "/discordsettings/{_serverIdString}" +@using Lieb.Data +@using Lieb.Models +@using Lieb.Models.GuildWars2 +@using SharedClasses.SharedModels +@using System.ComponentModel.DataAnnotations +@using System.Security.Claims +@inject DiscordService DiscordService +@inject NavigationManager NavigationManager +@inject AuthenticationStateProvider AuthenticationStateProvider + +

User Edit

+ + + + + + +

Log Channel + + @{ + List channels = _discordServers.FirstOrDefault(s => s.Id == _serverId, new DiscordServer()).Channels; + + @foreach(DiscordChannel item in channels) + { + + } + } + +

+

+ +

+ + + +
+
+
+ + + +@code { + + [Parameter] + public string _serverIdString { get; set; } + + private ulong _serverId {get; set; } + + private List _discordServers {get; set;} = new List(); + + public DiscordSettings _discordSettings {get; set;} = new DiscordSettings(); + + protected override async Task OnInitializedAsync() + { + var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); + + if(!string.IsNullOrEmpty(_serverIdString) && ulong.TryParse(_serverIdString, out ulong id)) + { + _serverId = id; + _discordServers = await DiscordService.GetServers(); + _discordSettings = DiscordService.GetDiscordSettings(_serverId); + if(_discordSettings.DiscordSettingsId == 0) + { + _discordSettings.DiscordSettingsId = _serverId; + } + } + else + { + NavigationManager.NavigateTo("discordoverview"); + } + } + + private async Task HandleValidSubmit() + { + DiscordService.AddOrEditDiscordSettings(_discordSettings); + NavigationManager.NavigateTo("discordoverview"); + } +} \ No newline at end of file diff --git a/Lieb/Pages/User/UserEdit.razor b/Lieb/Pages/User/UserEdit.razor index 4364038..9e36585 100644 --- a/Lieb/Pages/User/UserEdit.razor +++ b/Lieb/Pages/User/UserEdit.razor @@ -59,7 +59,6 @@ } - hi
@code { diff --git a/Lieb/Shared/NavMenu.razor b/Lieb/Shared/NavMenu.razor index 19fd94a..b02ecc4 100644 --- a/Lieb/Shared/NavMenu.razor +++ b/Lieb/Shared/NavMenu.razor @@ -65,6 +65,15 @@ + + + + +