diff --git a/Lieb/Data/RaidService.cs b/Lieb/Data/RaidService.cs index f6975c8..0f9a88c 100644 --- a/Lieb/Data/RaidService.cs +++ b/Lieb/Data/RaidService.cs @@ -410,24 +410,22 @@ namespace Lieb.Data public async Task SendReminders() { using var context = _contextFactory.CreateDbContext(); - DateTimeOffset now = DateTimeOffset.UtcNow; - List raids = context.Raids - .Include(r => r.Reminders) + List reminders = context.RaidReminders + .Include(r => r.Raid) + .Where(r => !r.Sent) .ToList(); - - foreach(Raid raid in raids.Where(r => r.StartTimeUTC > now)) + + DateTimeOffset now = DateTimeOffset.UtcNow; + foreach(RaidReminder reminder in reminders.Where(r => r.ReminderTime < now)) { - foreach(RaidReminder reminder in raid.Reminders.Where(reminder => !reminder.Sent && raid.StartTimeUTC.AddHours(-reminder.HoursBeforeRaid) < DateTime.UtcNow)) + switch(reminder.Type) { - switch(reminder.Type) - { - case RaidReminder.ReminderType.User: - await _discordService.SendUserReminder(reminder); - break; - case RaidReminder.ReminderType.Channel: - await _discordService.SendChannelReminder(reminder); - break; - } + case RaidReminder.ReminderType.User: + await _discordService.SendUserReminder(reminder); + break; + case RaidReminder.ReminderType.Channel: + await _discordService.SendChannelReminder(reminder); + break; } } } diff --git a/Lieb/Models/GuildWars2/Raid/RaidBase.cs b/Lieb/Models/GuildWars2/Raid/RaidBase.cs index b48ba66..2156414 100644 --- a/Lieb/Models/GuildWars2/Raid/RaidBase.cs +++ b/Lieb/Models/GuildWars2/Raid/RaidBase.cs @@ -60,7 +60,8 @@ namespace Lieb.Models.GuildWars2.Raid { Description = role.Description, Name = role.Name, - Spots = role.Spots + Spots = role.Spots, + IsRandomSignUpRole = role.IsRandomSignUpRole }); } foreach (RaidReminder reminder in template.Reminders) @@ -69,10 +70,11 @@ namespace Lieb.Models.GuildWars2.Raid { DiscordServerId = reminder.DiscordServerId, DiscordChannelId = reminder.DiscordChannelId, - HoursBeforeRaid = reminder.HoursBeforeRaid, + ReminderTime = reminder.ReminderTime, Message = reminder.Message, Sent = reminder.Sent, - Type = reminder.Type + Type = reminder.Type, + RaidId = reminder.RaidId }); } foreach (DiscordRaidMessage message in template.DiscordRaidMessages) diff --git a/Lieb/Models/GuildWars2/Raid/RaidReminder.cs b/Lieb/Models/GuildWars2/Raid/RaidReminder.cs index d5f3589..072b831 100644 --- a/Lieb/Models/GuildWars2/Raid/RaidReminder.cs +++ b/Lieb/Models/GuildWars2/Raid/RaidReminder.cs @@ -21,7 +21,7 @@ namespace Lieb.Models.GuildWars2.Raid public string Message { get; set; } = string.Empty; [Required] - public double HoursBeforeRaid { get; set; } + public DateTimeOffset ReminderTime { get; set; } = DateTime.Now; public ulong DiscordServerId { get; set; }