Perf: Save only when user updated
This commit is contained in:
@@ -71,21 +71,40 @@ namespace Disco.Models.Repository
|
||||
return string.Format("{0} ({1})", this.DisplayName, this.UserId);
|
||||
}
|
||||
|
||||
public void UpdateSelf(User u)
|
||||
public bool UpdateSelf(User u)
|
||||
{
|
||||
var changed = false;
|
||||
|
||||
if (!this.UserId.Equals(u.UserId, StringComparison.OrdinalIgnoreCase))
|
||||
throw new ArgumentException("User Id's do not match", "u");
|
||||
|
||||
if (this.Surname != u.Surname)
|
||||
{
|
||||
this.Surname = u.Surname;
|
||||
changed = true;
|
||||
}
|
||||
if (this.GivenName != u.GivenName)
|
||||
{
|
||||
this.GivenName = u.GivenName;
|
||||
changed = true;
|
||||
}
|
||||
if (this.DisplayName != u.DisplayName)
|
||||
{
|
||||
this.DisplayName = u.DisplayName;
|
||||
changed = true;
|
||||
}
|
||||
if (this.EmailAddress != u.EmailAddress)
|
||||
{
|
||||
this.EmailAddress = u.EmailAddress;
|
||||
changed = true;
|
||||
}
|
||||
if (this.PhoneNumber != u.PhoneNumber)
|
||||
{
|
||||
this.PhoneNumber = u.PhoneNumber;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,14 +33,14 @@ namespace Disco.Services.Devices.Exporting
|
||||
Options.AssignedUserEmailAddress)
|
||||
{
|
||||
TaskStatus.UpdateStatus(20, "Updating Assigned User details");
|
||||
var users = Devices.Where(d => d.AssignedUserId != null).Select(d => d.AssignedUserId).Distinct().ToList();
|
||||
var users = Devices.Where(d => d.AssignedUserId != null).Select(d => d.AssignedUser).Distinct().ToList();
|
||||
|
||||
users.Select((userId, index) =>
|
||||
users.Select((user, index) =>
|
||||
{
|
||||
TaskStatus.UpdateStatus(20 + (((double)20 / users.Count) * index), string.Format("Updating Assigned User details: {0}", userId));
|
||||
TaskStatus.UpdateStatus(20 + (((double)20 / users.Count) * index), string.Format("Updating Assigned User details: {0}", user.UserId));
|
||||
try
|
||||
{
|
||||
return UserService.GetUser(userId, Database);
|
||||
return UserService.GetUser(user.UserId, Database);
|
||||
}
|
||||
catch (Exception) { return null; } // Ignore Errors
|
||||
}).ToList();
|
||||
|
||||
@@ -273,13 +273,18 @@ namespace Disco.Services.Users
|
||||
// Update Repository
|
||||
User existingUser = Database.Users.Find(user.UserId);
|
||||
if (existingUser == null)
|
||||
{
|
||||
Database.Users.Add(user);
|
||||
Database.SaveChanges();
|
||||
}
|
||||
else
|
||||
{
|
||||
existingUser.UpdateSelf(user);
|
||||
if (existingUser.UpdateSelf(user))
|
||||
{
|
||||
Database.SaveChanges();
|
||||
}
|
||||
user = existingUser;
|
||||
}
|
||||
Database.SaveChanges();
|
||||
|
||||
var token = AuthorizationToken.BuildToken(user, adAccount.Groups.Select(g => g.Id));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user