⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 field.cs

📁 动易SiteFactory&#8482 网上商店系统1.0源代码
💻 CS
字号:
namespace PowerEasy.CommonModel
{
    using PowerEasy.Common;
    using PowerEasy.Components;
    using PowerEasy.Enumerations;
    using PowerEasy.Model.CommonModel;
    using System;
    using System.Collections.Generic;
    using System.Data;

    public sealed class Field
    {
        private static Serialize<FieldInfo> ser = new Serialize<FieldInfo>();

        private Field()
        {
        }

        public static DataActionState Add(FieldInfo fieldInfo, int modelId)
        {
            DataActionState successed = DataActionState.Successed;
            if (FieldExists(modelId, fieldInfo.FieldName))
            {
                return (successed = DataActionState.Exist);
            }
            FieldType fieldType = fieldInfo.FieldType;
            if (fieldType != FieldType.FileType)
            {
                if ((fieldType == FieldType.MultiplePhotoType) && (DataConverter.CBool(fieldInfo.Settings[2]) && !string.IsNullOrEmpty(fieldInfo.Settings[3])))
                {
                    FieldInfo info2 = new FieldInfo();
                    info2.Id = fieldInfo.Settings[3];
                    info2.FieldName = fieldInfo.Settings[3];
                    info2.FieldType = FieldType.TextType;
                    info2.FieldLevel = 2;
                    info2.OrderId = 0;
                    DataActionState state3 = Add(info2, modelId);
                    if (state3 != DataActionState.Successed)
                    {
                        return state3;
                    }
                }
            }
            else if (DataConverter.CBool(fieldInfo.Settings[3]) && !string.IsNullOrEmpty(fieldInfo.Settings[4]))
            {
                FieldInfo info = new FieldInfo();
                info.Id = fieldInfo.Settings[4];
                info.FieldName = fieldInfo.Settings[4];
                info.FieldType = FieldType.TextType;
                info.FieldLevel = 2;
                info.OrderId = 0;
                DataActionState state2 = Add(info, modelId);
                if (state2 != DataActionState.Successed)
                {
                    return state2;
                }
            }
            if (!ModelManager.AddFieldToTable(fieldInfo, modelId))
            {
                successed = DataActionState.Unknown;
            }
            return successed;
        }

        public static bool Delete(string fieldName, int modelId)
        {
            fieldName = fieldName.ToLower();
            FieldInfo fieldInfoByFieldName = GetFieldInfoByFieldName(modelId, fieldName);
            if (fieldInfoByFieldName.FieldLevel == 0)
            {
                return false;
            }
            if (((fieldInfoByFieldName.FieldType == FieldType.FileType) && !DataConverter.CBool(fieldInfoByFieldName.Settings[3])) && !string.IsNullOrEmpty(fieldInfoByFieldName.Settings[4]))
            {
                Delete(fieldInfoByFieldName.Settings[4], modelId);
            }
            ModelInfo modelInfoById = ModelManager.GetModelInfoById(modelId);
            XmlManage manage = XmlManage.Instance(modelInfoById.Field, XmlType.Content);
            string nodeName = "/ArrayOfFieldInfo/FieldInfo[@Id=\"" + fieldName + "\"]";
            manage.Remove(nodeName);
            if (!UpdateField(modelId, manage.Xml))
            {
                return false;
            }
            return ((fieldInfoByFieldName.FieldType == FieldType.Property) || ModelManager.DeleteTableField(fieldName, modelInfoById.TableName));
        }

        public static bool FieldExists(int modelId, string fieldName)
        {
            string xmlFieldList = GetXmlFieldList(modelId);
            if (string.IsNullOrEmpty(xmlFieldList))
            {
                return false;
            }
            string nodeName = "/ArrayOfFieldInfo/FieldInfo[@Id='" + fieldName.ToLower() + "']";
            return XmlManage.Instance(xmlFieldList, XmlType.Content).ExistsNode(nodeName);
        }

        private static string FieldTypeName(FieldType fieldType)
        {
            Dictionary<FieldType, string> dictionary = new Dictionary<FieldType, string>();
            dictionary.Add(FieldType.TextType, "单行文本");
            dictionary.Add(FieldType.MultipleTextType, "多行文本(不支持HTML)");
            dictionary.Add(FieldType.MultipleHtmlTextType, "多行文本(支持HTML)");
            dictionary.Add(FieldType.ListBoxType, "选项");
            dictionary.Add(FieldType.NumberType, "数字");
            dictionary.Add(FieldType.MoneyType, "货币");
            dictionary.Add(FieldType.DateTimeType, "日期和时间");
            dictionary.Add(FieldType.LookType, "查阅项");
            dictionary.Add(FieldType.LinkType, "超链接");
            dictionary.Add(FieldType.BoolType, "是/否(复选框)");
            dictionary.Add(FieldType.CountType, "计算值");
            dictionary.Add(FieldType.PictureType, "图片");
            dictionary.Add(FieldType.StatusType, "状态");
            dictionary.Add(FieldType.FileType, "文件");
            dictionary.Add(FieldType.MultiplePhotoType, "多图片");
            dictionary.Add(FieldType.ColorType, "颜色代码");
            dictionary.Add(FieldType.NodeType, "节点");
            dictionary.Add(FieldType.TemplateType, "模板");
            dictionary.Add(FieldType.InfoType, "虚链接");
            dictionary.Add(FieldType.SpecialType, "专题");
            dictionary.Add(FieldType.AuthorType, "作者");
            dictionary.Add(FieldType.SourceType, "来源");
            dictionary.Add(FieldType.KeywordType, "关键字");
            dictionary.Add(FieldType.OperatingType, "运行平台");
            dictionary.Add(FieldType.SkinType, "风格");
            dictionary.Add(FieldType.Producer, "厂商");
            dictionary.Add(FieldType.Trademark, "品牌");
            dictionary.Add(FieldType.ContentType, "内容");
            dictionary.Add(FieldType.TitleType, "标题");
            dictionary.Add(FieldType.Property, "商品属性");
            dictionary.Add(FieldType.DownServerType, "下载服务器");
            return dictionary[fieldType];
        }

        public static FieldInfo GetFieldInfoByFieldName(int modelId, string fieldName)
        {
            string xmlField = XmlManage.Instance(GetXmlFieldList(modelId), XmlType.Content).SelectNode("/ArrayOfFieldInfo/FieldInfo[@Id=\"" + fieldName.ToLower() + "\"]");
            return ser.DeserializeField(xmlField);
        }

        public static IList<FieldInfo> GetFieldList(int modelId)
        {
            IList<FieldInfo> fieldListByModelId = ModelManager.GetFieldListByModelId(modelId);
            List<FieldInfo> list2 = new List<FieldInfo>();
            if ((fieldListByModelId != null) && (fieldListByModelId.Count > 0))
            {
                foreach (FieldInfo info in fieldListByModelId)
                {
                    if (info.FieldLevel < 2)
                    {
                        list2.Add(info);
                    }
                }
            }
            return list2;
        }

        public static IList<FieldInfo> GetFieldList(int modelId, bool disable)
        {
            List<FieldInfo> list = new List<FieldInfo>();
            foreach (FieldInfo info in GetFieldList(modelId))
            {
                if (info.Disabled == disable)
                {
                    list.Add(info);
                }
            }
            return list;
        }

        public static DataTable GetFieldNames(int modelId, FieldType[] fieldType)
        {
            DataTable table = new DataTable();
            table.Columns.Add("FieldAlias");
            table.Columns.Add("FieldName");
            foreach (FieldInfo info in ModelManager.GetFieldListByModelId(modelId))
            {
                if ((info.FieldType != fieldType[0]) && (info.FieldType != fieldType[1]))
                {
                    continue;
                }
                DataRow row = table.NewRow();
                row["FieldAlias"] = info.FieldAlias;
                row["FieldName"] = info.FieldName;
                table.Rows.Add(row);
            }
            return table;
        }

        public static string GetFieldTypeName(int fieldType)
        {
            FieldType type = (FieldType) fieldType;
            return FieldTypeName(type);
        }

        public static string GetXmlFieldList(int modelId)
        {
            return ModelManager.GetXmlFieldByModelId(modelId);
        }

        public static string SerializeField(FieldInfo fieldInfo)
        {
            return ser.SerializeField(fieldInfo);
        }

        public static string SerializeFieldList(IList<FieldInfo> fieldList)
        {
            return ser.SerializeFieldList(fieldList);
        }

