예제 #1
0
        internal void Send()
        {
            var jsonObject = new GcmOutgoingMessage
            {
                data = new GcmOutgoingMessage.Data()
                {
                    message = NotificationText
                }
            };

            if (!string.IsNullOrWhiteSpace(TopicText))
            {
                jsonObject.to = "/topics/" + TopicText;

                var result = SendMessage(JsonConvert.SerializeObject(jsonObject));

                Logger.Debug($"Zpráva do tématu '{TopicText}' odeslána s výsledkem: " + result);
                MessageBox.Show($"Zpráva '{NotificationText}' do tématu '{TopicText}' úspěšně odeslána",
                                "Zpráva odeslána", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                foreach (var user in GridSelectedUsers)
                {
                    jsonObject.to = ((User)user).RegId;

                    var result = SendMessage(JsonConvert.SerializeObject(jsonObject));

                    var resultObj = JsonConvert.DeserializeObject <GcmResponse>(result);

                    if (resultObj != null && resultObj.success > 0)
                    {
                        Logger.Debug($"Zpráva '{NotificationText}' pro '{((User)user).Email}' úspěšně odeslána");
                        MessageBox.Show($"Zpráva '{NotificationText}' pro '{((User)user).Email}' úspěšně odeslána", "Zpráva odeslána", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        Logger.Debug($"Zpráva '{NotificationText}' pro '{((User)user).Email}' odeslána s výsledkem " + result);
                        var msgResult = MessageBox.Show($"Zprávu pro '{((User)user).Email}' se nepodařilo odeslat:" + System.Environment.NewLine + result + System.Environment.NewLine + "Smazat toto zařízení z evidence?", "Problém při odesílání", MessageBoxButton.YesNo, MessageBoxImage.Error);
                        if (msgResult == MessageBoxResult.Yes)
                        {
                            dbConnector.DeleteUser(((User)user).RegId);
                        }
                    }
                }
            }
            Users            = dbConnector.GetAllUsers(); //znovu načtení pro případ, že jsme promazávali uživatele (nemohu to udělat v rámci iterace - změnila by se mi kolekce)
            NotificationText = "";
            TopicText        = "";
        }