Пример #1
0
        public bool InitEngine(string pkgName, CEngineDesc desc, bool isServer = false)
        {
            if (mNativeRttiManager == null)
            {
                PreInitEngine();
            }
            InitVAssembly(isServer);
            IO.Serializer.TypeDescGenerator.Instance.BuildTypes(System.AppDomain.CurrentDomain.GetAssemblies(), (isServer ? ECSType.Server : ECSType.Client));

            var typeRedirectionFile = FileManager.ProjectContent + "typeredirection.xml";

            EngineNS.Rtti.TypeRedirectionHelper.Load(typeRedirectionFile);

            if (desc == null)
            {
                var rn = RName.GetRName($"{nameof(CEngineDesc)}.cfg");
                desc = IO.XmlHolder.CreateObjectFromXML(rn) as CEngineDesc;
                if (desc == null)
                {
                    desc = new CEngineDesc();
                    IO.XmlHolder.SaveObjectToXML(desc, rn);
                }
            }

            mDesc = desc;

            StartSystemThreads();

            MetaClassManager.MetaDirectory = RName.GetRName("MetaClasses");
            MetaClassManager.LoadMetaClasses();
            return(true);
        }
Пример #2
0
        public static void Initialize(TestContext testContext)
        {
            string mdCsKey = ConfigurationManager.AppSettings["MetaDataConnection"];

            if (ConfigurationManager.ConnectionStrings[mdCsKey] != null)
            {
                DataContext.Current = new DataContext(ConfigurationManager.ConnectionStrings[mdCsKey].ConnectionString);
            }

            MetaClassManager metaClassManager = DataContext.Current.MetaModel;
        }
Пример #3
0
        private void CreateRelation(string primaryClassName, string relatedClassName)
        {
            MetaClass relatedMetaClass = DataContext.Current.GetMetaClass(relatedClassName);
            MetaClass primaryMetaClass = DataContext.Current.GetMetaClass(primaryClassName);

            if (relatedMetaClass.Fields[MetaClassManager.GetPrimaryKeyName(primaryClassName)] != null)
            {
                return;
            }
            using (MetaClassManagerEditScope managerEditScope = DataContext.Current.MetaModel.BeginEdit())
            {
                var metaField = relatedMetaClass.CreateReference(primaryMetaClass, primaryClassName, primaryClassName, true);
                metaField.AccessLevel = AccessLevel.Customization;

                metaField.Attributes.Add(Constants.Attributes.DisplayBlock, Constants.SectionName);
                metaField.Attributes.Add(Constants.Attributes.DisplayText, relatedClassName);
                metaField.Attributes.Add(Constants.Attributes.DisplayOrder, Constants.DefaultDisplayOrder);
                XmlBuilder.ClearCache();

                managerEditScope.SaveChanges();
            }
        }
Пример #4
0
        public static void Convert(DBHelper dbHelper)
        {
            List <MetaViewInfo> views = new List <MetaViewInfo>();

            using (MetadataContext context = new MetadataContext(dbHelper))
            {
                // Load MetaView and MetaViewPreference objects for each List_* class.
                //Console.WriteLine(DateTime.Now);

                Regex listDetector = new Regex(@"List_\d+");

                MetaClassManager metaClassManager = DataContext.Current.MetaModel;
                foreach (MetaClass metaClass in metaClassManager.MetaClasses)
                {
                    if (listDetector.IsMatch(metaClass.Name))
                    {
                        foreach (MetaView metaView in metaClassManager.GetMetaViews(metaClass))
                        {
                            MetaViewInfo view = new MetaViewInfo();
                            view.Load(metaView);
                            views.Add(view);
                        }
                    }
                }

                // Save ListViewProfile.
                //Console.WriteLine(DateTime.Now);

                foreach (MetaViewInfo view in views)
                {
                    view.SaveListViewProfiles();
                }

                context.Commit();
                //Console.WriteLine(DateTime.Now);
            }
        }
Пример #5
0
        protected override void ExecuteInternal(IProgressMessenger progressMessenger)
        {
            using (var scope = DataContext.Current.MetaModel.BeginEdit(MetaClassManagerEditScope.SystemOwner, Mediachase.BusinessFoundation.Data.Meta.Management.AccessLevel.System))
            {
                var manager = DataContext.Current.MetaModel;
                var changeTrackingManifest  = ChangeTrackingManager.CreateModuleManifest();
                var recentReferenceManifest = RecentReferenceManager.CreateModuleManifest();
                var contactMetaClass        = manager.MetaClasses[ContactEntity.ClassName];

                var demoUserMenu = MetaEnum.Create("DemoUserMenu", "Show in Demo User Menu", false);
                MetaEnum.AddItem(demoUserMenu, 1, "Never", 1);
                MetaEnum.AddItem(demoUserMenu, 2, "Always", 2);
                MetaEnum.AddItem(demoUserMenu, 3, "Commerce Only", 3);

                using (var builder = new MetaFieldBuilder(contactMetaClass))
                {
                    builder.CreateEnumField("ShowInDemoUserMenu", "{Customer:DemoUserMenu}", "DemoUserMenu", true, "1", false);
                    builder.CreateText("DemoUserTitle", "{Customer:DemoUserTitle}", true, 100, false);
                    builder.CreateText("DemoUserDescription", "{Customer:DemoUserDescription}", true, 500, false);
                    builder.SaveChanges();
                }

                AddMetaFieldToForms(contactMetaClass, contactMetaClass.Fields["ShowInDemoUserMenu"]);
                AddMetaFieldToForms(contactMetaClass, contactMetaClass.Fields["DemoUserTitle"]);
                AddMetaFieldToForms(contactMetaClass, contactMetaClass.Fields["DemoUserDescription"]);

                var giftCardClass = manager.CreateMetaClass("GiftCard", "{Customer:GiftCard}", "{Customer:GiftCard}", "cls_GiftCard", PrimaryKeyIdValueType.Guid);
                ModuleManager.Activate(giftCardClass, changeTrackingManifest);
                using (var builder = new MetaFieldBuilder(giftCardClass))
                {
                    builder.CreateText("GiftCardName", "{Customer:GiftCardName}", false, 100, false);
                    builder.CreateCurrency("InitialAmount", "{Customer:InitialAmount}", true, 0, true);
                    builder.CreateCurrency("RemainBalance", "{Customer:RemainBalance}", true, 0, true);
                    builder.CreateText("RedemptionCode", "{Customer:RedemptionCode}", true, 100, false);
                    builder.CreateCheckBoxBoolean("IsActive", "{Customer:IsActive}", true, true, "{Customer:IsActive}");
                    giftCardClass.Fields[MetaClassManager.GetPrimaryKeyName(giftCardClass.Name)].FriendlyName = "{GlobalMetaInfo:PrimaryKeyId}";
                    var contactReference = builder.CreateReference("Contact", "{Customer:CreditCard_mf_Contact}", true, "Contact", false);
                    contactReference.Attributes.Add(McDataTypeAttribute.ReferenceDisplayBlock, "InfoBlock");
                    contactReference.Attributes.Add(McDataTypeAttribute.ReferenceDisplayText, "{Customer:GiftCard}");
                    contactReference.Attributes.Add(McDataTypeAttribute.ReferenceDisplayOrder, "10000");
                    builder.SaveChanges();
                }
                giftCardClass.AddPermissions();

                AddMetaFieldToForms(giftCardClass, giftCardClass.Fields["GiftCardName"]);
                AddMetaFieldToForms(giftCardClass, giftCardClass.Fields["InitialAmount"]);
                AddMetaFieldToForms(giftCardClass, giftCardClass.Fields["RemainBalance"]);
                AddMetaFieldToForms(giftCardClass, giftCardClass.Fields["RedemptionCode"]);
                AddMetaFieldToForms(giftCardClass, giftCardClass.Fields["IsActive"]);
                AddMetaFieldToForms(giftCardClass, giftCardClass.Fields["ContactId"]);

                scope.SaveChanges();
            }

            var contactProfile = @"<ListViewProfile xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
                    <Id>{54a649a9-302f-48bd-b657-11ca3604fda9}</Id>
                    <Name>{Customer:AllContacts}</Name>
                    <IsSystem>true</IsSystem>
                    <IsPublic>true</IsPublic>
                    <FieldSetName>Contacts</FieldSetName>
                   <FieldSet>
                    <string>FullName</string>
                    <string>Email</string>
                    <string>LastOrder</string>
                    <string>NumberOfOrders</string>
                    <string>NumberOfReviews</string>
                    <string>Points</string>
                    <string>ShowInDemoUserMenu</string>
                    <string>DemoUserTitle</string>
                  </FieldSet>
                  <GroupByFieldName />
                  <Filters />
                  <Sorting />
                  <ColumnsUI>
                    <Column field=""FullName"" width=""150"" />
                    <Column field=""Email"" width=""150"" />
                    <Column field=""LastOrder"" width=""150"" />
                    <Column field=""NumberOfOrders"" width=""150"" />
                    <Column field=""NumberOfReviews"" width=""150"" />
                    <Column field=""Points"" width=""150"" />
                    <Column field=""ShowInDemoUserMenu"" width=""150"" />
                    <Column field=""DemoUserTitle"" width=""150"" />
                  </ColumnsUI>
                </ListViewProfile>";

            var contactviewProfile = (ListViewProfile)_listViewProfileXmlSerializer.Deserialize(new StringReader(contactProfile));

            ListViewProfile.SaveSystemProfile("Contact", "EntityList", Guid.NewGuid(), contactviewProfile);

            using (var stream = new FileStream(Path.Combine(HostingEnvironment.ApplicationPhysicalPath, @"App_Data\Customers.xml"), FileMode.Open))
            {
                ProcessCustomers(stream);
                ProcessOrganizations(stream);
            }
        }