88 lines
4.0 KiB
C#
88 lines
4.0 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using webapi.Domain.AggregatesModel.FlatApprovalAggregate;
|
|
using webapi.Domain.AggregatesModel.UserFlatMappingAggregate;
|
|
using webapi.Domain.Events;
|
|
using webapi.Domain.SeedWork;
|
|
using webapi.Exceptions;
|
|
using webapi.Infractructure.Core;
|
|
using webapi.Infractructure.Repositories;
|
|
|
|
namespace webapi.Infractructure.EventHandlers
|
|
{
|
|
public class AddUserToFlatMappingDomainEventHandler : BaseEventHandler<AddUserToFlatMappingDomainEvent>
|
|
{
|
|
readonly IUserFlatMappingRepository _repository;
|
|
readonly IUserAuthRepository _userAuthRepository;
|
|
|
|
public AddUserToFlatMappingDomainEventHandler(IUserFlatMappingRepository repository, IUserAuthRepository userAuthRepository) {
|
|
_repository = repository;
|
|
_userAuthRepository = userAuthRepository;
|
|
}
|
|
|
|
public override async Task Handle(AddUserToFlatMappingDomainEvent request)
|
|
{
|
|
if (request?.Flat == null) throw new WarningException($"The {nameof(request.Flat)} argument is empty");
|
|
var user = _userAuthRepository.GetUserByTaloyhtioUserId(request.UserId);
|
|
if (user == null) throw new WarningException($"The user with Id: {request.UserId} does not exist");
|
|
|
|
var u2f = _repository.GetUserFlatsMappings(user.TaloyhtioUserId, request.Flat.Id)
|
|
.FirstOrDefault();
|
|
|
|
if (user.IsStronglyAuthenticated) // && request.FlatUsers != null)
|
|
{
|
|
if (request.Flat.CompareUsersByPIN(user.PINId, user.FirstName, user.LastName, user.Birthday, out var pmsUserName))
|
|
{
|
|
pmsUserName = string.IsNullOrEmpty(request.PMSUserName) ? pmsUserName : request.PMSUserName;
|
|
if (u2f == null)
|
|
{
|
|
u2f = new UserFlatMapping(request.Flat.Id, request.UserId, pmsUserName, Guid.NewGuid());
|
|
}
|
|
else {
|
|
u2f.PMSUserName = pmsUserName;
|
|
}
|
|
|
|
u2f.SetAutomatic();
|
|
await _repository.SaveChanges(u2f);
|
|
return;
|
|
}
|
|
}
|
|
if (u2f == null)
|
|
{
|
|
await _repository.SaveChanges(new UserFlatMapping(request.Flat.Id, user.TaloyhtioUserId, request.PMSUserName, Guid.NewGuid()));
|
|
}
|
|
}
|
|
|
|
//bool CompareUsers(string pmsUserName, DateTime userPINBirthDate, string userFirstName, string userLastName, DateTime? userBirthday)
|
|
//{
|
|
// var result = (userBirthday.HasValue && userPINBirthDate.Date == userBirthday.Value.Date);
|
|
// if (result)
|
|
// {
|
|
// //var userNameParts = userFirstName.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
|
// //foreach (var namePart in userNameParts)
|
|
// //{
|
|
// // if (((pmsUserName == $"{namePart} {userLastName}") ||
|
|
// // (pmsUserName == $"{userLastName} {namePart}")))
|
|
// // {
|
|
// // return true;
|
|
// // }
|
|
// //}
|
|
// var userNameParts = userFirstName.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
|
// var pmsLastName = userNameParts.Last();
|
|
// for (var i = 0; i< userNameParts.Count() - 1; i++)
|
|
// {
|
|
// var pmsFirstName = userNameParts[i];
|
|
// var userDispalyName = $"{userFirstName} {userLastName}";
|
|
// if (userDispalyName.Equals($"{pmsFirstName} {pmsLastName}", StringComparison.InvariantCultureIgnoreCase) ||
|
|
// (userDispalyName.Equals($"{pmsLastName} {pmsFirstName}", StringComparison.InvariantCultureIgnoreCase)))
|
|
// {
|
|
// return true;
|
|
// }
|
|
// }
|
|
// }
|
|
// return false;
|
|
//}
|
|
}
|
|
} |