コード例 #1
0
        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);
        }
コード例 #2
0
 public PartialViewResult SaveReplyWords(SmsReplyWordsModel model)
 {
     model.Save();
     model.PopulateMetaData();
     return(PartialView("ReplyWordsTab", model));
 }
コード例 #3
0
 public PartialViewResult AddReplyWord(SmsReplyWordsModel model)
 {
     model.PopulateMetaData();
     model.Actions.Add(new SmsReplyWordsActionModel());
     return(PartialView("ReplyWords", model));
 }
コード例 #4
0
 public PartialViewResult ReplyWordActionChanged(SmsReplyWordsModel model)
 {
     model.PopulateMetaData();
     return(PartialView("ReplyWords", model));
 }
コード例 #5
0
 public PartialViewResult ReplyWordsGroupChanged(SmsReplyWordsModel model)
 {
     model.PopulateActions();
     return(PartialView("ReplyWords", model));
 }
コード例 #6
0
        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());
        }