Skip to content
Snippets Groups Projects

Update: Improve merge of user properties

1 file
+ 39
0
Compare changes
  • Side-by-side
  • Inline
+ 39
0
@@ -5,6 +5,9 @@ using Coscine.Configuration;
using Coscine.Database.DataModel;
using Coscine.Database.Models;
using LinqToDB.Tools;
using Microsoft.IdentityModel.Protocols.WSFederation.Metadata;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Coscine.Api.STS.Utils
@@ -46,6 +49,7 @@ namespace Coscine.Api.STS.Utils
MergeUserDiscipline(mergeIntoUser, mergeFromUser);
MergeResourceOwner(mergeIntoUser, mergeFromUser);
MergeTOSAccepted(mergeIntoUser, mergeFromUser);
MergeUserProperties(mergeIntoUser, mergeFromUser);
// ExternalId gets merged last, in case something goes wrong
MergeExternalId(mergeIntoUser, mergeFromUser);
DeleteUser(mergeFromUser);
@@ -169,6 +173,41 @@ namespace Coscine.Api.STS.Utils
}
}
private void MergeUserProperties(User mergeIntoUser, User mergeFromUser)
{
if (string.IsNullOrEmpty(mergeIntoUser.EmailAddress) && !string.IsNullOrEmpty(mergeFromUser.EmailAddress))
{
mergeIntoUser.EmailAddress = mergeFromUser.EmailAddress;
}
if (string.IsNullOrEmpty(mergeIntoUser.Surname) && !string.IsNullOrEmpty(mergeFromUser.Surname))
{
mergeIntoUser.Surname = mergeIntoUser.Surname;
}
if (string.IsNullOrEmpty(mergeIntoUser.Givenname) && !string.IsNullOrEmpty(mergeFromUser.Givenname))
{
mergeIntoUser.Givenname = mergeIntoUser.Givenname;
}
if (mergeIntoUser.TitleId == null && mergeFromUser.TitleId != null)
{
mergeIntoUser.TitleId = mergeFromUser.TitleId;
}
if (string.IsNullOrEmpty(mergeIntoUser.Organization) && !string.IsNullOrEmpty(mergeFromUser.Organization))
{
mergeIntoUser.Organization = mergeFromUser.Organization;
}
if (string.IsNullOrEmpty(mergeIntoUser.Institute) && !string.IsNullOrEmpty(mergeFromUser.Institute))
{
mergeIntoUser.Institute = mergeFromUser.Institute;
}
_userModel.Update(mergeIntoUser);
}
private void DeleteUser(User user)
{
_userModel.Delete(user);
Loading