/// <summary> /// Validates the values. /// </summary> /// <returns></returns> private bool ValidateValues() { bool isValid = false; if (!string.IsNullOrEmpty(this.RelationshipNameTextBox.Text)) { isValid = char.IsLetter(this.RelationshipNameTextBox.Text.FirstOrDefault()) && this.RelationshipNameTextBox.Text.FirstOrDefault() == char.ToLower(this.RelationshipNameTextBox.Text.FirstOrDefault()); if (isValid) { modelEntityRelationship rel = parentWindow.SelectedEntity.relationship.FirstOrDefault(r => r.name == RelationshipNameTextBox.Text); if (rel != null) { if (rel != this.EntityRelationshipModel) { isValid = false; MessageBox.Show(MessageResources.NameBeenUsedRelationship, MessageResources.Error, MessageBoxButton.OK, MessageBoxImage.Error); } } } else { MessageBox.Show(MessageResources.InvalidRelationshipName, MessageResources.Error, MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show(MessageResources.EmptyRelationshipName, MessageResources.Error, MessageBoxButton.OK, MessageBoxImage.Error); } return(isValid); }
/// <summary> /// Handles the Click event of the OKButton control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Windows.RoutedEventArgs"/> instance containing the event data.</param> private void OKButton_Click(object sender, RoutedEventArgs e) { if (this.ValidateValues()) { this.EntityRelationshipModel.name = this.RelationshipNameTextBox.Text; this.DialogResult = true; this.EntityRelationshipModel.clientKey = clientKeys; this.EntityRelationshipModel.destinationEntity = destination; this.EntityRelationshipModel.toMany = Helper.ConvertBoolToString(MultipleRelationshipsCheckBox.IsChecked); var inverseItem = InverseComboBox.SelectedItem.ToString(); if (inverseItem.Equals("No Inverse")) { var messageResult = MessageBox.Show("Do you want to auto-generate it?", "Missing inverse relationship", MessageBoxButton.YesNo, MessageBoxImage.Question); if (messageResult == MessageBoxResult.Yes) { var inverseRelation = new modelEntityRelationship(); inverseRelation.name = "r_" + parentWindow.SelectedEntity.name; inverseRelation.destinationEntity = parentWindow.SelectedEntity.name; inverseRelation.inverseName = this.EntityRelationshipModel.name; inverseRelation.inverseEntity = destination; inverseRelation.toMany = Helper.ConvertBoolToString(!MultipleRelationshipsCheckBox.IsChecked); this.EntityRelationshipModel.inverseEntity = inverseRelation.destinationEntity; this.EntityRelationshipModel.inverseName = inverseRelation.name; var entities = ((ViewModel)parentWindow.DataContext).XmlTemplateModel.entity; modelEntity selectedEntity = null; foreach (var currentEntity in entities) { if (currentEntity.name.Equals(destination)) { selectedEntity = currentEntity; } } if (selectedEntity != null) { selectedEntity.relationship.Add(inverseRelation); } } else if (messageResult == MessageBoxResult.No) { this.EntityRelationshipModel.inverseEntity = this.InverseComboBox.SelectedItem.ToString(); } } } else { this.RelationshipNameTextBox.Text = this.EntityRelationshipModel.name; } }
/// <summary> /// Initializes a new instance of the <see cref="RelationshipManagementWindow"/> class. /// </summary> /// <param name="relationship">The relationship.</param> public RelationshipManagementWindow(modelEntityRelationship relationship, VsDesignerControl parent) { InitializeComponent(); parentWindow = parent; this.EntityRelationshipModel = relationship; if (this.EntityRelationshipModel != null) { this.RelationshipNameTextBox.Text = this.EntityRelationshipModel.name; this.MultipleRelationshipsCheckBox.IsChecked = Helper.ValidateBoolFromString(this.EntityRelationshipModel.toMany == null ? "False" : EntityRelationshipModel.toMany); this.LoadComboBoxes(); this.RelationshipNameTextBox.SelectAll(); this.RelationshipNameTextBox.Focus(); this.ClientKeyRelationsDataGrid.ItemsSource = clientKeys; } }
/// <summary> /// Handles the SelectionChanged event of the InverseComboBox control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Windows.Controls.SelectionChangedEventArgs"/> instance containing the event data.</param> private void InverseComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { string inverse = this.InverseComboBox.SelectedItem.ToString(); // Logic to force the M:N relationships only possible via intermediary tables. string selected = this.DestinationComboBox.SelectedItem.ToString(); modelEntity otherEntity = ((ViewModel)parentWindow.DataContext).XmlTemplateModel.entity.FirstOrDefault(ent => ent.name == selected); if (otherEntity != null) { modelEntityRelationship inverseRel = otherEntity.relationship.FirstOrDefault(r => r.name == inverse); if (inverseRel != null && Helper.ValidateBoolFromString(inverseRel.toMany)) { this.MultipleRelationshipsCheckBox.IsChecked = false; this.MultipleRelationshipsCheckBox.IsEnabled = false; } } }