From a5049257521b1a48fe892a7ddf52fb3b170ec429 Mon Sep 17 00:00:00 2001 From: Sarah Faey Date: Tue, 15 Nov 2022 20:23:48 +0100 Subject: [PATCH] reworked Logging changes --- .../CommandHandlers/SelectMenuHandler.cs | 2 +- Lieb/Data/LiebContext.cs | 4 +- Lieb/Data/RaidRandomizerService.cs | 2 +- Lieb/Data/RaidService.cs | 41 +++++------ Lieb/Models/GuildWars2/Raid/Raid.cs | 2 +- Lieb/Models/GuildWars2/Raid/RaidLog.cs | 72 +++++++++++++++++++ .../GuildWars2/Raid/RaidSignUpHistory.cs | 28 -------- 7 files changed, 93 insertions(+), 58 deletions(-) create mode 100644 Lieb/Models/GuildWars2/Raid/RaidLog.cs delete mode 100644 Lieb/Models/GuildWars2/Raid/RaidSignUpHistory.cs diff --git a/DiscordBot/CommandHandlers/SelectMenuHandler.cs b/DiscordBot/CommandHandlers/SelectMenuHandler.cs index b8aa1a8..1e01965 100644 --- a/DiscordBot/CommandHandlers/SelectMenuHandler.cs +++ b/DiscordBot/CommandHandlers/SelectMenuHandler.cs @@ -38,7 +38,7 @@ namespace DiscordBot.CommandHandlers ulong.TryParse(ids[3],out userId); } await ManageSignUp(ids[2], parsedRaidId, component, userId); - await component.RespondAsync("successfully signed up"); + await component.RespondAsync("successfully signed up", ephemeral: true); break; case Constants.ComponentIds.SIGN_UP_EXTERNAL_DROP_DOWN: await component.RespondWithModalAsync(CreateUserNameModal(parsedRaidId, int.Parse(component.Data.Values.First()))); diff --git a/Lieb/Data/LiebContext.cs b/Lieb/Data/LiebContext.cs index 6184920..ae7e715 100644 --- a/Lieb/Data/LiebContext.cs +++ b/Lieb/Data/LiebContext.cs @@ -24,7 +24,7 @@ namespace Lieb.Data public DbSet RaidTemplates { get; set; } public DbSet RaidReminders { get; set; } public DbSet RaidSignUps { get; set; } - public DbSet RaidSignUpHistories { get; set; } + public DbSet RaidLogs { get; set; } public DbSet DiscordRaidMessages { get; set; } @@ -41,7 +41,7 @@ namespace Lieb.Data modelBuilder.Entity().ToTable("RaidTemplate"); modelBuilder.Entity().ToTable("RaidReminder"); modelBuilder.Entity().ToTable("RaidSignUp"); - modelBuilder.Entity().ToTable("RaidSignUpHistory"); + modelBuilder.Entity().ToTable("RaidLog"); modelBuilder.Entity().ToTable("DiscordRaidMessage"); } } diff --git a/Lieb/Data/RaidRandomizerService.cs b/Lieb/Data/RaidRandomizerService.cs index 436ff98..5461747 100644 --- a/Lieb/Data/RaidRandomizerService.cs +++ b/Lieb/Data/RaidRandomizerService.cs @@ -19,7 +19,7 @@ namespace Lieb.Data using var context = _contextFactory.CreateDbContext(); Raid? raid = context.Raids .Include(r => r.Roles) - .Include(r => r.SignUpHistory) + .Include(r => r.RaidLogs) .Include(r => r.Reminders) .Include(r => r.SignUps) .ThenInclude(s => s.LiebUser) diff --git a/Lieb/Data/RaidService.cs b/Lieb/Data/RaidService.cs index df568d3..361313f 100644 --- a/Lieb/Data/RaidService.cs +++ b/Lieb/Data/RaidService.cs @@ -20,7 +20,7 @@ namespace Lieb.Data using var context = _contextFactory.CreateDbContext(); return context.Raids .Include(r => r.Roles) - .Include(r => r.SignUpHistory) + .Include(r => r.RaidLogs) .Include(r => r.Reminders) .Include(r => r.SignUps) .ThenInclude(s => s.LiebUser) @@ -37,7 +37,7 @@ namespace Lieb.Data using var context = _contextFactory.CreateDbContext(); return context.Raids .Include(r => r.Roles) - .Include(r => r.SignUpHistory) + .Include(r => r.RaidLogs) .Include(r => r.Reminders) .Include(r => r.SignUps) .ThenInclude(s => s.LiebUser) @@ -90,7 +90,7 @@ namespace Lieb.Data Raid raid = GetRaid(raidId); context.RaidSignUps.RemoveRange(raid.SignUps); context.RaidRoles.RemoveRange(raid.Roles); - context.RaidSignUpHistories.RemoveRange(raid.SignUpHistory); + context.RaidLogs.RemoveRange(raid.RaidLogs); context.RaidReminders.RemoveRange(raid.Reminders); await context.SaveChangesAsync(); context.Raids.Remove(raid); @@ -125,9 +125,10 @@ namespace Lieb.Data RaidRoleId = plannedRoleId, SignUpType = signUpType }; + string userName = context.LiebUsers.FirstOrDefault(l => l.Id == liebUserId)?.Name; context.RaidSignUps.Add(signUp); await context.SaveChangesAsync(); - await LogSignUp(signUp, signedUpByUserId); + await LogSignUp(signUp, userName, signedUpByUserId); } await _discordService.PostRaidMessage(raidId); } @@ -150,7 +151,7 @@ namespace Lieb.Data }; context.RaidSignUps.Add(signUp); await context.SaveChangesAsync(); - await LogSignUp(signUp, signedUpByUserId); + await LogSignUp(signUp, userName, signedUpByUserId); await _discordService.PostRaidMessage(raidId); } @@ -162,7 +163,7 @@ namespace Lieb.Data context.RaidSignUps.RemoveRange(signUps); //change to SignedOff - RaidSignUp? signUp = context.RaidSignUps.FirstOrDefault(x => x.RaidId == raidId && x.LiebUserId == liebUserId && x.SignUpType != SignUpType.Flex); + RaidSignUp? signUp = context.RaidSignUps.Include(s => s.LiebUser).FirstOrDefault(x => x.RaidId == raidId && x.LiebUserId == liebUserId && x.SignUpType != SignUpType.Flex); if (signUp != null) { signUp.SignUpType = SignUpType.SignedOff; @@ -174,7 +175,7 @@ namespace Lieb.Data context.RaidRoles.Remove(signUp.RaidRole); signUp.RaidRole = raid.Roles.FirstOrDefault(r => r.IsRandomSignUpRole, CreateRandomSignUpRole(raid.RaidType)); } - await LogSignUp(signUp, signedOffByUserId); + await LogSignUp(signUp, signUp.LiebUser.Name, signedOffByUserId); } await context.SaveChangesAsync(); await _discordService.PostRaidMessage(raidId); @@ -192,7 +193,7 @@ namespace Lieb.Data if(signUp != null) { signUp.SignUpType = SignUpType.SignedOff; - await LogSignUp(signUp, signedOffByUserId); + await LogSignUp(signUp, userName, signedOffByUserId); } await _discordService.PostRaidMessage(raidId); } @@ -218,7 +219,7 @@ namespace Lieb.Data using var context = _contextFactory.CreateDbContext(); - List signUps = context.RaidSignUps.Where(x => x.RaidId == raidId && x.LiebUserId == liebUserId).ToList(); + List signUps = context.RaidSignUps.Where(x => x.RaidId == raidId && x.LiebUserId == liebUserId).Include(s => s.LiebUser).ToList(); RaidSignUp? signUp = signUps.FirstOrDefault(x => x.SignUpType != SignUpType.Flex); RaidSignUp? flexSignUp = signUps.FirstOrDefault(x => x.SignUpType == SignUpType.Flex && x.RaidRoleId == plannedRoleId); @@ -234,7 +235,7 @@ namespace Lieb.Data { signUp.RaidRoleId = plannedRoleId; signUp.SignUpType = signUpType; - await LogSignUp(signUp); + await LogSignUp(signUp, signUp.LiebUser.Name); } context.SaveChanges(); if(postChanges) @@ -391,23 +392,13 @@ namespace Lieb.Data return true; } - private async Task LogSignUp(RaidSignUp signUp, ulong signedUpBy = 0) + private async Task LogSignUp(RaidSignUp signUp, string userName, ulong signedUpBy = 0) { - RaidSignUpHistory history = new RaidSignUpHistory() - { - RaidId = signUp.RaidId, - UserId = signUp.LiebUserId, - SignUpType = signUp.SignUpType, - Time = DateTimeOffset.UtcNow, - UserName = signUp.ExternalUserName, - GuildWars2AccountId = signUp.GuildWars2AccountId - }; - if(signedUpBy != 0) - { - history.UserId = signedUpBy; - } + ulong userId = signedUpBy > 0 ? signedUpBy : signUp.LiebUserId; + RaidLog log = RaidLog.CreateSignUpLog(userId, signUp, userName); + using var context = _contextFactory.CreateDbContext(); - await context.RaidSignUpHistories.AddAsync(history); + await context.RaidLogs.AddAsync(log); await context.SaveChangesAsync(); } diff --git a/Lieb/Models/GuildWars2/Raid/Raid.cs b/Lieb/Models/GuildWars2/Raid/Raid.cs index 7f8c310..51ae9e7 100644 --- a/Lieb/Models/GuildWars2/Raid/Raid.cs +++ b/Lieb/Models/GuildWars2/Raid/Raid.cs @@ -24,7 +24,7 @@ namespace Lieb.Models.GuildWars2.Raid public ICollection SignUps { get; set; } = new HashSet(); - public ICollection SignUpHistory { get; set; } = new HashSet(); + public ICollection RaidLogs { get; set; } = new HashSet(); public Raid() { } diff --git a/Lieb/Models/GuildWars2/Raid/RaidLog.cs b/Lieb/Models/GuildWars2/Raid/RaidLog.cs new file mode 100644 index 0000000..bb9c6f8 --- /dev/null +++ b/Lieb/Models/GuildWars2/Raid/RaidLog.cs @@ -0,0 +1,72 @@ + +using System.Text.Json; + +namespace Lieb.Models.GuildWars2.Raid +{ + public class RaidLog + { + public enum LogType + { + Raid = 1, + RaidTemplate = 2, + RaidSignUp = 3 + } + + public int RaidLogId { get; set; } + + public LogType Type {get; set;} + + public ulong UserId {get; set;} + + public int? RaidId { get; set; } + + public int? RaidTemplateId { get; set; } + + public string LogEntry {get; set;} = string.Empty; + + public DateTimeOffset Time { get; set; } = DateTimeOffset.UtcNow; + + public LiebUser User {get; set;} + + public Raid? Raid { get; set; } + + public RaidTemplate? RaidTemplate { get; set; } + + public static RaidLog CreateRaidLog(ulong userId, Raid raid) + { + return new RaidLog() + { + Type = LogType.Raid, + UserId = userId, + RaidId = raid.RaidId, + LogEntry = JsonSerializer.Serialize(raid), + Time = DateTimeOffset.UtcNow + }; + } + + public static RaidLog CreateSignUpLog(ulong userId, RaidSignUp signUp, string signedUpUserName) + { + string message = $"changed Status of {signedUpUserName} to: {signUp.SignUpType.ToString()}"; + return new RaidLog() + { + Type = LogType.RaidSignUp, + UserId = userId, + RaidId = signUp.RaidId, + LogEntry = message, + Time = DateTimeOffset.UtcNow + }; + } + + public static RaidLog CreateRaidTemplateLog(ulong userId, RaidTemplate template) + { + return new RaidLog() + { + Type = LogType.RaidTemplate, + UserId = userId, + RaidTemplateId = template.RaidTemplateId, + LogEntry = JsonSerializer.Serialize(template), + Time = DateTimeOffset.UtcNow + }; + } + } +} diff --git a/Lieb/Models/GuildWars2/Raid/RaidSignUpHistory.cs b/Lieb/Models/GuildWars2/Raid/RaidSignUpHistory.cs deleted file mode 100644 index 2e0d847..0000000 --- a/Lieb/Models/GuildWars2/Raid/RaidSignUpHistory.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace Lieb.Models.GuildWars2.Raid -{ - public class RaidSignUpHistory - { - public int RaidSignUpHistoryId { get; set; } - - public int RaidId { get; set; } - - public ulong UserId {get; set;} - public int GuildWars2AccountId { get; set; } - - //public ulong SignedUpByUserId {get; set;} - - public string UserName {get; set;} = string.Empty; - - public DateTimeOffset Time { get; set; } = DateTimeOffset.Now; - - public SignUpType SignUpType { get; set; } - - public LiebUser User {get; set;} - - //public LiebUser SignedUpByUser {get; set;} - - public Raid Raid { get; set; } - - public GuildWars2Account GuildWars2Account { get; set; } - } -}