Beispiel #1
0
        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);
            }
        }
Beispiel #3
0
        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);
        }