Taylohtio/IDP/webapi/webapi.Infrastructure/EventHandlers/AutoAddUserToFlatMappingDom...

95 lines
4.0 KiB
C#

using Serilog;
using System;
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.Repositories;
namespace webapi.Infractructure.EventHandlers
{
//public class AutoAddUserToFlatMappingDomainEventHandler : BaseEventHandler<AutoAddUserToFlatMappingDomainEvent>
//{
// readonly IUserFlatMappingRepository _repository;
// readonly IUserAuthRepository _userAuthRepository;
// readonly IFlatRepository _flatRepository;
// readonly ILogger _log;
// public AutoAddUserToFlatMappingDomainEventHandler(ILogger log, IUserFlatMappingRepository repository,
// IUserAuthRepository userAuthRepository, IFlatRepository flatRepository) {
// _repository = repository;
// _userAuthRepository = userAuthRepository;
// _flatRepository = flatRepository;
// _log = log;
// }
// public override async Task Handle(AutoAddUserToFlatMappingDomainEvent request)
// {
// _log.Information($"request.UserId.HasValue: {request.UserId.HasValue}");
// _log.Information($"request.FlatId.HasValue: {request.FlatId.HasValue}");
// if (request.UserId.HasValue)
// {
// var user = _userAuthRepository.GetByUserId(request.UserId.Value);
// if (user == null) throw new WarningException($"User with userId: {request.UserId} is not found");
// //Get all flats with user info
// _log.Information($"GetFlatWithUserInfo: {request.PMCId}");
// var flats2map = _flatRepository.GetFlatWithUserInfo(request.PMCId);
// _log.Information($"flats2map: {flats2map.Count()}");
// _log.Information($"user.PINId: {user.PINId}");
// //Get all users from IDP with strong auth and matched PIN
// var flats = flats2map.Where(x => x.Users.Any(u => u.PIN == user.PINId));
// //.Select(x =>
// //new
// //{
// // Flat = x,
// // PINs = x.Users
// // .Where(u => !string.IsNullOrEmpty(u.PIN))
// // .Select(u => u.PIN)
// // .Distinct().ToArray()
// //});
// _log.Information($"flats: {flats.Count()}");
// foreach (var flat in flats)
// {
// //foreach (var pin in flatUsers.PINs)
// //{
// //flatUsers.Flat.AutoAssignUser(pin);
// //await _flatRepository.SaveChanges(flatUsers.Flat, skipEntitySaving: true);
// //}
// await SaveMapping(user.Id, flat.Id);
// }
// }
// else if(request.FlatId.HasValue){
// var flat = _flatRepository.GetFlatById(request.FlatId.Value);
// var users = flat.Users.Where(u => !string.IsNullOrEmpty(u.PIN));
// if (users.Any()) {
// foreach (var user in users)
// {
// var userAuth = _userAuthRepository.GetUserByPIN(user.PIN);
// if (userAuth != null)
// {
// await SaveMapping(userAuth.Id, flat.Id);
// }
// }
// }
// }
// }
// private async Task SaveMapping(Guid userAuthId, Guid flatId) {
// _log.Information($"SaveMapping: {userAuthId} {flatId}");
// var u2f = _repository.GetUserFlatsMappings(userAuthId, flatId).FirstOrDefault();
// if (u2f == null)
// {
// u2f = new UserFlatMapping(flatId, userAuthId, Guid.NewGuid());
// }
// u2f.SetAutomatic();
// await _repository.SaveChanges(u2f);
// }
//}
}