Ejemplo n.º 1
0
        public ActionResult GetColumns(XMLSettingVM vm)
        {
            Cache.DelCache("setedColumns");
            Cache.DelCache("XMLMappings");

            var options = new StringBuilder();

            options.AppendFormat("<option value='{0}'>{1}</option>", "", "-Please Select-");

            using (tblSQLColumnsRepository rep = new tblSQLColumnsRepository())
            {
                List <tblSQLColumns> allColumns = rep.getAllColumns(vm.SQLName).ToList();
                foreach (var c in allColumns)
                {
                    options.AppendFormat("<option value='{0}'>{1}</option>", c.ColumnName, c.ColumnName);
                }
            }

            // Father Tag Option
            var fatherTag = new StringBuilder();

            fatherTag.AppendFormat("<option value='{0}'>{1}</option>", "", "-Please Select-");

            var jsonData = new
            {
                Options          = options.ToString(),
                FatherTagOptions = fatherTag.ToString()
            };

            return(Json(jsonData));
        }
Ejemplo n.º 2
0
        [OutputCache(NoStore = true, Duration = 0)] // 以防Server取得的是Cache,必須即時更新
        public ActionResult ShowXML(XMLSettingVM vm)
        {
            // 限定同網站的Ajax專用
            if (!Request.IsAjaxRequest())
            {
                return(Content("Fail"));
            }

            #region 取得暫存 Session XMLMappings
            List <tblXMLMapping> xmlMappings = new List <tblXMLMapping>();
            string ColumnName = string.Empty;

            try
            {
                xmlMappings = JsonConvert.DeserializeObject <List <tblXMLMapping> >(Cache.GetCache("XMLMappings"));
            }
            catch { }
            #endregion

            #region 依指定SQL語句抓取資料
            using (tblSQLSettingRepository setting = new tblSQLSettingRepository())
            {
                tblSQLSetting SQLSetting = setting.select(vm.SQLName);
                if (SQLSetting != null)
                {
                    using (DataAccess da = new DataAccess())
                    {
                        string sql = Func.SqlPlusTop(SQLSetting.SQLStatement, SQLSetting.DataRow);
                        Tuple <bool, DataTable, string> result = da.TryExecuteDataTable(sql);
                        DataTable dt = result.Item2;

                        XmlDocument xmlDoc = XmlProcess.GenerateXML(dt, xmlMappings);

                        //XmlDocument xmlDoc = new XmlDocument();
                        ////根節點 只有1個
                        //var rootTag = xmlMappings.Where(x => string.IsNullOrEmpty(x.FatherTag)).First();

                        //XmlElement root = xmlDoc.CreateElement(rootTag.TagName);
                        //for (int i = 0; i < dt.Rows.Count; i++)
                        //    appendXmlByRow(dt.Rows[i], xmlMappings, xmlDoc, root, rootTag.TagName, 1);

                        ////addSubElement(xmlMappings, xmlDoc, root, rootTag.TagName, dt);
                        //xmlDoc.AppendChild(root);

                        model.XMLView = Server.HtmlEncode(Func.BeautifyXML(xmlDoc));
                    }
                }
                else
                {
                    model.XMLView = "找不到指定的 SQL 設定!";
                }
            }
            #endregion

            return(PartialView("_XMLView", model));
        }
Ejemplo n.º 3
0
        public ActionResult Save(XMLSettingVM vm, string[] DateFormats)
        {
            if (string.IsNullOrEmpty(vm.XMLName))
            {
                vm.SaveResult += "請輸入 XML Name!\r\n";
            }
            if (string.IsNullOrEmpty(vm.CustomerName))
            {
                vm.SaveResult += "請輸入 Customer Name!\r\n";
            }
            if (string.IsNullOrEmpty(vm.SQLName))
            {
                vm.SaveResult += "請選擇 SQL Name!\r\n";
            }

            vm.FileNameDateFormat = string.Join(",", DateFormats);

            if (!string.IsNullOrEmpty(vm.SaveResult))
            {
                return(View("Edit", vm));
            }

            #region 取得暫存 Session XMLMappings
            List <tblXMLMapping> xmlMappings = new List <tblXMLMapping>();
            string ColumnName = string.Empty;

            try
            {
                xmlMappings = JsonConvert.DeserializeObject <List <tblXMLMapping> >(Cache.GetCache("XMLMappings"));
            }
            catch (Exception ex) { }
            #endregion

            using (tblXMLSettingRepository setting = new tblXMLSettingRepository())
            {
                vm.SaveResult = setting.Save(vm.XMLName, vm.CustomerName, vm.SQLName, vm.FileName, vm.FileNameDateFormat, vm.UserID, userInfo.Account, xmlMappings);
                if (vm.SaveResult.Equals("ok"))
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(View("Edit", vm));
                }
            }
        }
