From cf4adf98d50532568f1afab3e5dcc6cd04d87bd2 Mon Sep 17 00:00:00 2001 From: mehmetuken Date: Sun, 19 May 2019 17:17:32 +0300 Subject: [PATCH] CrudAppService/AsynCrudAppService Create methods should care multitenancy. --- .../Services/AsyncCrudAppService.cs | 8 +++++++- .../Abp/Application/Services/CrudAppService.cs | 7 +++++++ .../Application/Services/CrudAppServiceBase.cs | 18 ++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs index 3d633931b3..4cc9f48630 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs @@ -1,10 +1,10 @@ using System.Linq; using System.Threading.Tasks; -using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; using Volo.Abp.Linq; +using Volo.Abp.MultiTenancy; namespace Volo.Abp.Application.Services { @@ -90,6 +90,12 @@ namespace Volo.Abp.Application.Services await CheckCreatePolicyAsync(); var entity = MapToEntity(input); + + if(entity is IMultiTenant) + { + TryToSetTenantId(entity); + } + await Repository.InsertAsync(entity, autoSave: true); return MapToEntityDto(entity); diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs index 2750d699a4..744d472de5 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs @@ -2,6 +2,7 @@ using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; +using Volo.Abp.MultiTenancy; namespace Volo.Abp.Application.Services { @@ -86,6 +87,12 @@ namespace Volo.Abp.Application.Services CheckCreatePolicy(); var entity = MapToEntity(input); + + if(entity is IMultiTenant) + { + TryToSetTenantId(entity); + } + Repository.Insert(entity, autoSave: true); return MapToEntityDto(entity); diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs index 4d878ad6c3..638375524c 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs @@ -4,6 +4,7 @@ using System.Linq.Dynamic.Core; using Volo.Abp.Application.Dtos; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; +using Volo.Abp.MultiTenancy; using Volo.Abp.ObjectMapping; namespace Volo.Abp.Application.Services @@ -150,5 +151,22 @@ namespace Volo.Abp.Application.Services ObjectMapper.Map(updateInput, entity); } + + protected virtual void TryToSetTenantId(TEntity entity) + { + var tenantId = CurrentTenant.Id; + + if (tenantId == null) + { + return; + } + + var propertyInfo = entity.GetType().GetProperty(nameof(IMultiTenant.TenantId)); + + if (propertyInfo != null && propertyInfo.GetSetMethod() != null) + { + propertyInfo.SetValue(entity, tenantId, null); + } + } } }