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); }