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>();
|
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
|
try
|
||||||
{
|
{
|
||||||
using var context = _contextFactory.CreateDbContext();
|
|
||||||
var httpClient = _httpClientFactory.CreateClient(Constants.HttpClientName);
|
var httpClient = _httpClientFactory.CreateClient(Constants.HttpClientName);
|
||||||
|
|
||||||
Raid raid = context.Raids
|
if(raid == null) return false;
|
||||||
.Include(r => r.SignUps)
|
|
||||||
.ThenInclude(s => s.LiebUser)
|
|
||||||
.FirstOrDefault(r => r.RaidId == reminder.RaidId);
|
|
||||||
|
|
||||||
if(raid == null) return;
|
ApiUserReminder apiReminder = ConvertUserReminder(message, raid);
|
||||||
|
|
||||||
ApiUserReminder apiReminder = ConvertUserReminder(reminder, raid);
|
|
||||||
|
|
||||||
var raidItemJson = new StringContent(
|
var raidItemJson = new StringContent(
|
||||||
JsonSerializer.Serialize(apiReminder),
|
JsonSerializer.Serialize(apiReminder),
|
||||||
|
@ -134,14 +140,10 @@ namespace Lieb.Data
|
||||||
|
|
||||||
var httpResponseMessage = await httpClient.PostAsync("raid/SendUserReminder", raidItemJson);
|
var httpResponseMessage = await httpClient.PostAsync("raid/SendUserReminder", raidItemJson);
|
||||||
|
|
||||||
if (httpResponseMessage.IsSuccessStatusCode)
|
return httpResponseMessage.IsSuccessStatusCode;
|
||||||
{
|
|
||||||
reminder.Sent = true;
|
|
||||||
context.Update(reminder);
|
|
||||||
await context.SaveChangesAsync();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch {}
|
catch {}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SendChannelReminder(RaidReminder reminder)
|
public async Task SendChannelReminder(RaidReminder reminder)
|
||||||
|
@ -256,11 +258,11 @@ namespace Lieb.Data
|
||||||
return apiMessages;
|
return apiMessages;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ApiUserReminder ConvertUserReminder(RaidReminder reminder, Raid raid)
|
private ApiUserReminder ConvertUserReminder(string message, Raid raid)
|
||||||
{
|
{
|
||||||
ApiUserReminder apiReminder = new ApiUserReminder()
|
ApiUserReminder apiReminder = new ApiUserReminder()
|
||||||
{
|
{
|
||||||
Message = reminder.Message
|
Message = message
|
||||||
};
|
};
|
||||||
apiReminder.UserIds = new List<ulong>();
|
apiReminder.UserIds = new List<ulong>();
|
||||||
foreach(RaidSignUp signUp in raid.SignUps)
|
foreach(RaidSignUp signUp in raid.SignUps)
|
||||||
|
|
|
@ -96,6 +96,10 @@ namespace Lieb.Data
|
||||||
context.Raids.Remove(raid);
|
context.Raids.Remove(raid);
|
||||||
await context.SaveChangesAsync();
|
await context.SaveChangesAsync();
|
||||||
await _discordService.DeleteRaidMessages(raid);
|
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)
|
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)
|
.Where(r => !r.Sent)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
DateTimeOffset now = DateTimeOffset.UtcNow;
|
DateTimeOffset utcNow = DateTimeOffset.UtcNow;
|
||||||
foreach(RaidReminder reminder in reminders.Where(r => r.ReminderTime < now))
|
foreach(RaidReminder reminder in reminders.Where(r => r.ReminderTimeUTC < utcNow))
|
||||||
{
|
{
|
||||||
switch(reminder.Type)
|
switch(reminder.Type)
|
||||||
{
|
{
|
||||||
case RaidReminder.ReminderType.User:
|
case RaidReminder.ReminderType.User:
|
||||||
await _discordService.SendUserReminder(reminder);
|
await _discordService.SendUserReminder(reminder, reminder.Raid);
|
||||||
break;
|
break;
|
||||||
case RaidReminder.ReminderType.Channel:
|
case RaidReminder.ReminderType.Channel:
|
||||||
await _discordService.SendChannelReminder(reminder);
|
await _discordService.SendChannelReminder(reminder);
|
||||||
|
|
|
@ -83,6 +83,10 @@ namespace Lieb.Data
|
||||||
template.StartTime = template.StartTime.AddDays(template.Interval);
|
template.StartTime = template.StartTime.AddDays(template.Interval);
|
||||||
template.EndTime = template.EndTime.AddDays(template.Interval);
|
template.EndTime = template.EndTime.AddDays(template.Interval);
|
||||||
template.FreeForAllTime = template.FreeForAllTime.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,
|
DiscordServerId = reminder.DiscordServerId,
|
||||||
DiscordChannelId = reminder.DiscordChannelId,
|
DiscordChannelId = reminder.DiscordChannelId,
|
||||||
ReminderTime = reminder.ReminderTime,
|
ReminderTimeUTC = reminder.ReminderTimeUTC,
|
||||||
Message = reminder.Message,
|
Message = reminder.Message,
|
||||||
Sent = reminder.Sent,
|
Sent = reminder.Sent,
|
||||||
Type = reminder.Type,
|
Type = reminder.Type,
|
||||||
|
@ -82,7 +82,6 @@ namespace Lieb.Models.GuildWars2.Raid
|
||||||
this.DiscordRaidMessages.Add(new DiscordRaidMessage()
|
this.DiscordRaidMessages.Add(new DiscordRaidMessage()
|
||||||
{
|
{
|
||||||
RaidId = message.RaidId,
|
RaidId = message.RaidId,
|
||||||
DiscordMessageId = message.DiscordMessageId,
|
|
||||||
DiscordChannelId = message.DiscordChannelId,
|
DiscordChannelId = message.DiscordChannelId,
|
||||||
DiscordGuildId = message.DiscordGuildId
|
DiscordGuildId = message.DiscordGuildId
|
||||||
});
|
});
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace Lieb.Models.GuildWars2.Raid
|
||||||
public string Message { get; set; } = string.Empty;
|
public string Message { get; set; } = string.Empty;
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
public DateTimeOffset ReminderTime { get; set; } = DateTime.Now;
|
public DateTimeOffset ReminderTimeUTC { get; set; } = DateTime.Now;
|
||||||
|
|
||||||
public ulong DiscordServerId { get; set; }
|
public ulong DiscordServerId { get; set; }
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue