Added SendMessageToRaidUsers
Message is sent, if furure Raid is deleted
This commit is contained in:
parent
ed7a1905fd
commit
e9b353527f
5 changed files with 32 additions and 23 deletions
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,7 +70,7 @@ namespace Lieb.Models.GuildWars2.Raid
|
|||
{
|
||||
DiscordServerId = reminder.DiscordServerId,
|
||||
DiscordChannelId = reminder.DiscordChannelId,
|
||||
ReminderTime = reminder.ReminderTime,
|
||||
ReminderTimeUTC = reminder.ReminderTimeUTC,
|
||||
Message = reminder.Message,
|
||||
Sent = reminder.Sent,
|
||||
Type = reminder.Type,
|
||||
|
@ -82,7 +82,6 @@ namespace Lieb.Models.GuildWars2.Raid
|
|||
this.DiscordRaidMessages.Add(new DiscordRaidMessage()
|
||||
{
|
||||
RaidId = message.RaidId,
|
||||
DiscordMessageId = message.DiscordMessageId,
|
||||
DiscordChannelId = message.DiscordChannelId,
|
||||
DiscordGuildId = message.DiscordGuildId
|
||||
});
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace Lieb.Models.GuildWars2.Raid
|
|||
public string Message { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
public DateTimeOffset ReminderTime { get; set; } = DateTime.Now;
|
||||
public DateTimeOffset ReminderTimeUTC { get; set; } = DateTime.Now;
|
||||
|
||||
public ulong DiscordServerId { get; set; }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue