MultiTenancyHelper.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Linq;
  2. using System.Reflection;
  3. using Abp.Domain.Entities;
  4. using Abp.Extensions;
  5. namespace Abp.MultiTenancy
  6. {
  7. internal class MultiTenancyHelper
  8. {
  9. public static bool IsMultiTenantEntity(object entity)
  10. {
  11. return entity is IMayHaveTenant || entity is IMustHaveTenant;
  12. }
  13. /// <param name="entity">The entity to check</param>
  14. /// <param name="expectedTenantId">TenantId or null for host</param>
  15. public static bool IsTenantEntity(object entity, int? expectedTenantId)
  16. {
  17. return (entity is IMayHaveTenant && entity.As<IMayHaveTenant>().TenantId == expectedTenantId) ||
  18. (entity is IMustHaveTenant && entity.As<IMustHaveTenant>().TenantId == expectedTenantId);
  19. }
  20. public static bool IsHostEntity(object entity)
  21. {
  22. MultiTenancySideAttribute attribute = entity.GetType().GetTypeInfo()
  23. .GetCustomAttributes(typeof(MultiTenancySideAttribute), true)
  24. .Cast<MultiTenancySideAttribute>()
  25. .FirstOrDefault();
  26. if (attribute == null)
  27. {
  28. return false;
  29. }
  30. return attribute.Side.HasFlag(MultiTenancySides.Host);
  31. }
  32. }
  33. }