Ejemplo n.º 4
0
        [OutputCache(NoStore = true, Duration = 0)] // 以防Server取得的是Cache,必須即時更新
        public ActionResult ShowMappingData(XMLSettingVM vm)
        {
            // 限定同網站的Ajax專用
            if (!Request.IsAjaxRequest())
            {
                return(Content("Fail"));
            }

            #region 讀入暫存 Session XMLMappings
            List <tblXMLMapping> xmlMappings = new List <tblXMLMapping>();;
            try
            {
                xmlMappings = JsonConvert.DeserializeObject <List <tblXMLMapping> >(Cache.GetCache("XMLMappings"));
            }
            catch { }
            #endregion

            model.XMLMappingDataRow = xmlMappings.OrderBy(x => x.Idx).ToList();;

            return(PartialView("_XMLMappingRow", model));
        }
Ejemplo n.º 5
0
        public ActionResult DeleteMapping(XMLSettingVM vm)
        {
            #region 從暫存 Session XMLMappings 刪除
            List <tblXMLMapping> xmlMappings = new List <tblXMLMapping>();;
            string ColumnName = string.Empty;

            try
            {
                xmlMappings = JsonConvert.DeserializeObject <List <tblXMLMapping> >(Cache.GetCache("XMLMappings"));
            }
            catch { }
            tblXMLMapping mapping = xmlMappings.Find(x => x.TagName.Equals(vm.TagName, StringComparison.OrdinalIgnoreCase));
            if (mapping != null)
            {
                ColumnName = mapping.FieldName;
                xmlMappings.Remove(mapping);
            }

            Cache.SetLimitedCache("XMLMappings", xmlMappings);

            // Father Tag Option
            var fatherTag = new StringBuilder();
            fatherTag.AppendFormat("<option value='{0}'>{1}</option>", "", "-Please Select-");
            foreach (var m in xmlMappings)
            {
                fatherTag.AppendFormat("<option value='{0}'>{1}</option>", m.TagName, m.TagName);
            }
            #endregion

            #region 從暫存 Session setedColumns 刪除
            List <tblSQLColumns> setedColumns = new List <tblSQLColumns>();;
            try
            {
                setedColumns = JsonConvert.DeserializeObject <List <tblSQLColumns> >(Cache.GetCache("setedColumns"));
            }
            catch { }
            tblSQLColumns column = setedColumns.Find(x => x.ColumnName.Equals(ColumnName, StringComparison.OrdinalIgnoreCase));
            if (column != null)
            {
                setedColumns.Remove(column);
            }

            Cache.SetLimitedCache("setedColumns", setedColumns);
            #endregion

            var options = new StringBuilder();
            options.AppendFormat("<option value='{0}'>{1}</option>", "", "-Please Select-");
            using (tblSQLColumnsRepository rep = new tblSQLColumnsRepository())
            {
                List <tblSQLColumns>        allColumns   = rep.getAllColumns(vm.SQLName).ToList();
                IEnumerable <tblSQLColumns> unsetColumns = allColumns.Except(setedColumns, new ColumnComparer());
                foreach (var c in unsetColumns)
                {
                    options.AppendFormat("<option value='{0}'>{1}</option>", c.ColumnName, c.ColumnName);
                }
            }

            var jsonData = new
            {
                Options          = options.ToString(),
                FatherTagOptions = fatherTag.ToString()
            };
            return(Json(jsonData));
        }
