using Abp.Dependency;
using Abp.Domain.Repositories;
using Abp.Domain.Uow;
using Abp.Events.Bus.Entities;
using Abp.Events.Bus.Handlers;
using VberZero.BaseSystem.Users;
namespace VberZero.Authorization.Users;
///
/// 删除用户时从所有组织单位中删除该用户。
///
public class UserOrganizationUnitRemover :
IEventHandler>,
ITransientDependency
{
private readonly IRepository _userOrganizationUnitRepository;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public UserOrganizationUnitRemover(
IRepository userOrganizationUnitRepository,
IUnitOfWorkManager unitOfWorkManager)
{
_userOrganizationUnitRepository = userOrganizationUnitRepository;
_unitOfWorkManager = unitOfWorkManager;
}
public virtual void HandleEvent(EntityDeletedEventData eventData)
{
_unitOfWorkManager.WithUnitOfWork(() =>
{
using (_unitOfWorkManager.Current.SetTenantId(eventData.Entity.TenantId))
{
_userOrganizationUnitRepository.Delete(
uou => uou.UserId == eventData.Entity.Id
);
}
});
}
}