public ActionResult GetSettings(string formid)//List<FormInfoModel> ModelList, string formid)
        {
            FormSettingRequest FormSettingReq = new Enter.Common.Message.FormSettingRequest();
            List <KeyValuePair <int, string> > TempColumns = new List <KeyValuePair <int, string> >();
            //Get All forms
            List <FormsHierarchyDTO> FormsHierarchy = GetFormsHierarchy(formid);
            // List<FormSettingResponse> FormSettingResponseList = new List<FormSettingResponse>();
            List <SettingsInfoModel> ModelList = new List <SettingsInfoModel>();

            foreach (var Item in FormsHierarchy)
            {
                FormSettingReq.GetXml          = true;
                FormSettingReq.FormInfo.FormId = new Guid(Item.FormId).ToString();
                FormSettingReq.FormInfo.UserId = SurveyHelper.GetDecryptUserId(Session["UserId"].ToString());
                FormSettingReq.CurrentOrgId    = int.Parse(Session["SelectedOrgId"].ToString());
                //Getting Column Name  List

                FormSettingResponse FormSettingResponse = _isurveyFacade.GetFormSettings(FormSettingReq);
                //  FormSettingResponseList.Add(FormSettingResponse);



                // FormSettingResponse FormSettingResponse = _isurveyFacade.GetFormSettings(FormSettingReq);
                Columns     = FormSettingResponse.FormSetting.ColumnNameList.ToList();
                TempColumns = Columns;
                Columns.Sort(Compare);


                Dictionary <int, string> dictionary = Columns.ToDictionary(pair => pair.Key, pair => pair.Value);
                SettingsInfoModel        Model      = new SettingsInfoModel();
                Model.SelectedControlNameList = dictionary;

                Columns = FormSettingResponse.FormSetting.FormControlNameList.ToList();
                // Get Additional Metadata columns
                if (!FormSettingResponse.FormInfo.IsSQLProject)
                {
                    var MetaDataColumns = Epi.Web.MVC.Constants.Constant.MetaDaTaColumnNames();
                    Dictionary <int, string> Columndictionary = TempColumns.ToDictionary(pair => pair.Key, pair => pair.Value);

                    foreach (var item in MetaDataColumns)
                    {
                        if (!Columndictionary.ContainsValue(item))
                        {
                            Columns.Add(new KeyValuePair <int, string>(Columns.Count() + 1, item));
                        }
                    }

                    Columns.Sort(Compare);
                }

                Dictionary <int, string> dictionary1 = Columns.ToDictionary(pair => pair.Key, pair => pair.Value);

                Model.FormControlNameList = dictionary1;



                Columns = FormSettingResponse.FormSetting.AssignedUserList.ToList();
                if (Columns.Exists(col => col.Value == Session["UserEmailAddress"].ToString()))
                {
                    Columns.Remove(Columns.First(u => u.Value == Session["UserEmailAddress"].ToString()));
                }

                //Columns.Sort(Compare);

                Dictionary <int, string> dictionary2 = Columns.ToDictionary(pair => pair.Key, pair => pair.Value);

                Model.AssignedUserList = dictionary2;



                Columns = FormSettingResponse.FormSetting.UserList.ToList();

                if (Columns.Exists(col => col.Value == Session["UserEmailAddress"].ToString()))
                {
                    Columns.Remove(Columns.First(u => u.Value == Session["UserEmailAddress"].ToString()));
                }
                //Columns.Sort(Compare);

                Dictionary <int, string> dictionary3 = Columns.ToDictionary(pair => pair.Key, pair => pair.Value);

                Model.UserList = dictionary3;

                Columns = FormSettingResponse.FormSetting.AvailableOrgList.ToList();
                Dictionary <int, string> dictionary4 = Columns.ToDictionary(pair => pair.Key, pair => pair.Value);
                Model.AvailableOrgList = dictionary4;

                Columns = FormSettingResponse.FormSetting.SelectedOrgList.ToList();
                Dictionary <int, string> dictionary5 = Columns.ToDictionary(pair => pair.Key, pair => pair.Value);
                Model.SelectedOrgList = dictionary5;

                Model.IsShareable            = FormSettingResponse.FormInfo.IsShareable;
                Model.IsDraftMode            = FormSettingResponse.FormInfo.IsDraftMode;
                Model.FormOwnerFirstName     = FormSettingResponse.FormInfo.OwnerFName;
                Model.FormOwnerLastName      = FormSettingResponse.FormInfo.OwnerLName;
                Model.FormName               = FormSettingResponse.FormInfo.FormName;
                Model.FormId                 = Item.FormId;
                Model.DataAccessRuleIds      = FormSettingResponse.FormSetting.DataAccessRuleIds;
                Model.SelectedDataAccessRule = FormSettingResponse.FormSetting.SelectedDataAccessRule;
                Model.HasDraftModeData       = FormSettingResponse.FormInfo.HasDraftModeData;
                var DataAccessRuleDescription = "";
                foreach (var item in FormSettingResponse.FormSetting.DataAccessRuleDescription)
                {
                    DataAccessRuleDescription = DataAccessRuleDescription + item.Key.ToString() + " : " + item.Value + "\n";
                }

                Model.DataAccessRuleDescription = DataAccessRuleDescription;
                ModelList.Add(Model);
            }
            return(PartialView("Settings", ModelList));
        }
        public ActionResult GetSettings(string formId)//List<FormInfoModel> ModelList, string formid)
        {
            var projectId    = GetStringSessionValue(UserSession.Key.ProjectId);
            var userId       = GetIntSessionValue(UserSession.Key.UserId);
            var currentOrgId = GetIntSessionValue(UserSession.Key.SelectedOrgId);

            List <KeyValuePair <int, string> > tempColumns = new List <KeyValuePair <int, string> >();
            //Get All forms
            List <FormsHierarchyDTO>  formsHierarchy     = GetFormsHierarchy(/*FromURL*/ formId);
            List <SettingsInfoModel>  modelList          = new List <SettingsInfoModel>();
            List <FormSettingRequest> formSettingReqList = new List <FormSettingRequest>();

            foreach (var Item in formsHierarchy)
            {
                FormSettingRequest formSettingReq = new FormSettingRequest {
                    ProjectId = projectId
                };
                formSettingReq.GetMetadata     = true;
                formSettingReq.FormInfo.FormId = new Guid(Item.FormId).ToString();
                formSettingReq.FormInfo.UserId = userId;
                formSettingReq.CurrentOrgId    = currentOrgId;
                formSettingReqList.Add(formSettingReq);
            }

            //Getting Column Name  List
            List <FormSettingResponse> formSettingResponseList = _surveyFacade.GetFormSettingsList(formSettingReqList);

            foreach (var formSettingResponse in formSettingResponseList)
            {
                _columns    = formSettingResponse.FormSetting.ColumnNameList.ToList();
                tempColumns = _columns;
                _columns.Sort(Compare);

                Dictionary <int, string> dictionary = _columns.ToDictionary(pair => pair.Key, pair => pair.Value);
                SettingsInfoModel        model      = new SettingsInfoModel();
                model.SelectedControlNameList = dictionary;

                _columns = formSettingResponse.FormSetting.FormControlNameList.ToList();

                // Get Additional Metadata columns

                /* var metadataColumns = Epi.Cloud.Common.Constants.Constant.MetadataColumnNames();
                 * Dictionary<int, string> columnDictionary = tempColumns.ToDictionary(pair => pair.Key, pair => pair.Value);
                 *
                 * foreach (var item in metadataColumns)
                 * {
                 *   if (!columnDictionary.ContainsValue(item))
                 *   {
                 *       _columns.Add(new KeyValuePair<int, string>(_columns.Count() + 1, item));
                 *   }
                 * }*/

                _columns.Sort(Compare);

                Dictionary <int, string> dictionary1 = _columns.ToDictionary(pair => pair.Key, pair => pair.Value);

                model.FormControlNameList = dictionary1;

                string sessionUserEmailAddress = GetStringSessionValue(UserSession.Key.UserEmailAddress);

                _columns = formSettingResponse.FormSetting.AssignedUserList.ToList();
                if (_columns.Exists(col => col.Value == sessionUserEmailAddress))
                {
                    _columns.Remove(_columns.First(u => u.Value == sessionUserEmailAddress));
                }

                //Columns.Sort(Compare);

                Dictionary <int, string> dictionary2 = _columns.ToDictionary(pair => pair.Key, pair => pair.Value);

                model.AssignedUserList = dictionary2;

                _columns = formSettingResponse.FormSetting.UserList.ToList();

                if (_columns.Exists(col => col.Value == sessionUserEmailAddress))
                {
                    _columns.Remove(_columns.First(u => u.Value == sessionUserEmailAddress));
                }

                Dictionary <int, string> dictionary3 = _columns.ToDictionary(pair => pair.Key, pair => pair.Value);

                model.UserList = dictionary3;

                _columns = formSettingResponse.FormSetting.AvailableOrgList.ToList();
                Dictionary <int, string> dictionary4 = _columns.ToDictionary(pair => pair.Key, pair => pair.Value);
                model.AvailableOrgList = dictionary4;

                _columns = formSettingResponse.FormSetting.SelectedOrgList.ToList();
                Dictionary <int, string> dictionary5 = _columns.ToDictionary(pair => pair.Key, pair => pair.Value);
                model.SelectedOrgList = dictionary5;

                model.IsShareable            = formSettingResponse.FormInfo.IsShareable;
                model.IsDraftMode            = formSettingResponse.FormInfo.IsDraftMode;
                model.FormOwnerFirstName     = formSettingResponse.FormInfo.OwnerFName;
                model.FormOwnerLastName      = formSettingResponse.FormInfo.OwnerLName;
                model.FormName               = formSettingResponse.FormInfo.FormName;
                model.FormId                 = formSettingResponse.FormInfo.FormId;
                model.DataAccessRuleIds      = formSettingResponse.FormSetting.DataAccessRuleIds;
                model.SelectedDataAccessRule = formSettingResponse.FormSetting.SelectedDataAccessRule;
                model.HasDraftModeData       = formSettingResponse.FormInfo.HasDraftModeData;
                var DataAccessRuleDescription = "";
                foreach (var item in formSettingResponse.FormSetting.DataAccessRuleDescription)
                {
                    DataAccessRuleDescription = DataAccessRuleDescription + item.Key.ToString() + " : " + item.Value + "\n";
                }

                model.DataAccessRuleDescription = DataAccessRuleDescription;
                modelList.Add(model);
            }
            return(PartialView("Settings", modelList));
        }