From f2ca5266789b6e11c83ab7eba265f0acdd2e7c53 Mon Sep 17 00:00:00 2001 From: amki Date: Tue, 1 Oct 2019 23:07:05 +0200 Subject: [PATCH] Notify werks delete not --- DiscoBot/98293701175955456-gsmeet.db | Bin 32768 -> 32768 bytes DiscoBot/gsmeet/GSMeet.cs | 57 +++++++++++++++++++++++++-- DiscoBot/gsmeet/GSMeetContext.cs | 7 +++- 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/DiscoBot/98293701175955456-gsmeet.db b/DiscoBot/98293701175955456-gsmeet.db index 60dff19770a561a7f2df767df732f9d81b9604f8..301f7050562cd33c396932fea342a85d93d9a48d 100644 GIT binary patch literal 32768 zcmeI4PfXiZ9LMeag(S|Se?m&oBr9A%;3`g_YhY3b!9h_&pdl1EArsst8YF_4j_$?~ zw`tmCr%Ag`(=I#gvfZ{@x6`EUQmL1z+O*Sl++maU9Q?9Cp1n@0D#5-_iSo7mv%l|s ze!u4^iJg^u#ky(851RYCx+!Ob0m0)D-jroQ5IpqRN1v?usqnD{`YLv5C+QJxPAp60 z4o=6jsr{T%a30*`30T2KI5C8!X009tqsRWKjgTeS(RyQ&vWHyfMtb1OBvzNGIO{D{6>S(~kBa-lS@t;@+5I#N7XrHZ$Yn@F&eyOY#7E0|7pDPf#tmU<`R?2BB7PR)xR$8o@ zO^#WmHm?;mTB2o*qABDmQfO@17l@CKiyQ46wf1)C$DGZUv3FoJs>ZoR|Cy|u+c?^w zCKGhevE#5e7@wIDPn52__msOZHRbC7?}{mV>mPX}H}e&3CV z!T9j7c-*wJ(XI-+I6UWRvy!ptwhPCuddGQX@6!d7O#y3O_Dq@1S(LLaSJN8}W2bjE zvm@qeM)j>i!!-6E=``&0;O8b@QE!>;IHO~4N6>OtJc0P^uqd?8pmquC2WGRq+)0RP z^YPNRn)YXVi3*W?AkYUI2!H?xfB*=900@8p2!H?xfB*=9z$+rq5Q8yeDDc{nX|zmr zEwfwMx>cLMU)9TVmHcvUFPlxT<@G}OZ6kf~_;n@w`0(MjR@++KXj$J@sQzD{eEO3h zgi@(#`pBfxDK)F8DJ7-K>GZTZIh~ojnMqA$)v5G&DotZTbX+3+eV#thKmY_l00ck) z1V8`;KmY_l00ck)1TGnYpf}cUeZ^q?{!cIZM*{&6009sH0T2KI5C8!X009sH0T8&v z1WvF2e=d;cmw1pE8VG;@2!H?xfB*=900@8p2!H?x{0|5uL~mB){~t+0BHs&%a6lkG zl8;G~yg{Vs)97c>!)PHoDE%URA)QENX(aM{;M6-NhNxH{nKz#Fzg936P!YSh(%H*7_6bl`=n5myJ^u$8c*120?+xjOKM zt@JxO@WRzTR|np(m7t>oFI)|{I`D?A_#GX1;i}Kofj4Z$>*&A>S3Rx{DrZj9^RI7A zv|I$3Bp8_35kga g6JaJoO!PC+$3&2c026*Dd`x(m@X+-5yk4RIZ%*Ek>Hq)$ delta 27 jcmZo@U}|V!+Q8zln8iR~GfTo>{>6+50-G5P{__I>et8KA diff --git a/DiscoBot/gsmeet/GSMeet.cs b/DiscoBot/gsmeet/GSMeet.cs index 01ab1c3..a6228e9 100644 --- a/DiscoBot/gsmeet/GSMeet.cs +++ b/DiscoBot/gsmeet/GSMeet.cs @@ -12,6 +12,7 @@ using Discord; using Discord.WebSocket; using Google.Apis.Auth.OAuth2; using Google.Apis.Sheets.v4; +using Microsoft.EntityFrameworkCore; namespace DiscoBot.gsmeet { @@ -48,8 +49,19 @@ namespace DiscoBot.gsmeet 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(); + } + if(f.NotifiedEvents == null) + { + f.NotifiedEvents = new List(); + } InitializeSheet(f); HandleSheetCheck(f); } @@ -120,14 +132,29 @@ namespace DiscoBot.gsmeet 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); foreach (var user in sheetData.Users) { 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) { @@ -162,6 +211,8 @@ namespace DiscoBot.gsmeet await c.SendMessageAsync("Parsed sheet " + sheet.Id); await SignupNotify(c, sheetData); await RaidNotify(c, sheetData); + gsmeetContext.SaveChanges(); + CleanupNotifyDB(sheetData); /* var str = ""; foreach (var row in values) diff --git a/DiscoBot/gsmeet/GSMeetContext.cs b/DiscoBot/gsmeet/GSMeetContext.cs index ad605ad..0ed1f2e 100644 --- a/DiscoBot/gsmeet/GSMeetContext.cs +++ b/DiscoBot/gsmeet/GSMeetContext.cs @@ -35,7 +35,7 @@ namespace DiscoBot.gsmeet public TimeSpan CheckInterval { get; set; } public DateTimeOffset LastChecked { get; set; } public List NotifiedEvents { get; set; } - public List NotifiedDates { get; set; } + public List NotifiedUsers { get; set; } } public class GSMeetEventNotification @@ -49,6 +49,11 @@ namespace DiscoBot.gsmeet public class GSMeetUserNotification { + public GSMeetUserNotification(string discordTag, DateTimeOffset date) + { + this.DiscordTag = discordTag; + this.Date = date; + } [ScaffoldColumn(false)] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Key]