Hi there,
Thank you for your Master-Detail solution in ABP suite version 8.0.0.rc2. I have some suggestions for further improvement of this issue.
Hi there,
The problem in the link is still present on the newly generated pages. It is not practical to offer a manual solution. Wouldn't it be better if you fixed the problem?
Thank you
Navigation properties do not work in generated UI (Angular)
https://support.abp.io/QA/Questions/5977/Navigation-properties-do-not-work-in-generated-UI-Angular#answer-3a0e4b05-6a9d-5a2a-323c-6dec5aef111f
*This is a bug report only for ABP suite v. 7.4.0. It did not happen in the previous version. Please refund my ticket.
Thanks for the prompt answer.
I would like to create a global filter instead of aligning each Domain Service class like as following.
namespace MultiTenancyDemo.Products
{
public class ProductManager : DomainService
{
private readonly IRepository<Product, Guid> _productRepository;
public ProductManager(IRepository<Product, Guid> productRepository)
{
_productRepository = productRepository;
}
public async Task<long> GetProductCountAsync(Guid? tenantId)
{
using (CurrentTenant.Change(tenantId))
{
return await _productRepository.GetCountAsync();
}
}
}
}
My question is about how to implement globally
Do you think the following code may work?
protected override Expression> CreateFilterExpression()
{
var parentTenantId = currentTenant.Id.ToString();
Guid[] tenantIdsToFilter;
using(currentTenant.Change(null))
{
var tenants = await tenantRepository.GetListAsync();
var subTenants = tenants.where(x => x.GetProperty<string>("ParentTenantId") == parentTenantId).ToList();
tenantIdsToFilter = subTenants.Select(t=>t.Id).ToArray();
}
Expression<Func<TEntity, bool>> tenantIdFilterExpression =
e => !IsActiveFilterEnabled || tenantIdsToFilter.Contains(EF.Property<Guid>(e, "TenantId"));
.......
}
I have checked this documentation. However, I need help to implement the following use case. https://docs.abp.io/en/abp/latest/Data-Filtering?&_ga=2.210300374.2127151687.1690988301-1686284556.1681286165#entityframework-core
Could you provide a sample on how to implement complex use-case (not only filter with a boolean value)?
In my use case, I need to find all sub Tenants by ParentTenantId and then filter the data accordingly.
List<Guid> subTenants = new List<Guid>(){ SubTenantsGuids};
I need to use create an expression like tenantId=> subTenants.contains(tenantId)
protected override Expression<Func<TEntity, bool>> CreateFilterExpression<TEntity>()
{
var expression = base.CreateFilterExpression<TEntity>();
if (typeof(IMultiTenant).IsAssignableFrom(typeof(TEntity)))
{
Expression<Func<TEntity, bool>> isTenantFilter =
e => !IsTenantFilterEnabled || EF.Property<Guid>(e, "TenantId");
expression = expression == null
? isTenantFilter
: CombineExpressions(expression, isTenantFilter);
}
return expression;
}
How I can filter by a list of Guid in the section of Expression<Func<TEntity, bool>> isTenantFilter = e => !IsTenantFilterEnabled || EF.Property<Guid>(e, "TenantId"); expression = expression == null ? isTenantFilter : CombineExpressions(expression, isTenantFilter);**
Thanks in Advance
Thanks. That is good insight
Thanks, that works.
hi
Failure sending mail. ---> System.Net.Sockets.SocketException (10013): An attempt was made to access a socket in a way forbidden by its access permissions.
You can use this sample to test your email configuration.
https://github.com/abpframework/abp-samples/tree/master/EmailSendDemo
Is there any way to disable email to send functionality? I want to skip sending emails during user registration for now. What if I delete block of #if DEBUG .... #endif?
#if DEBUG context.Services.Replace(ServiceDescriptor.Singleton<IEmailSender, NullEmailSender>()); #endif
Hi,
I have sent you some detailed log data regarding the login/logout issue in the Azure App service.
If you need more details please let me know.
Thanks in advance