Added discord settings
This commit is contained in:
parent
c087c32e3c
commit
c3ed05fa7e
7 changed files with 170 additions and 1 deletions
|
@ -4,6 +4,7 @@ using static System.Net.Mime.MediaTypeNames;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Lieb.Models.GuildWars2.Raid;
|
using Lieb.Models.GuildWars2.Raid;
|
||||||
|
using Lieb.Models;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace Lieb.Data
|
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)
|
public async Task PostRaidMessage(int raidId)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace Lieb.Data
|
||||||
public DbSet<RaidSignUp> RaidSignUps { get; set; }
|
public DbSet<RaidSignUp> RaidSignUps { get; set; }
|
||||||
public DbSet<RaidLog> RaidLogs { get; set; }
|
public DbSet<RaidLog> RaidLogs { get; set; }
|
||||||
public DbSet<DiscordRaidMessage> DiscordRaidMessages { get; set; }
|
public DbSet<DiscordRaidMessage> DiscordRaidMessages { get; set; }
|
||||||
|
public DbSet<DiscordSettings> DiscordSettings { get; set; }
|
||||||
|
|
||||||
|
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
|
@ -43,6 +44,7 @@ namespace Lieb.Data
|
||||||
modelBuilder.Entity<RaidSignUp>().ToTable("RaidSignUp");
|
modelBuilder.Entity<RaidSignUp>().ToTable("RaidSignUp");
|
||||||
modelBuilder.Entity<RaidLog>().ToTable("RaidLog");
|
modelBuilder.Entity<RaidLog>().ToTable("RaidLog");
|
||||||
modelBuilder.Entity<DiscordRaidMessage>().ToTable("DiscordRaidMessage");
|
modelBuilder.Entity<DiscordRaidMessage>().ToTable("DiscordRaidMessage");
|
||||||
|
modelBuilder.Entity<DiscordSettings>().ToTable("DiscordSettings");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
11
Lieb/Models/DiscordSettings.cs
Normal file
11
Lieb/Models/DiscordSettings.cs
Normal 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;}
|
||||||
|
}
|
||||||
|
}
|
39
Lieb/Pages/Discord/DiscordOverview.razor
Normal file
39
Lieb/Pages/Discord/DiscordOverview.razor
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
82
Lieb/Pages/Discord/DiscordSettingsEdit.razor
Normal file
82
Lieb/Pages/Discord/DiscordSettingsEdit.razor
Normal 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");
|
||||||
|
}
|
||||||
|
}
|
|
@ -59,7 +59,6 @@
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
</table>
|
</table>
|
||||||
hi
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
|
@ -65,6 +65,15 @@
|
||||||
</div>
|
</div>
|
||||||
</Authorized>
|
</Authorized>
|
||||||
</AuthorizeView>
|
</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>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue