public void CreateAndSendMessage(PatientMessaging_Model messageInfo, Message messageOrder)
        {
            string messageBody = "";

            string timeFromAlert = messageOrder == Message.First
                                ? $"{60 - DateTime.Now.Minute} minutes"
                                : $"{DateTime.Now.Minute} minutes ago";

            messageBody = messageOrder == Message.First
                                ? messageInfo.NumberOfUpcomingAlerts > 1 ? $"You have {messageInfo.NumberOfUpcomingAlerts} medicines to take in about {timeFromAlert}" : $"You have a medicine to take in about {timeFromAlert}"
                                : messageInfo.NumberOfUpcomingAlerts > 1 ? $"You have {messageInfo.NumberOfUpcomingAlerts} medicines to take about {timeFromAlert}" : $"You have a medicine to take about {timeFromAlert}";


            WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");

            tRequest.Method = "post";
            //serverKey - Key from Firebase cloud messaging server
            tRequest.Headers.Add(string.Format("Authorization: key={0}", "AAAAZJgbXy0:APA91bFqr2ryc6uBrtfSid645h1lFadS0iStbpMFg7oAUCat1AWQQ8ZcTRu8wrzRQzOzgLjsg6sYF-T2HZ7xPXxaJ9xnORXax26HDkxEazunlOE68FAAWA2qgwlIFsTwNoig-LStS2gc"));
            //Sender Id - From firebase project setting
            tRequest.Headers.Add(string.Format("Sender: id={0}", "432048660269"));
            tRequest.ContentType = "application/json";
            var payload = new
            {
                to                = messageInfo.FcmToken,
                priority          = "high",
                content_available = true,
                notification      = new
                {
                    body  = messageBody,
                    title = "MedScanRx Upcoming Alerts",
                    badge = 1,
                },
            };

            string postbody = JsonConvert.SerializeObject(payload).ToString();

            Byte[] byteArray = Encoding.UTF8.GetBytes(postbody);
            tRequest.ContentLength = byteArray.Length;
            using (Stream dataStream = tRequest.GetRequestStream())
            {
                dataStream.Write(byteArray, 0, byteArray.Length);
                using (WebResponse tResponse = tRequest.GetResponse())
                {
                    using (Stream dataStreamResponse = tResponse.GetResponseStream())
                    {
                        if (dataStreamResponse != null)
                        {
                            using (StreamReader tReader = new StreamReader(dataStreamResponse))
                            {
                                String sResponseFromServer = tReader.ReadToEnd();
                            }
                        }
                    }
                }
            }
        }
        public static PatientMessaging_Model Map(SqlDataReader reader)
        {
            try
            {
                var messagingInfo = new PatientMessaging_Model
                {
                    AlertDateTime          = DateTime.Parse(reader["AlertDateTime"].ToString()),
                    FcmToken               = reader["FcmToken"].ToString(),
                    NumberOfUpcomingAlerts = (int)reader["NumberOfUpcomingAlerts"]
                };



                return(messagingInfo);
            }
            catch (Exception ex)
            {
                throw new MappingException("Mapping a data row to a patient message info failed", ex);
            }
        }