/// <summary> /// Регистрация пользователя из внешних систем /// </summary> /// <param name="registerModel"> Информация о регистрируемом пользователе </param> /// <param name="certificate">Сертификат</param> /// <returns>Информация о зарегистрированном пользователе</returns> public RegisterResult Register(RegisterModel registerModel, byte[] certificate = null) { return Invoke(() => client.Register(registerModel, certificate)); }
/// <summary> /// Регистрация организации /// </summary> private RegisterResult Register() { Console.Out.WriteLine("При регистрации все поля обязательны к заполнению." + " Если у вас есть сертификат квалифицированной электронной подписи - выберите сертификат" + " для автоматического заполнения полей формы регистрации."); Console.Out.WriteLine("Регистрация в сервисе Synerdocs:"); var registerModel = new RegisterModel(); if (UserInput.ChooseYesNo("Выбрать сертификат?", false)) { // регистрация по сертификату ChooseCertificate(); } else { // регистрация по паролю // очистим данные о сертификате, если они там есть _context.Certificate = null; registerModel.OrganizationType = (OrganizationType)Enum .Parse(typeof(OrganizationType), UserInput.ChooseOption("Выберите тип организации", new[] { new UserInput.Option("1", "Юридическое лицо", true), new UserInput.Option("2", "Индивидуальный предприниматель", false), new UserInput.Option("3", "Физическое лицо", false) }).Id); if (registerModel.OrganizationType == OrganizationType.LegalEntity) { registerModel.OrganizationName = UserInput.ReadParameter("Введите наименование организации"); registerModel.Kpp = UserInput.ReadParameter("Введите КПП"); registerModel.Ogrn = UserInput.ReadParameter("Введите ОГРН"); } if (registerModel.OrganizationType == OrganizationType.IndividualEntrepreneur) { registerModel.Ogrn = UserInput.ReadParameter("Введите ОГРНИП"); } registerModel.Inn = UserInput.ReadParameter("Введите ИНН"); registerModel.FirstName = UserInput.ReadParameter("Введите фамилию"); registerModel.LastName = UserInput.ReadParameter("Введите имя"); registerModel.MiddleName = UserInput.ReadParameter("Введите отчество"); registerModel.Email = UserInput.ReadParameter("Введите e-mail"); } registerModel.Login = UserInput.ReadParameter("Введите логин"); string pass1 = null, pass2 = null; while (pass1 == null || pass2 == null || pass1 != pass2) { pass1 = UserInput.ReadPassword("Введите пароль"); pass2 = UserInput.ReadPassword("Подтвердите пароль"); var passwordsNotEqualOrEmpty = pass1 == null || pass2 == null || pass1 != pass2; if (passwordsNotEqualOrEmpty) UserInput.Error("Введённые пароли не совпадают! Повторите ввод пароля."); } registerModel.Password = pass1; registerModel.ServiceReglamentAccepted = UserInput.ChooseYesNo("Вы принимаете доступные по адресу www.synerdocs.ru Правила Synerdocs?", false); registerModel.OperatorCode = "2IG"; registerModel.ServiceCode = Guid.NewGuid().ToString(); var registerResult = new RegisterResult(); while (!registerResult.Success) { registerResult = _context.ServiceClient.Register(registerModel, _context.Certificate != null ? _context.Certificate.RawData : null); if (registerResult.Success) { UserInput.Success(string.Format("Регистрация {0} прошла успешно", registerResult.RegisterModel.OrganizationName)); return registerResult; } UserInput.Error("Во время регистрации обнаружены ошибки: \n" + string.Join("\n", registerResult.ErrorMessages)); var externalInfoType = typeof(RegisterModel); foreach (var errorMember in registerResult.ErrorMembers) { var propertyInfo = externalInfoType.GetProperty(errorMember); if (propertyInfo != null) { var attributes = propertyInfo.GetCustomAttributes(typeof(DisplayNameAttribute), false); if (attributes.Any()) { var displayNameAttr = ((DisplayNameAttribute)attributes[0]); if (propertyInfo.PropertyType == typeof(bool)) { propertyInfo.SetValue(registerModel, Convert.ChangeType(UserInput.ChooseYesNo(displayNameAttr.DisplayName, false), propertyInfo.PropertyType), null); } else { propertyInfo.SetValue(registerModel, Convert.ChangeType(UserInput.ReadParameter(displayNameAttr.DisplayName), propertyInfo.PropertyType), null); } } } } } return registerResult; }