public static void RefreshShortCodes() { MessageDataAccessor dataBinding = new MessageDataAccessor(); using (var service = new MyMobileAPIService.APISoapClient()) { foreach (var account in dataBinding.GetAccounts()) { bool recordsProcessed; do { recordsProcessed = false; ShortCodeSettingsEntity settings = dataBinding.GetShortCodeSettings(account.AccountId); if (settings != null) { ShortCodeServiceCallEntity data = new ShortCodeServiceCallEntity() { Settings = settings }; string xmlString = Serializer.SerializeXml<ShortCodeServiceCallEntity>(data); string resultXml = service.ShortCode_Get_STR_STR(account.Username, account.Password, xmlString); SaveXmlStringToFile(resultXml,"SHORTCODES"); ShortCodeResultEntity results = Serializer.DeserializeXml<ShortCodeResultEntity>(resultXml); if (results.Results != null) { results.Results.ForAll(m => { dataBinding.InsertMessageDetail(m); }); int latestID = results.Results.Max(r => r.ChangeId); dataBinding.UpdateShortCodeSettingsLatestID(latestID, account.AccountId); recordsProcessed = results.Results.Length > 0; } } } while (recordsProcessed); } } }
public static void RefreshReplies() { using (var dataBinding = new MessageDataAccessor()) using (var service = new MyMobileAPIService.APISoapClient()) { foreach (var account in dataBinding.GetAccounts()) { bool recordsProcessed; do { recordsProcessed = false; ReplyServiceCallEntity data = new ReplyServiceCallEntity() { Settings = dataBinding.GetReplySettings(account.AccountId) }; DataSet dataSet = new DataSet("reply"); DataTable settingsTable = new DataTable("settings"); settingsTable.Columns.Add("id"); settingsTable.Columns.Add("max_recs"); settingsTable.Columns.Add("cols_returned"); settingsTable.Columns.Add("date_format"); DataRow mainRow = settingsTable.NewRow(); mainRow["id"] = data.Settings.LatestId; mainRow["max_recs"] = data.Settings.RecordCount; mainRow["cols_returned"] = data.Settings.ReturnColumns; mainRow["date_format"] = data.Settings.DateFormat; settingsTable.Rows.Add(mainRow); dataSet.Tables.Add(settingsTable); DataSet results = service.Reply_DS_DS(account.Username, account.Password, dataSet); if (results != null && results.Tables.Contains("data")) { results.Tables["data"].AsEnumerable().ForAll(r => { Guid tempGuid; MessageEntity message; if (Guid.TryParse(TypeSafety.GetValue<string>(r["sentcustomerid"]), out tempGuid)) { message = dataBinding.GetMessageByRowGuid(tempGuid); if (message != null) { message.Text = TypeSafety.GetValue<string>(r["sentdata"]); message.EventId = TypeSafety.GetValue<int>(r["eventid"]); message.Status = "REPLY"; } else { message = new MessageEntity() { NumberTo = string.Empty, Sender = TypeSafety.GetValue<string>(r["numfrom"]), Text = TypeSafety.GetValue<string>(r["sentdata"]), DateCreated = TypeSafety.GetValue<DateTime>(r["sentdatetime"], DateTime.Now), OriginId = 5, // Legacy UniqueId = TypeSafety.GetValue<int>(r["eventid"]), EventId = TypeSafety.GetValue<int>(r["eventid"]), RowGuid = Guid.NewGuid(), Status = "UNKNOWN WITH REPLY" }; } message = dataBinding.SetMessageForced(message); } else { message = new MessageEntity() { NumberTo = string.Empty, Sender = TypeSafety.GetValue<string>(r["numfrom"]), Text = TypeSafety.GetValue<string>(r["sentdata"]), DateCreated = TypeSafety.GetValue<DateTime>(r["sentdatetime"], DateTime.Now), OriginId = 5, // Legacy UniqueId = TypeSafety.GetValue<int>(r["sentcustomerid"],0), EventId = TypeSafety.GetValue<int>(r["eventid"]), RowGuid = Guid.NewGuid(), Status = "UNKNOWN WITH REPLY" }; message = dataBinding.SetMessageForced(message); } if (message != null) { MessageReplyEntity reply = new MessageReplyEntity() { ReplyId = TypeSafety.GetValue<int>(r["replyid"]), MessageId = message.MessageId, Text = TypeSafety.GetValue<string>(r["receiveddata"]), DateReceived = TypeSafety.GetValue<DateTime>(r["received"], DateTime.Now) }; dataBinding.InsertMessageReply(reply); } }); recordsProcessed = results.Tables["data"].Rows.Count > 0; if (recordsProcessed) { int latestID = results.Tables["data"].AsEnumerable().Max(s => TypeSafety.GetValue<int>(s["replyid"])); dataBinding.UpdateReplySettingsLatestID(latestID, account.AccountId); dataBinding.AddStopReplies(); } } } while (recordsProcessed); } } }
public static void RefreshDeliveryReport() { using (var dataBinding = new MessageDataAccessor()) using (var service = new MyMobileAPIService.APISoapClient()) { DataSet dataSet = null; DataTable settingsTable = null; foreach (var account in dataBinding.GetAccounts()) { bool recordsProcessed; do { recordsProcessed = false; SentServiceCallEntity data = new SentServiceCallEntity() { Settings = dataBinding.GetSentSettings(account.AccountId) }; dataSet = new DataSet("sent"); settingsTable = new DataTable("settings"); settingsTable.Columns.Add("id"); settingsTable.Columns.Add("max_recs"); settingsTable.Columns.Add("cols_returned"); settingsTable.Columns.Add("date_format"); DataRow mainRow = settingsTable.NewRow(); mainRow["id"] = data.Settings.LatestId; mainRow["max_recs"] = data.Settings.RecordCount; mainRow["cols_returned"] = data.Settings.ReturnColumns; mainRow["date_format"] = data.Settings.DateFormat; settingsTable.Rows.Add(mainRow); dataSet.Tables.Add(settingsTable); DataSet results = service.Sent_DS_DS(account.Username, account.Password, dataSet); SaveXmlStringToFile(results.GetXml(),"DELIVERIES"); if (results != null && results.Tables.Contains("data")) { results.Tables["data"].AsEnumerable().ForAll(r => { //var r = results.Tables["data"].Rows[0]; Guid tempGuid; MessageEntity message; try { if (Guid.TryParse(TypeSafety.GetValue<string>(r["customerid"]), out tempGuid)) { message = dataBinding.GetMessageByRowGuid(tempGuid); // we only update the values of an existing message if (message != null) { message.NumberTo = TypeSafety.GetValue<string>(r["numto"]); message.NumberTo = (message.NumberTo.Length > 15) ? message.NumberTo.Substring(0, 15) : message.NumberTo; message.Text = TypeSafety.GetValue<string>(r["data"]); message.EventId = TypeSafety.GetValue<int>(r["eventid"]); message.Status = TypeSafety.GetValue<string>(r["status"]); } else { message = new MessageEntity() { // we create a new message as it does not exist NumberTo = TypeSafety.GetValue<string>(r["numto"]), Sender = string.Empty, Text = TypeSafety.GetValue<string>(r["data"]), DateCreated = DateTime.Now, OriginId = 5, // Legacy System UniqueId = TypeSafety.GetValue<int>(r["customerid"], 0), EventId = TypeSafety.GetValue<int>(r["eventid"]), RowGuid = Guid.NewGuid(), Status = "UNKOWN " + TypeSafety.GetValue<string>(r["status"]) }; } message = dataBinding.SetMessageForced(message); } else { message = new MessageEntity() { // we create a new message as it does not exist NumberTo = TypeSafety.GetValue<string>(r["numto"]), Sender = string.Empty, Text = TypeSafety.GetValue<string>(r["data"]), DateCreated = DateTime.Now, OriginId = 5, // Legacy System UniqueId = TypeSafety.GetValue<int>(r["customerid"], 0), EventId = TypeSafety.GetValue<int>(r["eventid"]), RowGuid = Guid.NewGuid(), Status = "UNKOWN " + TypeSafety.GetValue<string>(r["status"]) }; message = dataBinding.SetMessageForced(message); } if (message != null) { DeliveryReportEntity report = new DeliveryReportEntity(); report.ChangeId = TypeSafety.GetValue<long>(r["changeid"]); report.MessageId = message.MessageId; report.SentId = TypeSafety.GetValue<long>(r["sentid"].ToString()); report.Status = TypeSafety.GetValue<string>(r["status"]); report.StatusDate = TypeSafety.GetValue<DateTime>(r["statusdate"], DateTime.Now); dataBinding.InsertDeliveryReport(report); } } catch (Exception ex) { System.Threading.Thread.Sleep(1); } } ); recordsProcessed = results.Tables["data"].Rows.Count > 0; if (recordsProcessed) { long latestID = results.Tables["data"].AsEnumerable().Max(s => TypeSafety.GetValue<long>(s["changeid"])); dataBinding.UpdateSentSettingsLatestID(latestID, account.AccountId); } } } while (recordsProcessed); } } }
public static void RefreshCredits() { using (var service = new MyMobileAPIService.APISoapClient()) using (var dataBinding = new MessageDataAccessor()) { foreach (var account in dataBinding.GetAccounts()) { string resultXml = service.Credits_STR(account.Username, account.Password); CreditResultEntity results = Serializer.DeserializeXml<CreditResultEntity>(resultXml); if (results != null && results.Credits != null) { dataBinding.SetCredit(new CreditEntity() { AccountId = account.AccountId, Amount = results.Credits.CreditAmount }); } } } }
private static List<SendServiceCallEntity> GetAccountList(ICollection<MessageEntity> messages) { using (var dataBinding = new MessageDataAccessor()) { List<SendServiceCallEntity> dataList = new List<SendServiceCallEntity>(); foreach (var account in dataBinding.GetAccounts()) { // Get default settings from database SendServiceCallEntity data = GetSendBatch(account); int counter = 0; List<MessageEntity> entries = new List<MessageEntity>(); // Get all the messages where the number starts with the account's prefix // and where the message is valid. foreach (var message in messages.Where(p => p.IsValid && (p.NumberTo.StartsWith(account.CountryCodePrefix)) || (p.NumberTo.StartsWith("+"+account.CountryCodePrefix)))) { ProcessMessagesToServiceCall(dataList, account, ref data, ref counter, ref entries, message); } AddMessagesToServiceCallList(dataList, data, entries); } return dataList; } }