public ActionResult Update(UserAdminUpdate value) { if (value == null) { throw new ArgumentNullException("value"); } var user = this.UserService.GetById(value.Id); if (user == null) { return HttpNotFound(); } var privilege = new UserPrivilege(); if (!privilege.CanUpdateAny(user)) { return NotAuthorized(); } value.Validate(); if (value.IsValid) { // value to user value.ValueToModel(user); // update user this.UserService.Update(user); // update password if needed if (!string.IsNullOrEmpty(value.Password)) { this.AuthenticationService.Update(user, value.Password); } // preference var preference = user.Preference; // value to preference value.ValueToPreference(preference); // update user preference this.UserService.UpdatePreference(preference); value.SuccessMessage(Messages.UserUpdated.FormatInvariant(user.Name)); } else { value.CopyToModel(ModelState); } return base.View(Views.Update, value); }
public void Test_UserAdminUpdate_ValueToPreference() { var value = new UserAdminUpdate { CountryId = 1, TimeZoneId = 1, Dst = UserPreferenceDaylightSavingTime.Auto, StartOfWeek = UserPreferenceStartOfWeek.Monday, TimeFormat = UserPreferenceTimeFormat.Basic }; var preference = new UserPreference(); value.ValueToPreference(preference); Assert.AreEqual(UserPreferenceDaylightSavingTime.Auto, preference.Dst, "Dst"); Assert.AreEqual(UserPreferenceStartOfWeek.Monday, preference.StartOfWeek, "StartOfWeek"); Assert.AreEqual(UserPreferenceTimeFormat.Basic, preference.TimeFormat, "TimeFormat"); }