diff --git a/Lieb/Data/RaidService.cs b/Lieb/Data/RaidService.cs index cfcc6fb..e452fc1 100644 --- a/Lieb/Data/RaidService.cs +++ b/Lieb/Data/RaidService.cs @@ -96,6 +96,7 @@ namespace Lieb.Data await context.SaveChangesAsync(); context.Raids.Remove(raid); await context.SaveChangesAsync(); + await _discordService.DeleteRaidMessages(raid); if(raid.EndTimeUTC > DateTimeOffset.UtcNow) { @@ -423,6 +424,41 @@ namespace Lieb.Data using var context = _contextFactory.CreateDbContext(); await context.RaidLogs.AddAsync(log); await context.SaveChangesAsync(); + + await SendDiscordSignUpLogMessage(signUp, userName, signedUpBy); + } + + public async Task SendDiscordSignUpLogMessage(RaidSignUp signUp, string userName, ulong signedUpBy = 0) + { + using var context = _contextFactory.CreateDbContext(); + + Raid raid = context.Raids + .Include(r => r.DiscordRaidMessages) + .ToList() + .FirstOrDefault(r => r.RaidId == signUp.RaidId, new Raid()); + + if(raid.DiscordRaidMessages.Count > 0) + { + string signedUpByUserName = userName; + if(signedUpBy > 0) + { + LiebUser signedUpByUser = context.LiebUsers + .ToList() + .FirstOrDefault(u => u.Id == signedUpBy, new LiebUser()); + signedUpByUserName = signedUpByUser.Name; + } + + string message = $"{raid.Title}: {signedUpByUserName} signed up {userName} as {signUp.SignUpType.ToString()}"; + foreach(DiscordRaidMessage discordMessage in raid.DiscordRaidMessages) + { + DiscordSettings settings = _discordService.GetDiscordSettings(discordMessage.DiscordGuildId); + if(settings.DiscordLogChannel > 0) + { + await _discordService.SendChannelMessage(discordMessage.DiscordGuildId, settings.DiscordLogChannel, message); + } + } + } + await context.SaveChangesAsync(); } public async Task SendReminders()