Beispiel #1
0
        public async Task EventHandler(IDialogContext context, Activity activity)
        {
            JObject          json = activity.Value as JObject;
            List <InputData> data = getReplyData(json);

            //has the mandatory info
            if (data.Count >= 2)
            {
                //json structure is correct
                if (data[0].attribute == REPLY_ATR && data[1].attribute == DIALOG_ATR)
                {
                    ClickType  event_click  = getClickType(data[0].value);
                    DialogType event_dialog = getDialogType(data[1].value);

                    //event of this dialog
                    if (event_dialog == DialogType.FILTER &&
                        event_click != ClickType.NONE)
                    {
                        switch (event_click)
                        {
                        case ClickType.PAGINATION:
                            page++;
                            await StartAsync(context);

                            break;

                        case ClickType.FILTER:
                            data.RemoveAt(0);       //remove reply_type
                            data.RemoveAt(0);       //remove dialog

                            StateHelper.SetFilters(FilterLogic.GetFilterFromForm(data), context);

                            foreach (Filter f in StateHelper.GetFilters(context))
                            {
                                StateHelper.AddFilterCount(context, f);
                            }

                            this.state = State.FILTER;
                            await StartAsync(context);

                            break;

                        case ClickType.FILTER_AGAIN:
                            this.state = State.FILTER_AGAIN;
                            await StartAsync(context);

                            break;
                        }
                    }
                    // event of other dialog
                    else
                    {
                        context.Done(new CODE(DIALOG_CODE.PROCESS_EVENT, activity, event_dialog));
                    }
                }
                else
                {
                    context.Done(new CODE(DIALOG_CODE.DONE));
                }
            }
            else
            {
                context.Done(new CODE(DIALOG_CODE.DONE));
            }
        }