From 407807fe971c0396b8b26461d18e5e5596c9eafa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sat, 2 May 2020 00:02:51 +0300 Subject: [PATCH] Add ModuleObjectExtensionConfigurationHelper --- ...ityObjectPropertyExtensionConfiguration.cs | 2 +- ...oduleObjectExtensionConfigurationHelper.cs | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs diff --git a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs index bf965ba955..ac4d7ad73f 100644 --- a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs +++ b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs @@ -5,7 +5,7 @@ using Volo.Abp.Localization; namespace Volo.Abp.ObjectExtending { - public class ModuleEntityObjectPropertyExtensionConfiguration + public class ModuleEntityObjectPropertyExtensionConfiguration : IHasNameWithLocalizableDisplayName { [NotNull] public ModuleEntityObjectExtensionConfiguration EntityObjectExtensionConfiguration { get; } diff --git a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs new file mode 100644 index 0000000000..b8ab6b5516 --- /dev/null +++ b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using JetBrains.Annotations; + +namespace Volo.Abp.ObjectExtending +{ + public static class ModuleObjectExtensionConfigurationHelper + { + public static void ApplyModuleObjectExtensionConfigurations( + string moduleName, + string objectName, + Type[] createFormTypes = null, + Type[] editFormTypes = null + ) + { + foreach (var propertyConfig in GetPropertyConfigurations(moduleName, objectName)) + { + if (propertyConfig.UI.CreateForm.IsVisible && + createFormTypes != null) + { + ApplyPropertyConfigurationToTypes(propertyConfig, createFormTypes); + } + + if (propertyConfig.UI.EditForm.IsVisible && + editFormTypes != null) + { + ApplyPropertyConfigurationToTypes(propertyConfig, editFormTypes); + } + } + } + + [NotNull] + public static IEnumerable GetPropertyConfigurations( + string moduleName, + string objectName) + { + var moduleConfig = ObjectExtensionManager.Instance.Modules.GetOrDefault(moduleName); + if (moduleConfig == null) + { + return Array.Empty(); + } + + var objectConfig = moduleConfig.GetOrDefault(objectName); + if (objectConfig == null) + { + return Array.Empty(); + } + + return objectConfig.GetProperties(); + } + + public static void ApplyPropertyConfigurationToTypes( + ModuleEntityObjectPropertyExtensionConfiguration propertyConfig, + Type[] types) + { + ObjectExtensionManager.Instance + .AddOrUpdateProperty( + types, + propertyConfig.Type, + propertyConfig.Name, + property => + { + property.Attributes.AddRange(propertyConfig.Attributes); + property.DisplayName = propertyConfig.DisplayName; + property.Validators.AddRange(propertyConfig.Validators); + } + ); + } + } +}