public bool TryToSaveUser(Employee employee, IUnitOfWork uow) { if (string.IsNullOrWhiteSpace(employee.Email)) { MessageDialogHelper.RunQuestionDialog("Нельзя сбросить пароль.\n У сотрудника не заполнено поле Email"); return(false); } const string emailSendErrorMessage = "Ошибка при отправке E-Mail"; var user = new User { Login = employee.LoginForNewUser, Name = employee.FullName, NeedPasswordChange = true }; bool cont = MessageDialogHelper.RunQuestionDialog($"При сохранении работника будет создан \nпользователь с логином {user.Login} \nи на " + $"указанный E-Mail {employee.Email}\nбудет отправлено письмо с временным паролем\n\t\t\tПродолжить?"); if (!cont) { return(false); } var password = _passwordGenerator.GeneratePassword(_passwordLength); //Сразу пишет в базу var result = _mySQLUserRepository.CreateLogin(user.Login, password); if (result) { try { _mySQLUserRepository.UpdatePrivileges(user.Login, false); } catch { _mySQLUserRepository.DropUser(user.Login); throw; } uow.Save(user); _logger.Info("Идёт отправка почты"); bool sendResult = false; try { sendResult = SendCredentialsToEmail(user.Login, password, employee.Email, employee.FullName, uow); } catch (TimeoutException) { RemoveUserData(uow, user); _logger.Info(emailSendErrorMessage); MessageDialogHelper.RunErrorDialog("Сервис отправки E-Mail временно недоступен\n"); return(false); } catch { RemoveUserData(uow, user); _logger.Info(emailSendErrorMessage); throw; } if (!sendResult) { //Если не получилось отправить e-mail с паролем - удаляем пользователя RemoveUserData(uow, user); _logger.Info(emailSendErrorMessage); return(false); } _logger.Info("Письмо успешно отправлено"); employee.User = user; } else { MessageDialogHelper.RunErrorDialog("Не получилось создать нового пользователя"); return(false); } return(true); }
public bool TryToSaveUser(Employee employee, IUnitOfWork uow) { var user = new User { Login = employee.LoginForNewUser, Name = employee.FullName, NeedPasswordChange = true }; bool cont = MessageDialogHelper.RunQuestionDialog($"При сохранении работника будет создан \nпользователь с логином {user.Login} \nи на " + $"указанный номер +7{employee.GetPhoneForSmsNotification()}\nбудет выслана SMS с временным паролем\n\t\t\tПродолжить?"); if (!cont) { return(false); } var password = new Tools.PasswordGenerator().GeneratePassword(5); //Сразу пишет в базу var result = mySQLUserRepository.CreateLogin(user.Login, password); if (result) { try { mySQLUserRepository.UpdatePrivileges(user.Login, false); } catch { mySQLUserRepository.DropUser(user.Login); throw; } uow.Save(user); logger.Info("Идёт отправка sms (до 10 секунд)..."); bool sendResult = false; try { sendResult = SendPasswordByPhone(employee, password); } catch (TimeoutException) { RemoveUserData(uow, user); logger.Info("Ошибка при отправке sms"); MessageDialogHelper.RunErrorDialog("Сервис отправки Sms временно недоступен\n"); return(false); } catch { RemoveUserData(uow, user); logger.Info("Ошибка при отправке sms"); throw; } if (!sendResult) { //Если не получилось отправить смс с паролем - удаляем пользователя RemoveUserData(uow, user); logger.Info("Ошибка при отправке sms"); return(false); } logger.Info("Sms успешно отправлено"); employee.User = user; } else { MessageDialogHelper.RunErrorDialog("Не получилось создать нового пользователя"); return(false); } return(true); }