private void parseNotifications(string data, Instrument source) { dynamic json = JsonConvert.DeserializeObject(data); JArray arr = json.value; foreach (dynamic notification in arr) { string incomingGuid = notification.NotificationId; if (!_context.RaisedNotification.Any(e => e.NotificationId == new Guid(incomingGuid))) { RaisedNotification incommming = new RaisedNotification() { Name = (string)notification.NotificationType.Name, Description = (string)notification.NotificationType.Description, DetailDescription = (string)notification.NotificationType.DetailDescription, InstrumentDisplayName = (string)notification.Instrument.Name + " " + (string)notification.Instrument.InstrumentSide + " (" + (string)notification.InstrumentSerialNumber + ") - " + (string)notification.NotificationTypeId, NotificationId = new Guid((string)notification.NotificationId), originatingInstrument = source, When = (DateTimeOffset)notification.When, notificationType = (string)notification.NotificationType.EventType }; azureComunications.sendToUsersbyID(whoGetsIt(incommming), incommming, source); // _context.RaisedNotification.Add(incommming); Console.WriteLine((object)notification.NotificationId); } } }
public async void sendToUsersbyID(List <device> devices, RaisedNotification incoming, Instrument source) { FCMnotificationTemplate androidnoty = new FCMnotificationTemplate(); androidnoty.data.message = "{ notiType:" + incoming.notificationType + ",body:" + incoming.Name + ",UUID:" + source.UUID.ToString() + ",name:" + source.DisplayName + ",}"; //title + " ;; " + //androidnoty.data2.title = title; string androidString = JsonConvert.SerializeObject(androidnoty); //"{\"data\":{\"message\":\"{ \"title\":" + title + ",\"body\":" + body + "}\"}}"; List <string> androidDevices = new List <string>(); List <string> iOSDevices = new List <string>(); foreach (device dev in devices) { if (dev.Platform == "Android") { androidDevices.Add("device:" + dev.notificationHubRegistration); } else if (dev.Platform == "iOS") { iOSDevices.Add("device:" + dev.notificationHubRegistration); } } if (androidDevices.Count > 0) ///////////////MAX 20 tags // var outcomeFcmByTag = await notificationhub.SendFcmNativeNotificationAsync(androidString, androidDevices);//JsonConvert.SerializeObject(androidnoty) // var fcmTagOutcomeDetails = await WaitForThePushStatusAsync("FCM Tags", notificationhub, outcomeFcmByTag); //PrintPushOutcome("FCM Tags", fcmTagOutcomeDetails, fcmTagOutcomeDetails.FcmOutcomeCounts); { } if (iOSDevices.Count > 0) { var outcomeApnsByTag = await notificationhub.SendAppleNativeNotificationAsync(AppleSampleNotificationContent, iOSDevices); // var apnsTagOutcomeDetails = await WaitForThePushStatusAsync("APNS Tags", notificationhub, outcomeApnsByTag); //PrintPushOutcome("APNS Tags", apnsTagOutcomeDetails, apnsTagOutcomeDetails.ApnsOutcomeCounts); } }
private List <device> whoGetsIt(RaisedNotification incoming) //.ThenInclude(post => post.Author) .Include(x => x.RegisteredUsers.Select(u => u.devices)) .ThenInclude(DBUser => DBUser.device) { List <device> outgoing = new List <device>(); var posible = _context.Notification.Include(notif => notif.RegisteredUsers).Where(x => x.InstrumentID == incoming.originatingInstrument.InstrumentID); Notification only = posible.Where(x => x.NotificationName == incoming.notificationType).FirstOrDefault(); // _context.Entry(only).Collection(x => x.RegisteredUsers).Load(); // _context.Entry(only).Collection(x => x.RegisteredUsers.AsQueryable().Select(y => y.devices)).Load();//////////////////////////////////////// //_context.Entry(only).Reference(x => x.RegisteredUsers).Load(); //only.RegisteredUsers.AsQueryable().Select(x => x.devices).Load(); List <NotificationDBUser> users = only.RegisteredUsers; foreach (NotificationDBUser notif_usr in users) { //_context.Entry(notif_usr).Reference(x => x.DBUser).Load(); var usr = _context.DBUser.Where(x => x.UUID == notif_usr.UserUUID).FirstOrDefault(); _context.Entry(usr).Collection(x => x.devices).Load(); var alive = usr.getAlive(); outgoing.AddRange(alive); } return(outgoing); }