|
@ -12,6 +12,7 @@ using Discord; |
|
|
using Discord.WebSocket; |
|
|
using Discord.WebSocket; |
|
|
using Google.Apis.Auth.OAuth2; |
|
|
using Google.Apis.Auth.OAuth2; |
|
|
using Google.Apis.Sheets.v4; |
|
|
using Google.Apis.Sheets.v4; |
|
|
|
|
|
using Microsoft.EntityFrameworkCore; |
|
|
|
|
|
|
|
|
namespace DiscoBot.gsmeet |
|
|
namespace DiscoBot.gsmeet |
|
|
{ |
|
|
{ |
|
@ -48,8 +49,19 @@ namespace DiscoBot.gsmeet |
|
|
ApplicationName = ApplicationName |
|
|
ApplicationName = ApplicationName |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
foreach(var f in gsmeetContext.GSheets) |
|
|
gsmeetContext.GSheets.Include(s => s.NotifiedEvents).Load(); |
|
|
|
|
|
gsmeetContext.GSheets.Include(s => s.NotifiedUsers).Load(); |
|
|
|
|
|
|
|
|
|
|
|
foreach (var f in gsmeetContext.GSheets) |
|
|
{ |
|
|
{ |
|
|
|
|
|
if(f.NotifiedUsers == null) |
|
|
|
|
|
{ |
|
|
|
|
|
f.NotifiedUsers = new List<GSMeetUserNotification>(); |
|
|
|
|
|
} |
|
|
|
|
|
if(f.NotifiedEvents == null) |
|
|
|
|
|
{ |
|
|
|
|
|
f.NotifiedEvents = new List<GSMeetEventNotification>(); |
|
|
|
|
|
} |
|
|
InitializeSheet(f); |
|
|
InitializeSheet(f); |
|
|
HandleSheetCheck(f); |
|
|
HandleSheetCheck(f); |
|
|
} |
|
|
} |
|
@ -120,14 +132,29 @@ namespace DiscoBot.gsmeet |
|
|
foreach(var date in sheetData.Dates) |
|
|
foreach(var date in sheetData.Dates) |
|
|
{ |
|
|
{ |
|
|
|
|
|
|
|
|
if(DateTimeOffset.UtcNow + new TimeSpan(4,0,0,0) > date) |
|
|
if(DateTimeOffset.UtcNow + new TimeSpan(4,0,0,0) > date && date > DateTimeOffset.UtcNow) |
|
|
{ |
|
|
{ |
|
|
await chan.SendMessageAsync("I should signup notify for " + date); |
|
|
await chan.SendMessageAsync("I should signup notify for " + date); |
|
|
foreach (var user in sheetData.Users) |
|
|
foreach (var user in sheetData.Users) |
|
|
{ |
|
|
{ |
|
|
if (!user.Signups.ContainsKey(date)) |
|
|
if (!user.Signups.ContainsKey(date)) |
|
|
{ |
|
|
{ |
|
|
await chan.SendMessageAsync("Hey " + user.DiscordTag + " please sign up for our raid on " + date); |
|
|
bool doNotify = true; |
|
|
|
|
|
foreach(var notification in sheetData.Sheet.NotifiedUsers) |
|
|
|
|
|
{ |
|
|
|
|
|
if(notification.Date == date && notification.DiscordTag == user.DiscordTag) |
|
|
|
|
|
{ |
|
|
|
|
|
Console.WriteLine("User already notified."); |
|
|
|
|
|
doNotify = false; |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if (doNotify) |
|
|
|
|
|
{ |
|
|
|
|
|
await chan.SendMessageAsync("Hey " + user.DiscordTag + " please sign up for our raid on " + date); |
|
|
|
|
|
var n = new GSMeetUserNotification(user.DiscordTag, date); |
|
|
|
|
|
sheetData.Sheet.NotifiedUsers.Add(n); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -147,6 +174,28 @@ namespace DiscoBot.gsmeet |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Task CleanupNotifyDB(GSMeetSheetData sheetData) |
|
|
|
|
|
{ |
|
|
|
|
|
/* |
|
|
|
|
|
foreach(var n in sheetData.Sheet.NotifiedEvents) |
|
|
|
|
|
{ |
|
|
|
|
|
if(DateTimeOffset.UtcNow > n.Date) |
|
|
|
|
|
{ |
|
|
|
|
|
sheetData.Sheet.NotifiedEvents.Remove(n); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
foreach (var n in sheetData.Sheet.NotifiedUsers) |
|
|
|
|
|
{ |
|
|
|
|
|
if (DateTimeOffset.UtcNow > n.Date) |
|
|
|
|
|
{ |
|
|
|
|
|
sheetData.Sheet.NotifiedUsers.Remove(n); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
gsmeetContext.SaveChanges(); |
|
|
|
|
|
*/ |
|
|
|
|
|
return Task.CompletedTask; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private async Task HandleSheetCheck(DBSheet sheet) |
|
|
private async Task HandleSheetCheck(DBSheet sheet) |
|
|
{ |
|
|
{ |
|
@ -162,6 +211,8 @@ namespace DiscoBot.gsmeet |
|
|
await c.SendMessageAsync("Parsed sheet " + sheet.Id); |
|
|
await c.SendMessageAsync("Parsed sheet " + sheet.Id); |
|
|
await SignupNotify(c, sheetData); |
|
|
await SignupNotify(c, sheetData); |
|
|
await RaidNotify(c, sheetData); |
|
|
await RaidNotify(c, sheetData); |
|
|
|
|
|
gsmeetContext.SaveChanges(); |
|
|
|
|
|
CleanupNotifyDB(sheetData); |
|
|
/* |
|
|
/* |
|
|
var str = ""; |
|
|
var str = ""; |
|
|
foreach (var row in values) |
|
|
foreach (var row in values) |
|
|