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 });
            }
        }