Perf: Save only when user updated
This commit is contained in:
1 parent
fdf1bd4bc6
commit
4d6aa18095
3 files changed
+31
-7
No files matched your search
@@ -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