private UserActionsQuery ExtractRequestActions_Index()
        {
            UserActionsQuery ausgabe = new UserActionsQuery();

            string languageToSelect = "";
            bool needLanguageToSelect = false;
            string submittedUserName = "";
            bool isUserNameSubmitted = false;
            bool isAnsewerChatAgainSubmitted = false;
            bool needChatAgain = false;

            foreach (string k in Request.Form.Keys)
            {
                string val = Request.Form[k];

                if (k == SingleDialogueModelHelper.SetLanguageButtonName) { needLanguageToSelect = true; }
                else if (k == SingleDialogueModelHelper.languageDropDownName) { languageToSelect = val; }
                else if (k == SingleDialogueModelHelper.reportNameTextBoxName) { submittedUserName = val; }
                else if (k == SingleDialogueModelHelper.reportNameButtonName) { isUserNameSubmitted = true; }
                else if (k == SingleDialogueModelHelper.chatAgainNOButtonName) { isAnsewerChatAgainSubmitted = true; }
                else if (k == SingleDialogueModelHelper.chatAgainYESButtonName) { isAnsewerChatAgainSubmitted = true; needChatAgain = true; }
            }

            if (needLanguageToSelect) { ausgabe.AddUserAction(_dialogViewIndex, new Dialog_Processor.Action_SetSelectedLanguage { newLang = languageToSelect }); }
            if (isUserNameSubmitted) { ausgabe.AddUserAction(_dialogViewIndex, new Dialog_Processor.Action_ReportUserName { userName = submittedUserName }); }
            if (isAnsewerChatAgainSubmitted) { ausgabe.AddUserAction(_dialogViewIndex, new Dialog_Processor.Action_AcceptChatAgain { needChatAgain = needChatAgain }); }

            return ausgabe;
        }
        private UserActionsQuery ExtractRequestActions_Index()
        {
            UserActionsQuery ausgabe = new UserActionsQuery();

            int subViewID = 0;
            bool needAddNewLanguage = false;
            bool needRemoveOldLanguage = false;

            List<int> subDlg_index = new List<int>();
            Dictionary<int, string> subDlg_languageToSelect = new Dictionary<int, string>(); ;
            Dictionary<int, bool> subDlg_needLanguageToSelect = new Dictionary<int, bool>();
            Dictionary<int, string> subDlg_submittedUserName = new Dictionary<int, string>();
            Dictionary<int, bool> subDlg_isUserNameSubmitted = new Dictionary<int, bool>();
            Dictionary<int, bool> subDlg_isAnsewerChatAgainSubmitted = new Dictionary<int, bool>();
            Dictionary<int, bool> subDlg_needChatAgain = new Dictionary<int, bool>();

            foreach (string k in Request.Form.Keys)
            {
                string val = Request.Form[k];

                if (k == MultiDialogueModel.AddNewLanguageButtonName) { needAddNewLanguage = true; }
                else if (k == MultiDialogueModel.RemoveOldLanguageButtonName) { needRemoveOldLanguage = true; }
                else if (k.StartsWith(SingleDialogueModelHelper.ControlNamePrefix))
                {
                    subViewID = SingleDialogueModelHelper.extractSubViewIdFromControlNameWithPrefix(k);
                    string subViewControlName = SingleDialogueModelHelper.extractRawControlName(k);

                    subDlg_index.Add(subViewID);
                    if (subViewControlName == SingleDialogueModelHelper.SetLanguageButtonName) { subDlg_needLanguageToSelect.Add(subViewID, true); }
                    else if (subViewControlName == SingleDialogueModelHelper.languageDropDownName) { subDlg_languageToSelect.Add(subViewID, val); }
                    else if (subViewControlName == SingleDialogueModelHelper.reportNameTextBoxName) { subDlg_submittedUserName.Add(subViewID, val); }
                    else if (subViewControlName == SingleDialogueModelHelper.reportNameButtonName) { subDlg_isUserNameSubmitted.Add(subViewID, true); }
                    else if (subViewControlName == SingleDialogueModelHelper.chatAgainNOButtonName) { subDlg_isAnsewerChatAgainSubmitted.Add(subViewID, true); subDlg_needChatAgain.Add(subViewID, false); }
                    else if (subViewControlName == SingleDialogueModelHelper.chatAgainYESButtonName) { subDlg_isAnsewerChatAgainSubmitted.Add(subViewID, true); subDlg_needChatAgain.Add(subViewID, true); }
                }
            }

            if (needAddNewLanguage) { ausgabe.AddUserAction(_multiDialogViewIndex, new MultipleDialogs_Processor.Action_AddNewDialog()); }
            if (needRemoveOldLanguage) { ausgabe.AddUserAction(_multiDialogViewIndex, new MultipleDialogs_Processor.Action_RemoveLastDialog()); }

            for (int i = 0; i < subDlg_index.Count; i++)
            {
                if (subDlg_needLanguageToSelect.ContainsKey(subDlg_index[i]))
                { ausgabe.AddUserAction(_multiDialogViewIndex, new MultipleDialogs_Processor.SubDialogAction_SetSelectedLanguage { newLang = subDlg_languageToSelect[subDlg_index[i]], subDialogID = subDlg_index[i] }); }
                if (subDlg_isUserNameSubmitted.ContainsKey(subDlg_index[i]))
                { ausgabe.AddUserAction(_multiDialogViewIndex, new MultipleDialogs_Processor.SubDialogAction_ReportUserName { userName = subDlg_submittedUserName[subDlg_index[i]], subDialogID = subDlg_index[i] }); }
                if (subDlg_isAnsewerChatAgainSubmitted.ContainsKey(subDlg_index[i]))
                { ausgabe.AddUserAction(_multiDialogViewIndex, new MultipleDialogs_Processor.SubDialogAction_AcceptChatAgain { needChatAgain = subDlg_needChatAgain[subDlg_index[i]], subDialogID = subDlg_index[i] }); }
            }
            return ausgabe;
        }
        public void InvokeUserActions(UserActionsQuery actionsQuery)
        {
            foreach (OpaUserAction act in actionsQuery.actions)
            {
                InvokeUserAction(act);
            }

            ViewStateManager.saveViewToViewState(UserView);
        }