Added reminders and discord messages to templates

This commit is contained in:
Sarah Faey 2022-11-17 22:01:26 +01:00
parent 5a5c3df1a9
commit 07a0e685f2
3 changed files with 45 additions and 2 deletions

View file

@ -92,6 +92,7 @@ namespace Lieb.Data
context.RaidRoles.RemoveRange(raid.Roles); context.RaidRoles.RemoveRange(raid.Roles);
context.RaidLogs.RemoveRange(raid.RaidLogs); context.RaidLogs.RemoveRange(raid.RaidLogs);
context.RaidReminders.RemoveRange(raid.Reminders); context.RaidReminders.RemoveRange(raid.Reminders);
context.DiscordRaidMessages.RemoveRange(raid.DiscordRaidMessages);
await context.SaveChangesAsync(); await context.SaveChangesAsync();
context.Raids.Remove(raid); context.Raids.Remove(raid);
await context.SaveChangesAsync(); await context.SaveChangesAsync();

View file

@ -31,7 +31,7 @@ namespace Lieb.Data
.FirstOrDefault(t => t.RaidTemplateId == raidTemplateId); .FirstOrDefault(t => t.RaidTemplateId == raidTemplateId);
} }
public async Task AddOrEditTemplate(RaidTemplate template, List<RaidRole> rolesToDelete, List<RaidReminder> remindersToDelete) public async Task AddOrEditTemplate(RaidTemplate template, List<RaidRole> rolesToDelete, List<RaidReminder> remindersToDelete, List<DiscordRaidMessage> messagesToDelete)
{ {
if (template != null) if (template != null)
{ {
@ -45,6 +45,7 @@ namespace Lieb.Data
context.Update(template); context.Update(template);
context.RaidRoles.RemoveRange(rolesToDelete); context.RaidRoles.RemoveRange(rolesToDelete);
context.RaidReminders.RemoveRange(remindersToDelete); context.RaidReminders.RemoveRange(remindersToDelete);
context.DiscordRaidMessages.RemoveRange(messagesToDelete);
} }
await context.SaveChangesAsync(); await context.SaveChangesAsync();
} }
@ -56,6 +57,7 @@ namespace Lieb.Data
RaidTemplate template = GetTemplate(raidTemplateId); RaidTemplate template = GetTemplate(raidTemplateId);
context.RaidRoles.RemoveRange(template.Roles); context.RaidRoles.RemoveRange(template.Roles);
context.RaidReminders.RemoveRange(template.Reminders); context.RaidReminders.RemoveRange(template.Reminders);
context.DiscordRaidMessages.RemoveRange(template.DiscordRaidMessages);
await context.SaveChangesAsync(); await context.SaveChangesAsync();
context.RaidTemplates.Remove(template); context.RaidTemplates.Remove(template);
await context.SaveChangesAsync(); await context.SaveChangesAsync();
@ -67,6 +69,7 @@ namespace Lieb.Data
RaidTemplate? template = await context.RaidTemplates RaidTemplate? template = await context.RaidTemplates
.Include(r => r.Roles) .Include(r => r.Roles)
.Include(r => r.Reminders) .Include(r => r.Reminders)
.Include(r => r.DiscordRaidMessages)
.FirstOrDefaultAsync(t => t.RaidTemplateId == raidTempalteId); .FirstOrDefaultAsync(t => t.RaidTemplateId == raidTempalteId);
if(template == null) if(template == null)
{ {

View file

@ -164,6 +164,10 @@
</p> </p>
} }
<DiscordMessageEdit _raid=@_raid _discordServers=@_discordServers _messagesToDelete=@_messagesToDelete ></DiscordMessageEdit>
<StaticReminderEdit _raidReminders=@_staticReminders _discordServers=@_discordServers _remindersToDelete=@_remindersToDelete ></StaticReminderEdit>
<DynamicReminderEdit _raidReminders=@_dynamicReminders _discordServers=@_discordServers _remindersToDelete=@_remindersToDelete ></DynamicReminderEdit>
<ValidationSummary /> <ValidationSummary />
<label class="validation-message" >@_errorMessage</label> <label class="validation-message" >@_errorMessage</label>
<button type="submit">Submit</button> <button type="submit">Submit</button>
@ -191,6 +195,13 @@
private string _userTimeZone = string.Empty; private string _userTimeZone = string.Empty;
private List<RaidRole> _rolesToDelete = new List<RaidRole>(); private List<RaidRole> _rolesToDelete = new List<RaidRole>();
private List<RaidReminder> _remindersToDelete = new List<RaidReminder>();
private List<DiscordRaidMessage> _messagesToDelete = new List<DiscordRaidMessage>();
private List<StaticRaidReminder> _staticReminders = new List<StaticRaidReminder>();
private List<DynamicRaidReminder> _dynamicReminders = new List<DynamicRaidReminder>();
private List<DiscordServer> _discordServers = new List<DiscordServer>();
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
@ -218,17 +229,33 @@
_raidDate = _startTime.Date; _raidDate = _startTime.Date;
_freeForAllTime = _template.FreeForAllTime; _freeForAllTime = _template.FreeForAllTime;
_freeForAllDate = _freeForAllTime.Date; _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 else
{ {
_template = new RaidTemplate(); _template = new RaidTemplate();
_dynamicReminders.Add(DynamicRaidReminder.Create30MinReminder());
} }
} }
else else
{ {
_template = new RaidTemplate(); _template = new RaidTemplate();
_dynamicReminders.Add(DynamicRaidReminder.Create30MinReminder());
} }
_userTimeZone = await TimeZoneService.GetUserTimeZone(); _userTimeZone = await TimeZoneService.GetUserTimeZone();
_discordServers = await DiscordService.GetServers();
} }
async Task AddRoleClicked() async Task AddRoleClicked()
@ -293,7 +320,19 @@
_template.RaidOwnerId = _user.Id; _template.RaidOwnerId = _user.Id;
} }
await RaidTemplateService.AddOrEditTemplate(_template, _rolesToDelete, new List<RaidReminder>()); _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"); NavigationManager.NavigateTo("raidtemplateoverview");
} }
} }