Added discord settings

This commit is contained in:
Sarah Faey 2022-11-18 00:14:16 +01:00
parent c087c32e3c
commit c3ed05fa7e
7 changed files with 170 additions and 1 deletions

View file

@ -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

View file

@ -26,6 +26,7 @@ namespace Lieb.Data
public DbSet<RaidSignUp> RaidSignUps { get; set; }
public DbSet<RaidLog> RaidLogs { get; set; }
public DbSet<DiscordRaidMessage> DiscordRaidMessages { get; set; }
public DbSet<DiscordSettings> DiscordSettings { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
@ -43,6 +44,7 @@ namespace Lieb.Data
modelBuilder.Entity<RaidSignUp>().ToTable("RaidSignUp");
modelBuilder.Entity<RaidLog>().ToTable("RaidLog");
modelBuilder.Entity<DiscordRaidMessage>().ToTable("DiscordRaidMessage");
modelBuilder.Entity<DiscordSettings>().ToTable("DiscordSettings");
}
}
}

View file

@ -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;}
}
}

View file

@ -0,0 +1,39 @@
@page "/discordoverview"
@using Lieb.Data
@using Lieb.Models
@using Lieb.Models.GuildWars2
@using SharedClasses.SharedModels
@inject DiscordService DiscordService
<h3>Discord Overview</h3>
<AuthorizeView Policy="@Constants.Roles.Admin.Name">
<Authorized>
<table>
<tr>
<th>Servers</th>
</tr>
@foreach (DiscordServer server in _discordServers)
{
<tr>
<td class="nav-item px-3">
@{string navLink = $"discordsettings/{@server.Id}";}
<NavLink class="nav-link" href="@navLink">@server.Name</NavLink>
</td>
</tr>
}
</table>
</Authorized>
</AuthorizeView>
@code
{
private List<DiscordServer> _discordServers = new List<DiscordServer>();
protected override async Task OnInitializedAsync()
{
_discordServers = await DiscordService.GetServers();
}
}

View file

@ -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
<h3>User Edit</h3>
<AuthorizeView Policy="@Constants.Roles.Admin.Name" Context="authorizationContext">
<Authorized>
<EditForm Model="@_discordSettings" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<p> Log Channel
<InputSelect @bind-Value="_discordSettings.DiscordLogChannel">
@{
List<DiscordChannel> channels = _discordServers.FirstOrDefault(s => s.Id == _serverId, new DiscordServer()).Channels;
<option value="0">No Server Logs</option>
@foreach(DiscordChannel item in channels)
{
<option value="@item.Id">@item.Name</option>
}
}
</InputSelect>
</p>
<p>
<label>
<InputCheckbox @bind-Value="_discordSettings.ChangeUserNames" />
Change User Names
</label>
</p>
<ValidationSummary />
<button type="submit">Submit</button>
</EditForm>
</Authorized>
</AuthorizeView>
@code {
[Parameter]
public string _serverIdString { get; set; }
private ulong _serverId {get; set; }
private List<DiscordServer> _discordServers {get; set;} = new List<DiscordServer>();
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");
}
}

View file

@ -59,7 +59,6 @@
</tr>
}
</table>
hi
<br />
@code {

View file

@ -65,6 +65,15 @@
</div>
</Authorized>
</AuthorizeView>
<AuthorizeView Policy="@Constants.Roles.Admin.Name">
<Authorized>
<div class="nav-item px-3">
<NavLink class="nav-link" href="discordoverview">
<span class="oi oi-list-rich" aria-hidden="true"></span> Discord Overview
</NavLink>
</div>
</Authorized>
</AuthorizeView>
</nav>
</div>