Example #1
0
        public int Send()
        {
            //get messages that haven't sent yet, where status = 0
            var msgs = m_msgBox.GetMessages("0");

            //retrieve messages from db, send to sms api and get message ID
            foreach (var msg in msgs)
            {
                var reqWrapper = new OutboundSMSRequestWrapper {
                    outboundSMSRequest = new OutboundSMSRequest {
                        address = Common.SplitReceiverCodes(msg.ReceiverCode),
                        message = msg.Message
                    }
                };

                if (reqWrapper.outboundSMSRequest.address == null)
                {
                    continue;
                }

                var res = new RestfulHelper()
                          .SendSMSAsync(m_config.UrlSendSMS, AccessToken, reqWrapper)
                          .GetAwaiter()
                          .GetResult();

                // if no qualified object gets from response, ignore this send request
                if (res == null || res.outboundSMSResponse == null)
                {
                    continue;
                }

                msg.MessageID = res.outboundSMSResponse.messageId;

                //if there is no need to check sms delivery status, update status as "sent and delivered" if not check
                if (!m_config.VerifyMessageDeliveryStatus)
                {
                    msg.Status   = "2"; //sent and delivered
                    msg.SendTime = DateTime.Now;
                }
                else
                {
                    msg.Status   = "1"; //just mark as sent
                    msg.SendTime = DateTime.Now;
                }
            }

            int sentCount = 0;

            //update message ID and status back to DB
            foreach (var msg in msgs)
            {
                if (!String.IsNullOrEmpty(msg.MessageID))
                {
                    m_msgBox.UpdateMessage(msg);
                    sentCount++;
                }
            }

            return(sentCount);
        }