Ejemplo n.º 6
0
        public ActionResult InsertMapping(XMLSettingVM vm)
        {
            List <tblXMLMapping> xmlMappings = new List <tblXMLMapping>();
            string ColumnName = string.Empty;
            int    idx        = -1;

            #region 寫入暫存 Session XMLMappings
            try
            {
                xmlMappings = JsonConvert.DeserializeObject <List <tblXMLMapping> >(Cache.GetCache("XMLMappings"));
            }
            catch { }

            // 判斷 Tag Name 是否有重複
            if (string.IsNullOrEmpty(vm.TagName) || !vm.TagName.Equals(vm.newTagName, StringComparison.OrdinalIgnoreCase))
            {
                tblXMLMapping map = xmlMappings.Find(x => x.TagName.Equals(vm.newTagName, StringComparison.OrdinalIgnoreCase) &&
                                                     x.FatherTag.Equals(vm.FatherTag, StringComparison.OrdinalIgnoreCase));
                if (map != null)
                {
                    var result = new
                    {
                        status = "Tag Name 已存在!",
                    };
                    return(Json(result));
                }
            }
            // 更新時 將舊暫存資料刪除
            tblXMLMapping mapping = xmlMappings.Find(x => x.TagName.Equals(vm.TagName, StringComparison.OrdinalIgnoreCase) &&
                                                     x.FatherTag.Equals(vm.FatherTag, StringComparison.OrdinalIgnoreCase));
            if (mapping != null)
            {
                ColumnName = mapping.FieldName;
                idx        = mapping.Idx;
                xmlMappings.Remove(mapping);
            }

            // 將新的設定值寫入
            mapping = new tblXMLMapping()
            {
                TagName      = vm.newTagName,
                FieldName    = vm.FieldName ?? string.Empty,
                DefaultValue = vm.DefaultValue,
                FatherTag    = vm.FatherTag ?? string.Empty,
                Idx          = (idx < 0) ? xmlMappings.Count + 1 : idx,
                CanRepeat    = vm.CanRepeat
            };
            xmlMappings.Add(mapping);
            Cache.SetLimitedCache("XMLMappings", xmlMappings);

            // Father Tag Option
            var fatherTag = new StringBuilder();
            fatherTag.AppendFormat("<option value='{0}'>{1}</option>", "", "-Please Select-");
            foreach (var m in xmlMappings)
            {
                fatherTag.AppendFormat("<option value='{0}'>{1}</option>", m.TagName, m.TagName);
            }
            #endregion

            #region 寫入暫存 Session setedColumns
            List <tblSQLColumns> setedColumns = new List <tblSQLColumns>();;
            try
            {
                setedColumns = JsonConvert.DeserializeObject <List <tblSQLColumns> >(Cache.GetCache("setedColumns"));
            }
            catch { }

            // 更換指定欄位時
            if (!ColumnName.Equals(vm.FieldName))
            {
                // 更新時 將原指定的欄位刪除
                tblSQLColumns column = setedColumns.Find(x => x.ColumnName.Equals(ColumnName, StringComparison.OrdinalIgnoreCase));
                if (column != null)
                {
                    setedColumns.Remove(column);
                }

                // 記錄 新指定的欄位
                if (!string.IsNullOrEmpty(vm.FieldName))
                {
                    tblSQLColumns setedColumn = new tblSQLColumns()
                    {
                        SQLName    = vm.SQLName,
                        ColumnName = vm.FieldName
                    };
                    setedColumns.Add(setedColumn);
                }
            }

            Cache.SetLimitedCache("setedColumns", setedColumns);
            #endregion

            var options = new StringBuilder();
            options.AppendFormat("<option value='{0}'>{1}</option>", "", "-Please Select-");
            using (tblSQLColumnsRepository rep = new tblSQLColumnsRepository())
            {
                List <tblSQLColumns>        allColumns   = rep.getAllColumns(vm.SQLName).ToList();
                IEnumerable <tblSQLColumns> unsetColumns = allColumns.Except(setedColumns, new ColumnComparer());
                foreach (var c in unsetColumns)
                {
                    options.AppendFormat("<option value='{0}'>{1}</option>", c.ColumnName, c.ColumnName);
                }
            }

            var jsonData = new
            {
                status           = "ok",
                Options          = options.ToString(),
                FatherTagOptions = fatherTag.ToString()
            };
            return(Json(jsonData));
        }