Added SendMessageToRaidUsers

Message is sent, if furure Raid is deleted
This commit is contained in:
Sarah Faey 2022-11-14 09:12:17 +01:00
parent ed7a1905fd
commit e9b353527f
5 changed files with 32 additions and 23 deletions

View file

@ -111,21 +111,27 @@ namespace Lieb.Data
return new List<DiscordServer>();
}
public async Task SendUserReminder(RaidReminder reminder)
public async Task SendUserReminder(RaidReminder reminder, Raid raid)
{
if (await SendMessageToRaidUsers(reminder.Message, raid))
{
using var context = _contextFactory.CreateDbContext();
reminder.Sent = true;
context.Update(reminder);
await context.SaveChangesAsync();
}
}
public async Task<bool> SendMessageToRaidUsers(string message, Raid raid)
{
try
{
using var context = _contextFactory.CreateDbContext();
var httpClient = _httpClientFactory.CreateClient(Constants.HttpClientName);
Raid raid = context.Raids
.Include(r => r.SignUps)
.ThenInclude(s => s.LiebUser)
.FirstOrDefault(r => r.RaidId == reminder.RaidId);
if(raid == null) return false;
if(raid == null) return;
ApiUserReminder apiReminder = ConvertUserReminder(reminder, raid);
ApiUserReminder apiReminder = ConvertUserReminder(message, raid);
var raidItemJson = new StringContent(
JsonSerializer.Serialize(apiReminder),
@ -134,14 +140,10 @@ namespace Lieb.Data
var httpResponseMessage = await httpClient.PostAsync("raid/SendUserReminder", raidItemJson);
if (httpResponseMessage.IsSuccessStatusCode)
{
reminder.Sent = true;
context.Update(reminder);
await context.SaveChangesAsync();
}
return httpResponseMessage.IsSuccessStatusCode;
}
catch {}
return false;
}
public async Task SendChannelReminder(RaidReminder reminder)
@ -256,11 +258,11 @@ namespace Lieb.Data
return apiMessages;
}
private ApiUserReminder ConvertUserReminder(RaidReminder reminder, Raid raid)
private ApiUserReminder ConvertUserReminder(string message, Raid raid)
{
ApiUserReminder apiReminder = new ApiUserReminder()
{
Message = reminder.Message
Message = message
};
apiReminder.UserIds = new List<ulong>();
foreach(RaidSignUp signUp in raid.SignUps)

View file

@ -96,6 +96,10 @@ namespace Lieb.Data
context.Raids.Remove(raid);
await context.SaveChangesAsync();
await _discordService.DeleteRaidMessages(raid);
if(raid.EndTimeUTC > DateTimeOffset.UtcNow)
{
await _discordService.SendMessageToRaidUsers($"Raid \"{raid.Title}\": was deleted.", raid);
}
}
public async Task SignUp(int raidId, ulong liebUserId, int guildWars2AccountId, int plannedRoleId, SignUpType signUpType)
@ -415,13 +419,13 @@ namespace Lieb.Data
.Where(r => !r.Sent)
.ToList();
DateTimeOffset now = DateTimeOffset.UtcNow;
foreach(RaidReminder reminder in reminders.Where(r => r.ReminderTime < now))
DateTimeOffset utcNow = DateTimeOffset.UtcNow;
foreach(RaidReminder reminder in reminders.Where(r => r.ReminderTimeUTC < utcNow))
{
switch(reminder.Type)
{
case RaidReminder.ReminderType.User:
await _discordService.SendUserReminder(reminder);
await _discordService.SendUserReminder(reminder, reminder.Raid);
break;
case RaidReminder.ReminderType.Channel:
await _discordService.SendChannelReminder(reminder);

View file

@ -83,6 +83,10 @@ namespace Lieb.Data
template.StartTime = template.StartTime.AddDays(template.Interval);
template.EndTime = template.EndTime.AddDays(template.Interval);
template.FreeForAllTime = template.FreeForAllTime.AddDays(template.Interval);
foreach(RaidReminder reminder in template.Reminders)
{
reminder.ReminderTimeUTC = reminder.ReminderTimeUTC.AddDays(template.Interval);
}
}
}
}