示例#1
0
        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);
        }
示例#2
0
        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);
        }