public static void SendPush(string name, string messageText, int badgeNumber)
        {
            List<DataModels.DeviceSetting> settings = new DataModels.GoodPushContext()
                                                .DeviceSettings.ToList();

            foreach (var setting in settings)
            {
                UrbanAirship.Client c = new UrbanAirship.Client();
                UrbanAirship.PushNotification p = c.CreatePush(); ;

                p.NotificationMetaData = new UrbanAirship.Extensibility.JsonDictionary<string, object>();

                p.DeviceTokens = new List<string>();
                p.Aliases = new List<string>();
                if (!string.IsNullOrEmpty(setting.Alias))
                    p.Aliases.Add(setting.Alias);
                else if (!string.IsNullOrEmpty(setting.DeviceToken))
                    p.DeviceTokens.Add(setting.DeviceToken);
                else
                    p.DeviceTokens.Add(DEFAULT_DEVICE_TOKEN);
                p.iOS.Alert = string.Format("{0} said: '{1}'", name, messageText);
                p.iOS.Badge = badgeNumber;
                if (setting.IsSoundEnabled)
                    p.iOS.Sound = "theGoodPush.m4a";
                if (setting.IsPushEnabled)
                    p.Send();
            }
        }
        public JsonResult SubmitMessage(Models.Message msg)
        {
            try
            {
                DataModels.Message msgToAdd = new DataModels.Message();
                msgToAdd.IsRead = false;
                msgToAdd.Name = msg.Name;
                msgToAdd.Msg = msg.MessageText;
                msgToAdd.Dtm = DateTime.Now;
                DataModels.GoodPushContext db = new DataModels.GoodPushContext();

                db.Messages.Add(msgToAdd);

                msgToAdd.Id = db.SaveChanges();
                int bgNum = db.Alerts.Where(w => w.IsRead == false).Count();
                bgNum = +db.Messages.Where(w => w.IsRead == false).Count();
                UrbanAirshipHelper.SendPush(msg.Name, msg.MessageText, bgNum);
            }
            catch (Exception ex)
            {
                return Json(new { status = String.Format("Saved but Notification failed to get delivered. Error: {0}", ex.Message) });
            }

            return Json(new { status = "Success" });
        }
        public static void SendPush(int messageId, string name, int rating, int badgeNumber)
        {
            List<DataModels.DeviceSetting> settings = new DataModels.GoodPushContext()
                                                            .DeviceSettings.ToList();

            foreach (var setting in settings)
            {
                UrbanAirship.Client c = new UrbanAirship.Client();
                UrbanAirship.PushNotification p = c.CreatePush();

                p.NotificationMetaData = new UrbanAirship.Extensibility.JsonDictionary<string, object>();
                p.NotificationMetaData.Add("Id", messageId.ToString());

                p.NotificationMetaData.Add("name", name);

                p.DeviceTokens = new List<string>();
                p.Aliases = new List<string>();

                if (!string.IsNullOrEmpty(setting.Alias))
                    p.Aliases.Add(setting.Alias);
                else if (!string.IsNullOrEmpty(setting.DeviceToken))
                    p.DeviceTokens.Add(setting.DeviceToken);
                else
                    p.DeviceTokens.Add(DEFAULT_DEVICE_TOKEN);

                p.iOS.Alert = string.Format("You have recieved {0} {1} in your survey", rating, (rating > 1 ? "stars" : "star"));
                p.iOS.Badge = badgeNumber;
                if(setting.IsSoundEnabled)
                    p.iOS.Sound = "theGoodPush.m4a";
                if(setting.IsPushEnabled)
                    p.Send();
            }
        }
        public JsonResult SubmitAlert(Models.SurveyAlert s)
        {
            DataModels.Alert alertToAdd = new DataModels.Alert();
            alertToAdd.Dtm = DateTime.Now;
            alertToAdd.Name = s.Name;
            alertToAdd.Msg = s.Comment;
            alertToAdd.Importance = s.Rating;
            DataModels.GoodPushContext db = new DataModels.GoodPushContext();

            db.Alerts.Add(alertToAdd);

            alertToAdd.Id = db.SaveChanges();
            int bgNum = db.Alerts.Where(w => w.IsRead == false).Count();
            bgNum =+ db.Messages.Where(w => w.IsRead == false).Count();
            try
            {
                UrbanAirshipHelper.SendPush(alertToAdd.Id, alertToAdd.Name, alertToAdd.Importance, bgNum);
            }
            catch (Exception ex)
            {
                return Json(new { status = String.Format("Saved but Notification failed to get delivered. Error: {0}", ex.Message) });
            }

            return Json(new { status = "Success" });
        }