public void FromYaml(YamlNode yamlNode) { YamlMappingNode node = yamlNode as YamlMappingNode; Enabled = (node["enabled"] as YamlScalarNode).Value == "true"; MaxQueuedMessages = Convert.ToInt32((node["max-queued-messages"] as YamlScalarNode).Value); ConnectUrl = (node["server-address"] as YamlScalarNode).Value; ClientId = (node["client-id"] as YamlScalarNode).Value; ConnectRetryMs = Convert.ToInt32((node["connect-retry-delay-ms"] as YamlScalarNode).Value); var security = node.GetValueByKey("security") as YamlMappingNode; if (security != null) { try { Security.SecurityType = (SecurityType)Enum.Parse(typeof(SecurityType), (security["security-type"] as YamlScalarNode).Value); Security.CertFile = (security["ca-trusted-cert-file"] as YamlScalarNode).Value; Security.ClientKey = (security["client-private-key-file"] as YamlScalarNode).Value; Security.ClientCert = (security["client-cert-chain-file"] as YamlScalarNode).Value; Security.Username = (security["username"] as YamlScalarNode).Value; Security.Password = (security["password"] as YamlScalarNode).Value; } catch { } } Publishes.Clear(); var publishes = node["publish"] as YamlSequenceNode; foreach (YamlMappingNode p in publishes) { Publishes.Add(new Publish() { Profile = (p["profile"] as YamlScalarNode).Value, Subject = (p["topic-suffix"] as YamlScalarNode).Value }); } Subscribes.Clear(); var subscribes = node["subscribe"] as YamlSequenceNode; foreach (YamlMappingNode p in subscribes) { Subscribes.Add(new Subscribe() { Profile = (p["profile"] as YamlScalarNode).Value, Subject = (p["topic-suffix"] as YamlScalarNode).Value }); } }
public PublishViewModel() { MOYABAZAEntities model = App.MOYABAZA; model.Издательства.Load(); Publishes = CollectionViewSource.GetDefaultView(model.Издательства.Local); AddModeCommand = new RelayCommand( (param) => { SelectedPublish = null; EditAllowed = true; }, (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.PublishThesaurusName && uo.W == 1) != 0); ChangeModeCommand = new RelayCommand( (param) => { EditAllowed ^= true; }, (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.PublishThesaurusName && uo.E == 1) != 0 && param != null); SaveCommand = new RelayCommand( (param) => { if (SelectedPublish != null) { if (PublishTextBox != String.Empty) //Изменение существующего { try { SelectedPublish.Название = PublishTextBox; model.SaveChanges(); Publishes.Refresh(); EditAllowed = false; } catch (Exception e) { MessageBox.Show($"Такое издательство уже существует! \n {e.Message}"); } } else { MessageBox.Show("Название не может быть пустым!"); PublishTextBox = SelectedPublish.Название; } } else { if (PublishTextBox != String.Empty) //Добавление нового { Издательства publish = new Издательства(); try { publish.Название = PublishTextBox; model.Издательства.Local.Add(publish); model.SaveChanges(); EditAllowed = false; PublishTextBox = String.Empty; } catch (DbUpdateException e) { model.Издательства.Local.Remove(publish); MessageBox.Show($"Такое издательство уже существует! \n {e.Message}"); } } else { MessageBox.Show("Название не может быть пустым!"); } } }, (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.PublishThesaurusName && (uo.E == 1 || uo.R == 1)) != 0 && Convert.ToBoolean(param) == true); DeleteCommand = new RelayCommand( (param) => { if (MessageBox.Show("Уверен?", "Назад дороги не будет", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes) { var deletedPublish = _selectedPublish; try { if (deletedPublish.Книги.Count != 0) { throw new DbUpdateException("В издательстве есть книги!!!!"); } model.Издательства.Local.Remove(deletedPublish); model.SaveChanges(); } catch (DbUpdateException ex) { model.Издательства.Local.Add(deletedPublish); Publishes.MoveCurrentTo(deletedPublish); Publishes.Refresh(); MessageBox.Show($"Произошла ошибка при удалении данных: {Environment.CommandLine}{ex.Message}", "Ошибка!", MessageBoxButton.OK, MessageBoxImage.Error); } } }, (param) => App.ActiveUser.Пользователи_Объекты.Count(uo => uo.Объекты.SName == Constants.PublishThesaurusName && uo.D == 1) != 0 && param != null); Publishes.Filter = FilterFunction; }