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