        public static bool SetDisabled(string fieldName, int modelId, bool disabled)
        {
            XmlManage manage = XmlManage.Instance(GetXmlFieldList(modelId), XmlType.Content);
            string nodeName = "/ArrayOfFieldInfo/FieldInfo[@Id=\"" + fieldName.ToLower() + "\"]";
            manage.SetAttributesValue(nodeName, "Disabled", disabled.ToString().ToLower());
            return UpdateField(modelId, manage.Xml);
        }

        public static bool SetOrderId(IList<FieldInfo> fieldInfoList, int modelId)
        {
            XmlManage manage = XmlManage.Instance(GetXmlFieldList(modelId), XmlType.Content);
            foreach (FieldInfo info in fieldInfoList)
            {
                string nodeName = "/ArrayOfFieldInfo/FieldInfo[@Id=\"" + info.Id.ToLower() + "\"]";
                manage.SetAttributesValue(nodeName, "OrderId", info.OrderId.ToString());
            }
            return UpdateField(modelId, manage.Xml);
        }

        public static bool SetOrderId(string fieldName, int modelId, int orderId)
        {
            XmlManage manage = XmlManage.Instance(GetXmlFieldList(modelId), XmlType.Content);
            string nodeName = "/ArrayOfFieldInfo/FieldInfo[@Id=\"" + fieldName.ToLower() + "\"]";
            manage.SetAttributesValue(nodeName, "OrderId", orderId.ToString());
            return UpdateField(modelId, manage.Xml);
        }

        public static DataActionState Update(FieldInfo fieldInfo, int modelId)
        {
            DataActionState unknown = DataActionState.Unknown;
            switch (fieldInfo.FieldType)
            {
                case FieldType.FileType:
                {
                    FieldInfo fieldInfoByFieldName = GetFieldInfoByFieldName(modelId, fieldInfo.FieldName);
                    if ((DataConverter.CBool(fieldInfoByFieldName.Settings[3]) && !DataConverter.CBool(fieldInfo.Settings[3])) && !string.IsNullOrEmpty(fieldInfo.Settings[4]))
                    {
                        Delete(fieldInfo.Settings[4], modelId);
                    }
                    if ((!DataConverter.CBool(fieldInfoByFieldName.Settings[3]) && DataConverter.CBool(fieldInfo.Settings[3])) && !string.IsNullOrEmpty(fieldInfo.Settings[4]))
                    {
                        FieldInfo info2 = new FieldInfo();
                        info2.Id = fieldInfo.Settings[4];
                        info2.FieldName = fieldInfo.Settings[4];
                        info2.FieldType = FieldType.TextType;
                        info2.FieldLevel = 2;
                        info2.OrderId = 0;
                        DataActionState state2 = Add(info2, modelId);
                        if (state2 != DataActionState.Successed)
                        {
                            return state2;
                        }
                    }
                    break;
                }
                case FieldType.MultiplePhotoType:
                {
                    FieldInfo info3 = GetFieldInfoByFieldName(modelId, fieldInfo.FieldName);
                    if ((DataConverter.CBool(info3.Settings[2]) && !DataConverter.CBool(fieldInfo.Settings[2])) && !string.IsNullOrEmpty(fieldInfo.Settings[3]))
                    {
                        Delete(fieldInfo.Settings[3], modelId);
                    }
                    if ((!DataConverter.CBool(info3.Settings[2]) && DataConverter.CBool(fieldInfo.Settings[2])) && !string.IsNullOrEmpty(fieldInfo.Settings[3]))
                    {
                        FieldInfo info4 = new FieldInfo();
                        info4.Id = fieldInfo.Settings[3];
                        info4.FieldName = fieldInfo.Settings[3];
                        info4.FieldType = FieldType.TextType;
                        info4.FieldLevel = 2;
                        info4.OrderId = 0;
                        DataActionState state3 = Add(info4, modelId);
                        if (state3 != DataActionState.Successed)
                        {
                            return state3;
                        }
                    }
                    break;
                }
            }
            if (ModelManager.UpdateFieldOfTable(fieldInfo, modelId))
            {
                unknown = DataActionState.Successed;
            }
            return unknown;
        }

        private static bool UpdateField(int modelId, string xmlFieldList)
        {
            return ModelManager.UpdateField(modelId, xmlFieldList);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -