private Dictionary <int, IRItem> GenerateProcessItems(string sqlquery) { SQLServerAccessor dbAccessor = new SQLServerAccessor(); List <Dictionary <string, string> > output = dbAccessor.TableSearch(targetColumns, sqlquery); Dictionary <int, IRItem> dict = new Dictionary <int, IRItem>(); int index = 0; foreach (Dictionary <string, string> rec in output) { IRItem item = new IRItem(); item.index = index++; item.stepNo = int.Parse(rec["StepNo"]); item.content = rec["Content"]; item.options = rec["Options"]; item.optionRegex = rec["OptionRegex"]; item.nextStep = rec["NextStep"]; item.askbackMessage = rec["AskbackMessage"]; dict.Add(item.stepNo, item); } return(dict); }
public string ProcessItem(string userId, string userAnswer, ref IRContext context, ref IRInfo info) { //context.stage = StageType.InProcess; int currentStep = context.processContext.currentStepNo; IRItem item = info.items[currentStep]; if (Utils.Utils.IsRegexMatched(item.optionRegex, userAnswer)) { context.processContext.askbackTime = 0; int nextStep = GetNextStep(context.processContext.preStepNumbers, item.nextStep, userAnswer); if (nextStep == GetLastStep(info.items)) // Finished { context.stage = StageType.Completed; } context.processContext.preStepNumbers.Add(currentStep); string respStr = info.items[nextStep].content + "\r\n" + info.items[nextStep].options; context.processContext.currentStepNo = nextStep; return(respStr); } else { if (context.stage == StageType.InProcess) { context.processContext.askbackTime++; } if (context.processContext.askbackTime > info.askBackLimitTimes) { string respStr = info.quitMessage; context.stage = StageType.Paused; return(respStr); } else { return(item.askbackMessage + "\r\n" + item.content + item.options); } } }