changed reminders to use DateTimeOffset

This commit is contained in:
Sarah Faey 2022-11-13 22:07:31 +01:00
parent 62dc3d1efa
commit ed7a1905fd
3 changed files with 19 additions and 19 deletions

View file

@ -410,24 +410,22 @@ namespace Lieb.Data
public async Task SendReminders() public async Task SendReminders()
{ {
using var context = _contextFactory.CreateDbContext(); using var context = _contextFactory.CreateDbContext();
DateTimeOffset now = DateTimeOffset.UtcNow; List<RaidReminder> reminders = context.RaidReminders
List<Raid> raids = context.Raids .Include(r => r.Raid)
.Include(r => r.Reminders) .Where(r => !r.Sent)
.ToList(); .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);
case RaidReminder.ReminderType.User: break;
await _discordService.SendUserReminder(reminder); case RaidReminder.ReminderType.Channel:
break; await _discordService.SendChannelReminder(reminder);
case RaidReminder.ReminderType.Channel: break;
await _discordService.SendChannelReminder(reminder);
break;
}
} }
} }
} }

View file

@ -60,7 +60,8 @@ namespace Lieb.Models.GuildWars2.Raid
{ {
Description = role.Description, Description = role.Description,
Name = role.Name, Name = role.Name,
Spots = role.Spots Spots = role.Spots,
IsRandomSignUpRole = role.IsRandomSignUpRole
}); });
} }
foreach (RaidReminder reminder in template.Reminders) foreach (RaidReminder reminder in template.Reminders)
@ -69,10 +70,11 @@ namespace Lieb.Models.GuildWars2.Raid
{ {
DiscordServerId = reminder.DiscordServerId, DiscordServerId = reminder.DiscordServerId,
DiscordChannelId = reminder.DiscordChannelId, DiscordChannelId = reminder.DiscordChannelId,
HoursBeforeRaid = reminder.HoursBeforeRaid, ReminderTime = reminder.ReminderTime,
Message = reminder.Message, Message = reminder.Message,
Sent = reminder.Sent, Sent = reminder.Sent,
Type = reminder.Type Type = reminder.Type,
RaidId = reminder.RaidId
}); });
} }
foreach (DiscordRaidMessage message in template.DiscordRaidMessages) foreach (DiscordRaidMessage message in template.DiscordRaidMessages)

View file

@ -21,7 +21,7 @@ namespace Lieb.Models.GuildWars2.Raid
public string Message { get; set; } = string.Empty; public string Message { get; set; } = string.Empty;
[Required] [Required]
public double HoursBeforeRaid { get; set; } public DateTimeOffset ReminderTime { get; set; } = DateTime.Now;
public ulong DiscordServerId { get; set; } public ulong DiscordServerId { get; set; }