diff --git a/Lieb/Data/RaidService.cs b/Lieb/Data/RaidService.cs index d22fdcb..cfcc6fb 100644 --- a/Lieb/Data/RaidService.cs +++ b/Lieb/Data/RaidService.cs @@ -92,6 +92,7 @@ namespace Lieb.Data context.RaidRoles.RemoveRange(raid.Roles); context.RaidLogs.RemoveRange(raid.RaidLogs); context.RaidReminders.RemoveRange(raid.Reminders); + context.DiscordRaidMessages.RemoveRange(raid.DiscordRaidMessages); await context.SaveChangesAsync(); context.Raids.Remove(raid); await context.SaveChangesAsync(); diff --git a/Lieb/Data/RaidTemplateService.cs b/Lieb/Data/RaidTemplateService.cs index d0af50b..e8b75d1 100644 --- a/Lieb/Data/RaidTemplateService.cs +++ b/Lieb/Data/RaidTemplateService.cs @@ -31,7 +31,7 @@ namespace Lieb.Data .FirstOrDefault(t => t.RaidTemplateId == raidTemplateId); } - public async Task AddOrEditTemplate(RaidTemplate template, List rolesToDelete, List remindersToDelete) + public async Task AddOrEditTemplate(RaidTemplate template, List rolesToDelete, List remindersToDelete, List messagesToDelete) { if (template != null) { @@ -45,6 +45,7 @@ namespace Lieb.Data context.Update(template); context.RaidRoles.RemoveRange(rolesToDelete); context.RaidReminders.RemoveRange(remindersToDelete); + context.DiscordRaidMessages.RemoveRange(messagesToDelete); } await context.SaveChangesAsync(); } @@ -56,6 +57,7 @@ namespace Lieb.Data RaidTemplate template = GetTemplate(raidTemplateId); context.RaidRoles.RemoveRange(template.Roles); context.RaidReminders.RemoveRange(template.Reminders); + context.DiscordRaidMessages.RemoveRange(template.DiscordRaidMessages); await context.SaveChangesAsync(); context.RaidTemplates.Remove(template); await context.SaveChangesAsync(); @@ -67,6 +69,7 @@ namespace Lieb.Data RaidTemplate? template = await context.RaidTemplates .Include(r => r.Roles) .Include(r => r.Reminders) + .Include(r => r.DiscordRaidMessages) .FirstOrDefaultAsync(t => t.RaidTemplateId == raidTempalteId); if(template == null) { diff --git a/Lieb/Pages/Raids/RaidEdit/RaidTemplateEdit.razor b/Lieb/Pages/Raids/RaidEdit/RaidTemplateEdit.razor index 1378c5c..431b1eb 100644 --- a/Lieb/Pages/Raids/RaidEdit/RaidTemplateEdit.razor +++ b/Lieb/Pages/Raids/RaidEdit/RaidTemplateEdit.razor @@ -164,6 +164,10 @@

} + + + + @@ -191,6 +195,13 @@ private string _userTimeZone = string.Empty; private List _rolesToDelete = new List(); + private List _remindersToDelete = new List(); + private List _messagesToDelete = new List(); + + private List _staticReminders = new List(); + private List _dynamicReminders = new List(); + + private List _discordServers = new List(); protected override async Task OnInitializedAsync() @@ -218,17 +229,33 @@ _raidDate = _startTime.Date; _freeForAllTime = _template.FreeForAllTime; _freeForAllDate = _freeForAllTime.Date; + foreach(RaidReminder reminder in _template.Reminders) + { + if(reminder.TimeType == RaidReminder.ReminderTimeType.Static) + { + DateTimeOffset reminderTime = await TimeZoneService.GetLocalDateTime(reminder.ReminderTimeUTC); + DateTimeOffset reminderDate = (await TimeZoneService.GetLocalDateTime(reminder.ReminderTimeUTC)).Date; + _staticReminders.Add(new StaticRaidReminder(reminder, reminderDate, reminderTime)); + } + else + { + _dynamicReminders.Add(new DynamicRaidReminder(reminder, _template.StartTimeUTC)); + } + } } else { _template = new RaidTemplate(); + _dynamicReminders.Add(DynamicRaidReminder.Create30MinReminder()); } } else { _template = new RaidTemplate(); + _dynamicReminders.Add(DynamicRaidReminder.Create30MinReminder()); } _userTimeZone = await TimeZoneService.GetUserTimeZone(); + _discordServers = await DiscordService.GetServers(); } async Task AddRoleClicked() @@ -293,7 +320,19 @@ _template.RaidOwnerId = _user.Id; } - await RaidTemplateService.AddOrEditTemplate(_template, _rolesToDelete, new List()); + _raid.Reminders.Clear(); + foreach(DynamicRaidReminder reminder in _dynamicReminders) + { + reminder.ReminderTimeUTC = _raid.StartTimeUTC - new TimeSpan(reminder.DaysBeforeRaid, reminder.HoursBeforeRaid, reminder.MinutesBeforeRaid, 0); + _raid.Reminders.Add(reminder); + } + foreach(StaticRaidReminder reminder in _staticReminders) + { + reminder.ReminderTimeUTC = await TimeZoneService.GetUTCDateTime(reminder.ReminderDate.Date + reminder.ReminderTime.TimeOfDay); + _raid.Reminders.Add(reminder); + } + + await RaidTemplateService.AddOrEditTemplate(_template, _rolesToDelete, _remindersToDelete, _messagesToDelete); NavigationManager.NavigateTo("raidtemplateoverview"); } } \ No newline at end of file