From 96e8c7f71e43a6e1d4771178d9a3aabd166a4704 Mon Sep 17 00:00:00 2001 From: jvyden Date: Fri, 5 Aug 2022 19:07:43 -0400 Subject: [PATCH] Add support for dismissing cases --- .../Admin/ModerationCaseController.cs | 52 +++++++++++++++++++ .../Pages/Admin/AdminPanelUsersPage.cshtml | 1 + .../Pages/CasePage.cshtml.cs | 2 + .../Partials/ModerationCasePartial.cshtml | 22 +++++--- .../Administration/PermissionLevel.cs | 10 ++-- ProjectLighthouse/PlayerData/Profiles/User.cs | 9 ++++ 6 files changed, 86 insertions(+), 10 deletions(-) create mode 100644 ProjectLighthouse.Servers.Website/Controllers/Admin/ModerationCaseController.cs diff --git a/ProjectLighthouse.Servers.Website/Controllers/Admin/ModerationCaseController.cs b/ProjectLighthouse.Servers.Website/Controllers/Admin/ModerationCaseController.cs new file mode 100644 index 00000000..00464a47 --- /dev/null +++ b/ProjectLighthouse.Servers.Website/Controllers/Admin/ModerationCaseController.cs @@ -0,0 +1,52 @@ +using LBPUnion.ProjectLighthouse.Administration; +using LBPUnion.ProjectLighthouse.PlayerData.Profiles; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace LBPUnion.ProjectLighthouse.Servers.Website.Controllers.Admin; + +[ApiController] +[Route("moderation/case/{id:int}")] +public class ModerationCaseController : ControllerBase +{ + private readonly Database database; + + public ModerationCaseController(Database database) + { + this.database = database; + } + + [HttpGet("dismiss")] + public async Task DismissCase([FromRoute] int id) + { + User? user = this.database.UserFromWebRequest(this.Request); + if (user == null || !user.IsModerator) return this.StatusCode(403, ""); + + ModerationCase? @case = await this.database.Cases.FirstOrDefaultAsync(c => c.CaseId == id); + if (@case == null) return this.NotFound(); + + @case.DismissedAt = DateTime.Now; + @case.DismisserId = user.UserId; + + await this.database.SaveChangesAsync(); + + return this.Ok(); + } + + [HttpGet("undoDismiss")] + public async Task UndoDismissCase([FromRoute] int id) + { + User? user = this.database.UserFromWebRequest(this.Request); + if (user == null || !user.IsModerator) return this.StatusCode(403, ""); + + ModerationCase? @case = await this.database.Cases.FirstOrDefaultAsync(c => c.CaseId == id); + if (@case == null) return this.NotFound(); + + @case.DismissedAt = null; + @case.DismisserId = null; + + await this.database.SaveChangesAsync(); + + return this.Ok(); + } +} \ No newline at end of file diff --git a/ProjectLighthouse.Servers.Website/Pages/Admin/AdminPanelUsersPage.cshtml b/ProjectLighthouse.Servers.Website/Pages/Admin/AdminPanelUsersPage.cshtml index dab80756..375df0b8 100644 --- a/ProjectLighthouse.Servers.Website/Pages/Admin/AdminPanelUsersPage.cshtml +++ b/ProjectLighthouse.Servers.Website/Pages/Admin/AdminPanelUsersPage.cshtml @@ -61,6 +61,7 @@