From ed7a1905fdf7c1db8e0397a41f4637da60067510 Mon Sep 17 00:00:00 2001 From: Sarah Faey Date: Sun, 13 Nov 2022 22:07:31 +0100 Subject: [PATCH] changed reminders to use DateTimeOffset --- Lieb/Data/RaidService.cs | 28 ++++++++++----------- Lieb/Models/GuildWars2/Raid/RaidBase.cs | 8 +++--- Lieb/Models/GuildWars2/Raid/RaidReminder.cs | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) 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; }