Taylohtio/IDP/webapi/webapi.Infrastructure/EventHandlers/SetApproverForUserFlatMappi...

84 lines
3.5 KiB
C#

using Serilog;
using System;
using System.Linq;
using System.Threading.Tasks;
using Taloyhtio.IDP.SPApi.Model;
using webapi.Application.Services;
using webapi.Domain.Events;
using webapi.Domain.SeedWork;
using webapi.Exceptions;
using webapi.Infractructure.Core;
using webapi.Infractructure.Repositories;
using webapi.Infractructure.Services;
namespace webapi.Infractructure.EventHandlers
{
public class SetApproverForUserFlatMappingEventHandler : BaseEventHandler<SetApproverForUserFlatMappingEvent>
{
readonly IUserFlatMappingRepository _repository;
readonly IUserAuthRepository _userAuthRepository;
readonly IUsersFlatApprovalRepository _usersFlatApprovalRepository;
readonly ISPService _spService;
readonly ISPHandlerService _spHandlerService;
readonly ILogger _log;
public SetApproverForUserFlatMappingEventHandler(ILogger log, IUserFlatMappingRepository repository,
IUserAuthRepository userAuthRepository,
IUsersFlatApprovalRepository usersFlatApprovalRepository,
ISPService spService,
ISPHandlerService spHandlerService) {
_repository = repository;
_userAuthRepository = userAuthRepository;
_usersFlatApprovalRepository = usersFlatApprovalRepository;
_spService = spService;
_spHandlerService = spHandlerService;
_log = log;
}
public override async Task Handle(SetApproverForUserFlatMappingEvent request)
{
_log.Information($"SetApproverForUserFlatMappingEventHandler start");
var user = _userAuthRepository.GetUserByTaloyhtioUserId(request.UserId);
if (user == null) throw new WarningException($"The user with Id: {request.UserId} does not exist");
var u2fApproval = _usersFlatApprovalRepository.GetApproval(request.UserId, request.FlatId);
if (u2fApproval == null) throw new WarningException($"The approval request with Id: {request.ApprovalRequestId} does not exist");
var u2fs = _repository.GetUserFlatsMappings(request.UserId, request.FlatId);
_log.Information($"Mappings count '{u2fs.Count()}'");
foreach (var u2f in u2fs)
{
_log.Information($"GetUserName {user.TaloyhtioUserId}");
try
{
var userName = await _spService.GetUserName(user.TaloyhtioUserId);
_log.Information($"GetUserName '{userName}'");
await _spHandlerService.UserToFlatFoldersAssignment(new UserToFlatFoldersAssignmentRequest()
{
FlatTitle = request.FlatTitle,
TaloyhtioPMCId = request.PMCId,
TaloyhtioCondoId = request.CondoId,
FBACurrentUserName = userName,
Remove = false
});
_log.Information($"UserToFlatFoldersAssignment call");
u2f.ApprovalRequestId = request.ApprovalRequestId;
u2f.RequestApprovalDate = request.RequestApprovalDate;
u2f.ApprovedBy = request.UserId;
u2f.PMSUserName = request.PMSUserName;
await _repository.SaveChanges(u2f);
}
catch (Exception e)
{
_log.Error($"{e.Message} {e.StackTrace} {e.InnerException}");
}
}
_log.Information($"SetApproverForUserFlatMappingEventHandler finish");
}
}
}