public static void Push(AMSNotificationPack notificationPack)
 {
     Push(new List <AMSNotificationPack>()
     {
         notificationPack
     });
 }
 //ของเดิม สำหรับแปลง parameter ที่ post มาเป็น json ในรูปแบบสำหรับส่ง notification
 public static AMSNotificationPack ConvertJsonToNotificcationPack(QueryParameter qParams)
 {
     try
     {
         AMSNotificationPack notificationPack = new AMSNotificationPack();
         List <string>       registration_ids = GetListFromObject(qParams["registration_ids"]).Cast <string>().ToList();
         if (registration_ids.Count < 1)
         {
             throw (new Exception("registration_ids must has at least 1 token."));
         }
         Dictionary <string, object> notification = qParams["notification"] as Dictionary <string, object>;
         notificationPack.to.AddRange(registration_ids);
         notificationPack.notification.title = notification["title"] as string;
         notificationPack.notification.body  = notification["body"] as string;
         notificationPack.notification.icon  = notification["icon"] as string;
         notificationPack.notification.badge = notification["badge"] as string;
         notificationPack.notification.sound = notification["sound"] as string;
         notificationPack.data              = qParams["data"] as Dictionary <string, object>;
         notificationPack.priority          = qParams["priority"] as string;
         notificationPack.content_available = Convert.ToBoolean(qParams["content_available"]);
         return(notificationPack);
     }
     catch (Exception e)
     {
         throw (e);
     }
 }
 //ของเดิม
 public static void Push(List <AMSNotificationPack> notificationPacks)
 {
     try
     {
         List <AMSNotificationPack> groupedNotificationPacks = new List <AMSNotificationPack>();
         foreach (AMSNotificationPack notificationPack in notificationPacks)
         {
             if (notificationPack.to.Count > 0)
             {
                 int loopsCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(notificationPack.to.Count / Convert.ToDouble(_idsPerRequest))));
                 for (int i = 0; i < loopsCount; i++)
                 {
                     AMSNotificationPack groupedNotificationPack = new AMSNotificationPack();
                     int startIndex = i * _idsPerRequest;
                     int size       = notificationPack.to.Count - startIndex;
                     groupedNotificationPack.to.AddRange(notificationPack.to.GetRange(startIndex, size > _idsPerRequest ? _idsPerRequest : size));
                     groupedNotificationPack.notification      = notificationPack.notification;
                     groupedNotificationPack.data              = notificationPack.data;
                     groupedNotificationPack.priority          = notificationPack.priority;
                     groupedNotificationPack.content_available = notificationPack.content_available;
                     groupedNotificationPacks.Add(groupedNotificationPack);
                 }
             }
         }
         foreach (AMSNotificationPack notificationPack in groupedNotificationPacks)
         {
             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_fcmPushURL);
             request.Method      = "POST";
             request.ContentType = "application/json";
             request.Headers.Add("Authorization", string.Format("key={0}", _fcmServerKey));
             byte[] bytes = Encoding.UTF8.GetBytes(_jsSerializer.Serialize(notificationPack));
             using (Stream outputStream = request.GetRequestStream())
             {
                 outputStream.Write(bytes, 0, bytes.Length);
             }
             new Task(() =>
             {
                 request.GetResponse();
             }).Start();
         }
     }
     catch (Exception e)
     {
     }
 }
    private static List <AMSNotificationPack> ConvertDataTableToNotificationPacks(DataTable table)
    {
        List <AMSNotificationPack> notificationPacks = new List <AMSNotificationPack>();

        if (table.Rows.Count > 0)
        {
            DataColumnCollection columns = table.Columns;
            foreach (DataRow row in table.Rows)
            {
                Dictionary <string, object> dataCollection   = new Dictionary <string, object>();
                AMSNotificationPack         notificationPack = new AMSNotificationPack();
                AMSNotificationConfig       notification     = notificationPack.notification;
                notificationPack.data = dataCollection;
                notificationPacks.Add(notificationPack);

                foreach (DataColumn column in columns)
                {
                    string cName  = column.ColumnName;
                    string cValue = row[cName].ToString();

                    switch (cName)
                    {
                    case "REGISTRATION_ID":
                        string[] arrValue = cValue.Split('|');
                        foreach (string val in arrValue)
                        {
                            notificationPack.to.Add(val.Trim());
                        }
                        break;

                    case "TITLE":
                        notification.title = cValue;
                        break;

                    case "BODY":
                        notification.body = cValue;
                        break;

                    case "ICON":
                        notification.icon = cValue;
                        break;

                    case "SOUND":
                        notification.sound = cValue;
                        break;

                    case "BADGE":
                        notification.badge = cValue;
                        break;

                    default:
                        dataCollection.Add(cName, cValue);
                        break;
                    }
                }
            }
        }
        else
        {
            throw new Exception("ไม่มี Data สำหรับส่ง Notification");
        }

        return(notificationPacks);
    }