Taylohtio/IDP/webapi/webapi.Infrastructure/EventHandlers/AddUserToFlatMappingDomainE...

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;
//}
}
}