Browse Source

Added Entity configuration for object extensions

pull/3834/head
Halil İbrahim Kalkan 6 years ago
parent
commit
e75005ceed
  1. 6
      framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs
  2. 10
      framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionEntityConfiguration.cs
  3. 91
      framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs
  4. 10
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs

6
framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs

@ -27,7 +27,10 @@ namespace Volo.Abp.ObjectExtending
[NotNull]
public Dictionary<object, object> Configuration { get; }
[NotNull]
public ModuleEntityObjectPropertyExtensionEntityConfiguration Entity { get; }
[NotNull]
public ModuleEntityObjectPropertyExtensionUIConfiguration UI { get; }
@ -47,6 +50,7 @@ namespace Volo.Abp.ObjectExtending
Attributes = new List<Attribute>();
Validators = new List<Action<ObjectExtensionPropertyValidationContext>>();
Entity = new ModuleEntityObjectPropertyExtensionEntityConfiguration();
UI = new ModuleEntityObjectPropertyExtensionUIConfiguration();
Api = new ModuleEntityObjectPropertyExtensionApiConfiguration();
}

10
framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionEntityConfiguration.cs

@ -0,0 +1,10 @@
namespace Volo.Abp.ObjectExtending
{
public class ModuleEntityObjectPropertyExtensionEntityConfiguration
{
/// <summary>
/// Default: true.
/// </summary>
public bool IsAvailable { get; set; } = true;
}
}

91
framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs

@ -6,30 +6,30 @@ namespace Volo.Abp.ObjectExtending
{
public static class ModuleObjectExtensionConfigurationHelper
{
public static void ApplyModuleObjectExtensionConfigurations(
public static void ApplyModuleObjectExtensionConfigurationToEntity(
string moduleName,
string objectName,
Type[] createFormTypes = null,
Type[] editFormTypes = null,
Type[] getApiTypes = null,
Type[] createApiTypes = null,
Type[] updateApiTypes = null
)
Type entityType)
{
foreach (var propertyConfig in GetPropertyConfigurations(moduleName, objectName))
{
if (propertyConfig.UI.OnCreateForm.IsVisible &&
createFormTypes != null)
if (propertyConfig.Entity.IsAvailable &&
entityType != null)
{
ApplyPropertyConfigurationToTypes(propertyConfig, createFormTypes);
}
if (propertyConfig.UI.OnEditForm.IsVisible &&
editFormTypes != null)
{
ApplyPropertyConfigurationToTypes(propertyConfig, editFormTypes);
ApplyPropertyConfigurationToTypes(propertyConfig, new[] { entityType });
}
}
}
public static void ApplyModuleObjectExtensionConfigurationToApi(
string moduleName,
string objectName,
Type[] getApiTypes = null,
Type[] createApiTypes = null,
Type[] updateApiTypes = null)
{
foreach (var propertyConfig in GetPropertyConfigurations(moduleName, objectName))
{
if (propertyConfig.Api.OnGet.IsAvailable &&
getApiTypes != null)
{
@ -50,9 +50,66 @@ namespace Volo.Abp.ObjectExtending
}
}
public static void ApplyModuleObjectExtensionConfigurationToUI(
string moduleName,
string objectName,
Type[] createFormTypes = null,
Type[] editFormTypes = null)
{
foreach (var propertyConfig in GetPropertyConfigurations(moduleName, objectName))
{
if (propertyConfig.UI.OnCreateForm.IsVisible &&
createFormTypes != null)
{
ApplyPropertyConfigurationToTypes(propertyConfig, createFormTypes);
}
if (propertyConfig.UI.OnEditForm.IsVisible &&
editFormTypes != null)
{
ApplyPropertyConfigurationToTypes(propertyConfig, editFormTypes);
}
}
}
public static void ApplyModuleObjectExtensionConfigurations(
string moduleName,
string objectName,
Type entityType = null,
Type[] createFormTypes = null,
Type[] editFormTypes = null,
Type[] getApiTypes = null,
Type[] createApiTypes = null,
Type[] updateApiTypes = null)
{
if (entityType != null)
{
ApplyModuleObjectExtensionConfigurationToEntity(
moduleName,
objectName,
entityType
);
}
ApplyModuleObjectExtensionConfigurationToApi(
moduleName,
objectName,
getApiTypes: getApiTypes,
createApiTypes: createApiTypes,
updateApiTypes: updateApiTypes
);
ApplyModuleObjectExtensionConfigurationToUI(
moduleName,
objectName,
createFormTypes: createFormTypes,
editFormTypes: editFormTypes
);
}
[NotNull]
public static IEnumerable<ModuleEntityObjectPropertyExtensionConfiguration> GetPropertyConfigurations(
string moduleName,
string moduleName,
string objectName)
{
var moduleConfig = ObjectExtensionManager.Instance.Modules.GetOrDefault(moduleName);

10
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs

@ -6,6 +6,7 @@ using Volo.Abp.AutoMapper;
using Volo.Abp.Domain;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Modularity;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Users;
namespace Volo.Abp.Identity
@ -45,6 +46,15 @@ namespace Volo.Abp.Identity
AddAbpIdentityOptionsFactory(context.Services);
}
public override void PostConfigureServices(ServiceConfigurationContext context)
{
ModuleObjectExtensionConfigurationHelper.ApplyModuleObjectExtensionConfigurationToEntity(
"Identity",
"User",
typeof(IdentityUser)
);
}
private static void AddAbpIdentityOptionsFactory(IServiceCollection services)
{
services.Replace(ServiceDescriptor.Transient<IOptionsFactory<IdentityOptions>, AbpIdentityOptionsFactory>());

Loading…
Cancel
Save