59 lines
2.7 KiB
C#
59 lines
2.7 KiB
C#
using Serilog;
|
|
using System.Threading.Tasks;
|
|
using Taloyhtio.IDP.SPApi.Model;
|
|
using webapi.Application.Services;
|
|
using webapi.Domain.Events;
|
|
using webapi.Domain.SeedWork;
|
|
using webapi.Exceptions;
|
|
|
|
namespace webapi.Infractructure.Core.EventHandlers
|
|
{
|
|
public class RevokeUserAssignmentDomainEventHandler : BaseEventHandler<RevokeUserAssignmentDomainEvent>
|
|
{
|
|
readonly IUserFlatMappingRepository _repository;
|
|
readonly IUserAuthRepository _userAuthRepository;
|
|
readonly ISPHandlerService _spHandlerService;
|
|
readonly ILogger _log;
|
|
|
|
public RevokeUserAssignmentDomainEventHandler(ILogger log, IUserFlatMappingRepository repository, IUserAuthRepository userAuthRepository,
|
|
ISPHandlerService spHandlerService) {
|
|
_repository = repository;
|
|
_userAuthRepository = userAuthRepository;
|
|
_spHandlerService = spHandlerService;
|
|
_log = log;
|
|
}
|
|
|
|
public override async Task Handle(RevokeUserAssignmentDomainEvent request)
|
|
{
|
|
_log.Information("Start Revoke User");
|
|
if (request?.Flat == null) throw new WarningException($"The {nameof(request.Flat)} argument is empty");
|
|
var mappings = _repository.GetAllUserFlatsMappings(new[] { request.Flat.Id });
|
|
foreach (var mapping in mappings)
|
|
{
|
|
var user = _userAuthRepository.GetUserByTaloyhtioUserId(mapping.UserId);
|
|
if ((!mapping.IsAutomatic && string.IsNullOrEmpty(mapping.PMSUserName)) ||
|
|
!(user?.IsStronglyAuthenticated ?? false))
|
|
continue;
|
|
|
|
//Revoke when users don't match
|
|
if (((!mapping.IsAutomatic && !string.IsNullOrEmpty(mapping.PMSUserName)) && !request.Flat.CompareUsersByPMSUserName(mapping.PMSUserName)) &&
|
|
!request.Flat.CompareUsersByPIN(user.PINId, user.FirstName, user.LastName, user.Birthday, out var pmsUserName))
|
|
{
|
|
//var userName = await _spService.GetUserName(request.UserId);
|
|
await _spHandlerService.UserToFlatFoldersAssignment(new UserToFlatFoldersAssignmentRequest()
|
|
{
|
|
FlatTitle = request.Flat.FlatTitle,
|
|
TaloyhtioPMCId = request.Flat.PMCTaloyhtioId,
|
|
TaloyhtioCondoId = request.CondoId,
|
|
FBACurrentUserName = request.UserName,
|
|
Remove = true
|
|
});
|
|
|
|
_log.Information("Delete mapping when user revoking");
|
|
await _repository.DeleteEntityAsync(mapping);
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |