private HostStandbySetting GetSettingFromInput(HostStandbySetting setting) { if (setting == null) { setting = new HostStandbySetting(); } setting.ParkID = this.comPark.SelectedParkID; setting.HostIP = this.ucipHost.IP; setting.StandbyIP = this.ucipStandby.IP; setting.SendSMS = this.chkSendSMS.Checked; setting.SMSItems = new List <SMSItem>(); foreach (DataGridViewRow row in this.gvSMSList.Rows) { if (!row.IsNewRow) { SMSItem item = new SMSItem(); item.Name = Convert.ToString(row.Cells["colName"].Value).Trim(); item.Telephone = Convert.ToString(row.Cells["colTelephone"].Value).Trim(); setting.SMSItems.Add(item); } } return(setting); }
public static void QueueSms(IQueryable <Person> q, int iSendGroupID, string sTitle, string sMessage) { // Create new SMS send list var list = new SMSList(); list.Created = DateTime.Now; list.SendAt = DateTime.Now; list.SenderID = Util.UserPeopleId ?? 1; list.SendGroupID = iSendGroupID; list.Title = sTitle; list.Message = sMessage; DbUtil.Db.SMSLists.InsertOnSubmit(list); DbUtil.Db.SubmitChanges(); // Load all people but tell why they can or can't be sent to foreach (var i in q) { var item = new SMSItem(); item.ListID = list.Id; item.PeopleID = i.PeopleId; if (!string.IsNullOrEmpty(i.CellPhone)) { item.Number = i.CellPhone; } else { item.Number = ""; item.NoNumber = true; } if (!i.ReceiveSMS) { item.NoOptIn = true; } DbUtil.Db.SMSItems.InsertOnSubmit(item); } DbUtil.Db.SubmitChanges(); // Check for how many people have cell numbers and want to receive texts var qSMS = from p in q where p.CellPhone != null where p.ReceiveSMS select p; var countSMS = qSMS.Count(); // Add counts for SMS, e-Mail and none list.SentSMS = countSMS; list.SentNone = q.Count() - countSMS; DbUtil.Db.SubmitChanges(); ProcessQueue(list.Id); }
public static string SendSmsReplyIncoming(CMSDataContext db, int receivedId, Person p, string toNumber, SMSNumber fromNumber, string title, string message) { string sSid = GetSid(db); string sToken = GetToken(db); var list = new SMSList { Created = DateTime.Now, SendAt = DateTime.Now, SenderID = db.UserPeopleId ?? 1, SendGroupID = fromNumber.GroupID, Title = title, Message = message, ReplyToId = receivedId }; var item = new SMSItem { ListID = list.Id, PeopleID = p?.PeopleId, Number = toNumber, }; list.SMSItems.Add(item); var r = new TextReplacements(db, message); if (item.PeopleID != null) { message = r.DoReplacements(item); } var response = SendSmsInternal(sSid, sToken, fromNumber.Number, toNumber, message); var succeeded = !IsSmsFailed(response); if (succeeded) { list.SentSMS = 1; item.Sent = true; } db.SMSLists.InsertOnSubmit(list); db.SubmitChanges(); if (succeeded) { db.Connection.Execute( "update dbo.SmsReceived set RepliedTo = @replied where id = @id", new { replied = true, id = receivedId }); } return(ResultMessage(response, toNumber)); }
/// <summary> /// This checks that the Twilio web hook didn't already update the status /// If so, we update just the Sent flag /// </summary> public static void UpdateSMSItemStatus(CMSDataContext db, SMSItem item, MessageResource response) { if (IsSmsFailed(response)) { item.ErrorMessage = $"({response.ErrorCode}) {response.ErrorMessage}".MaxString(150); } bool failed = true; item.ResultStatus = $"{response.Status}"; do { try { item.Sent = true; db.SubmitChanges(ConflictMode.FailOnFirstConflict); failed = false; } catch (ChangeConflictException) { db.Refresh(RefreshMode.OverwriteCurrentValues, item); } } while (failed); }
public static void QueueSms(Guid iQBID, int iSendGroupID, string sTitle, string sMessage) { var q = DbUtil.Db.PeopleQuery(iQBID); // Create new SMS send list var list = new SMSList(); list.Created = DateTime.Now; list.SendAt = DateTime.Now; list.SenderID = Util.UserPeopleId ?? 1; list.SendGroupID = iSendGroupID; list.Title = sTitle; list.Message = sMessage; DbUtil.Db.SMSLists.InsertOnSubmit(list); DbUtil.Db.SubmitChanges(); // Load all people but tell why they can or can't be sent to foreach (var i in q) { var item = new SMSItem(); item.ListID = list.Id; item.PeopleID = i.PeopleId; if (!string.IsNullOrEmpty(i.CellPhone)) { item.Number = i.CellPhone; } else { item.Number = ""; item.NoNumber = true; } if (!i.ReceiveSMS) { item.NoOptIn = true; } DbUtil.Db.SMSItems.InsertOnSubmit(item); } DbUtil.Db.SubmitChanges(); // Check for how many people have cell numbers and want to receive texts var qSMS = from p in q where p.CellPhone != null where p.ReceiveSMS select p; var countSMS = qSMS.Count(); // Add counts for SMS, e-Mail and none list.SentSMS = countSMS; list.SentNone = q.Count() - countSMS; DbUtil.Db.SubmitChanges(); ProcessQueue(list.Id); }
private static void QueueSms(CMSDataContext db, IQueryable <Person> q, int iSendGroupID, string sTitle, string sMessage, DateTime?schedule) { // Create new SMS send list var list = new SMSList(); var now = DateTime.Now; list.Created = now; list.SendAt = schedule ?? now; list.SenderID = db.UserPeopleId ?? 1; list.SendGroupID = iSendGroupID; list.Title = sTitle; list.Message = sMessage; db.SMSLists.InsertOnSubmit(list); db.SubmitChanges(); // Load all people but tell why they can or can't be sent to var personOptouts = from person in q select new { person, optOutGroup = person.SmsGroupOptOuts.Any(vv => vv.FromGroup == iSendGroupID) }; foreach (var personOptout in personOptouts) { var item = new SMSItem { ListID = list.Id, PeopleID = personOptout.person.PeopleId }; if (!string.IsNullOrEmpty(personOptout.person.CellPhone)) { item.Number = personOptout.person.CellPhone; } else { item.Number = ""; item.NoNumber = true; } if (!personOptout.person.ReceiveSMS || personOptout.optOutGroup) { item.NoOptIn = true; } db.SMSItems.InsertOnSubmit(item); } list.ReadyToSend = true; db.SubmitChanges(); // Check for how many people have cell numbers and want to receive texts var qSMS = from personOptout in personOptouts where personOptout.person.CellPhone != null where personOptout.person.ReceiveSMS where !personOptout.optOutGroup select personOptout.person; var countSMS = qSMS.Count(); // Add counts for SMS, e-Mail and none list.SentSMS = countSMS; list.SentNone = q.Count() - countSMS; db.SubmitChanges(); if (list.SendAt <= now) { if (Util.IsDebug()) { ProcessQueue(db, list.Id); } else { ExecuteCmsTwilio(list.Id, db.Host); } } }
private void ShowSMSItemOnGrid(DataGridViewRow row, SMSItem item) { row.Tag = item; row.Cells["colName"].Value = item.Name; row.Cells["colTelephone"].Value = item.Telephone; }