public SmsReplyWordsModel FindGroup() { var m = new SmsReplyWordsModel(CurrentDatabase); var group = (from grp in CurrentDatabase.SMSGroups join num in CurrentDatabase.SMSNumbers on grp.Id equals num.GroupID where num.Number == To select grp).FirstOrDefault(); if (group == null) { throw new Exception($"could not find group from number {To}"); } m.GroupId = group.Id.ToString(); groupName = group.Name; m.PopulateActions(); row.ToGroupId = m.GroupIdInt; return(m); }
public PartialViewResult SaveReplyWords(SmsReplyWordsModel model) { model.Save(); model.PopulateMetaData(); return(PartialView("ReplyWordsTab", model)); }
public PartialViewResult AddReplyWord(SmsReplyWordsModel model) { model.PopulateMetaData(); model.Actions.Add(new SmsReplyWordsActionModel()); return(PartialView("ReplyWords", model)); }
public PartialViewResult ReplyWordActionChanged(SmsReplyWordsModel model) { model.PopulateMetaData(); return(PartialView("ReplyWords", model)); }
public PartialViewResult ReplyWordsGroupChanged(SmsReplyWordsModel model) { model.PopulateActions(); return(PartialView("ReplyWords", model)); }
public string ProcessAndRespond() { try { model = FindGroup(); person = FindPerson(); } catch (Exception e) { return(GetError(e.Message)); } foreach (var r in model.Actions) { action = r; if (!Body.Equal(action.Word)) { continue; } row.Action = action.Action; string rval = null; switch (action.Action) { case "OptOut": rval = GroupOptOut(); break; case "OptIn": rval = GroupOptIn(); break; case "Attending": rval = MarkAttendingIntention(AttendCommitmentCode.Attending); break; case "Regrets": rval = MarkAttendingIntention(AttendCommitmentCode.Regrets); break; case "RecordAttend": rval = RecordAttendance(); break; case "AddToOrg": rval = AddToOrg(); break; case "AddToOrgSg": rval = AddToSmallGroup(); break; case "SendAnEmail": rval = SendAnEmail(); break; case "SendReplyOnly": rval = GetActionReplyMessage(); break; case "RunScript": rval = RunScript(); break; default: rval = GetError($"{action.Action} action not recognized for {action.Word} on number {To}"); break; } if (rval != null) { return(rval); } } var sendReplyOnlyActionWithNoWord = model.Actions.SingleOrDefault(vv => vv.Action == "SendReplyOnly" && string.IsNullOrEmpty(vv.Word)); if (sendReplyOnlyActionWithNoWord != null) { return(GetActionReplyMessage()); } //Reply word never found in loop, must be a regular text message return(ReceivedTextNoAction()); }