public void DoPasswordChange(uint userId, string emailsForSend, bool isSendClientCard, bool isFree, bool changeLogin, string reason, string[] phonesForSendToUserArray, string[] phonesForSendToAdminArray) { var user = DbSession.Load <User>(userId); user.CheckLogin(); var password = user.ChangePassword(Session); if (changeLogin) { ADHelper.RenameUser(user.Login, user.Id.ToString()); user.Login = user.Id.ToString(); } user.ResetUin(); var passwordChangeLog = new PasswordChangeLogEntity(user.Login); if (isSendClientCard) { var smtpId = ReportHelper.SendClientCard( user, password.Password, false, Defaults, emailsForSend); passwordChangeLog.SetSentTo(smtpId, emailsForSend); } string smsLog = ReportHelper.SendSmsPasswordToUser(user, password.Password, phonesForSendToUserArray); smsLog = smsLog + " " + ReportHelper.SendSmsToRegionalAdmin(user, password.Password, phonesForSendToAdminArray); passwordChangeLog.SmsLog = smsLog; DbSession.Save(user); DbSession.Save(AuditRecord.PasswordChange(user, isFree, reason)); DbSession.Save(passwordChangeLog); NotificationHelper.NotifyAboutPasswordChange(Admin, user, password.Password, isFree, Context.Request.UserHostAddress, reason); if (isSendClientCard) { Notify("Пароль успешно изменен."); RedirectTo(user, "Edit"); } else { Redirect("main", "report", new { id = user.Id, isPasswordChange = true, passwordId = password.PasswordId }); } }