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);
|
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))
|
if (!this.UserId.Equals(u.UserId, StringComparison.OrdinalIgnoreCase))
|
||||||
throw new ArgumentException("User Id's do not match", "u");
|
throw new ArgumentException("User Id's do not match", "u");
|
||||||
|
|
||||||
if (this.Surname != u.Surname)
|
if (this.Surname != u.Surname)
|
||||||
|
{
|
||||||
this.Surname = u.Surname;
|
this.Surname = u.Surname;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
if (this.GivenName != u.GivenName)
|
if (this.GivenName != u.GivenName)
|
||||||
|
{
|
||||||
this.GivenName = u.GivenName;
|
this.GivenName = u.GivenName;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
if (this.DisplayName != u.DisplayName)
|
if (this.DisplayName != u.DisplayName)
|
||||||
|
{
|
||||||
this.DisplayName = u.DisplayName;
|
this.DisplayName = u.DisplayName;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
if (this.EmailAddress != u.EmailAddress)
|
if (this.EmailAddress != u.EmailAddress)
|
||||||
|
{
|
||||||
this.EmailAddress = u.EmailAddress;
|
this.EmailAddress = u.EmailAddress;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
if (this.PhoneNumber != u.PhoneNumber)
|
if (this.PhoneNumber != u.PhoneNumber)
|
||||||
|
{
|
||||||
this.PhoneNumber = u.PhoneNumber;
|
this.PhoneNumber = u.PhoneNumber;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return changed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,14 +33,14 @@ namespace Disco.Services.Devices.Exporting
|
|||||||
Options.AssignedUserEmailAddress)
|
Options.AssignedUserEmailAddress)
|
||||||
{
|
{
|
||||||
TaskStatus.UpdateStatus(20, "Updating Assigned User details");
|
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
|
try
|
||||||
{
|
{
|
||||||
return UserService.GetUser(userId, Database);
|
return UserService.GetUser(user.UserId, Database);
|
||||||
}
|
}
|
||||||
catch (Exception) { return null; } // Ignore Errors
|
catch (Exception) { return null; } // Ignore Errors
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|||||||
@@ -273,13 +273,18 @@ namespace Disco.Services.Users
|
|||||||
// Update Repository
|
// Update Repository
|
||||||
User existingUser = Database.Users.Find(user.UserId);
|
User existingUser = Database.Users.Find(user.UserId);
|
||||||
if (existingUser == null)
|
if (existingUser == null)
|
||||||
|
{
|
||||||
Database.Users.Add(user);
|
Database.Users.Add(user);
|
||||||
|
Database.SaveChanges();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
existingUser.UpdateSelf(user);
|
if (existingUser.UpdateSelf(user))
|
||||||
|
{
|
||||||
|
Database.SaveChanges();
|
||||||
|
}
|
||||||
user = existingUser;
|
user = existingUser;
|
||||||
}
|
}
|
||||||
Database.SaveChanges();
|
|
||||||
|
|
||||||
var token = AuthorizationToken.BuildToken(user, adAccount.Groups.Select(g => g.Id));
|
var token = AuthorizationToken.BuildToken(user, adAccount.Groups.Select(g => g.Id));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user