/// <summary> /// Возвращает сообщение, где будет результат добавления /// </summary> public static string Add(Relative relative) { if (IsImmediateRelative(relative)) { return EntityFrameworkDAL.Add(relative); } return "Ошибка добавления"; }
/// <summary> /// Возвращает сообщение, где будет результат добавления /// </summary> public static string Add(Relative relative) { string resultOfAdd = ""; if (relative != null) { using (var db = new PersonContext()) { var allPersonId = db.Persons.Select(p => p.Id); var immediateRelatives = GetImmediateRelatives(relative.PersonId); if (immediateRelatives.ContainsValue(KindOfRelative.Father) && (ConvertTo.KindOfRelative(relative.KindOfRelative) == KindOfRelative.Father)) { resultOfAdd = "Для этого человека уже был добавлен отец"; } else if (immediateRelatives.ContainsValue(KindOfRelative.Mother) && (ConvertTo.KindOfRelative(relative.KindOfRelative) == KindOfRelative.Mother)) { resultOfAdd = "Для этого человека уже была добавлена мама"; } else if (db.Relatives.Count(r => (r.PersonId == relative.PersonId) && (r.RelativeOfPersonId == relative.RelativeOfPersonId)) != 0) { resultOfAdd = "Родственная связь между этими людьми уже существует"; } else if (allPersonId.Contains(relative.PersonId) && allPersonId.Contains(relative.RelativeOfPersonId) && (relative.PersonId != relative.RelativeOfPersonId)) { db.Relatives.Add(relative); db.SaveChanges(); resultOfAdd = null; } else if (relative.PersonId == relative.RelativeOfPersonId) { resultOfAdd = "ID человека и его родственника не могут быть одинаковыми"; } else { if (!allPersonId.Contains(relative.PersonId)) { resultOfAdd = String.Format("Человека с id {0} не существует", relative.PersonId); } if (!allPersonId.Contains(relative.RelativeOfPersonId)) { resultOfAdd += String.Format("\nЧеловека с id {0} не существует", relative.RelativeOfPersonId); } } } } else { resultOfAdd = "Ошибка добавления"; } return resultOfAdd; }
private static bool IsImmediateRelative(Relative relative) { switch (ConvertTo.KindOfRelative(relative.KindOfRelative)) { case KindOfRelative.Father: case KindOfRelative.Mother: case KindOfRelative.Brother: case KindOfRelative.Sister: case KindOfRelative.Wife: case KindOfRelative.Husband: return true; default: return false; } }
private void AddButton_Click(object sender, RoutedEventArgs e) { var person = (Person)AddStackPanel.DataContext; person.Photo = PhotoNameTextBlock.Text; int year; if (int.TryParse(YearTextBox.Text, out year)) { person.BirthDay = new DateTime(Convert.ToInt32(YearTextBox.Text), Convert.ToInt32(MonthsComboBox.SelectedIndex) + 1, Convert.ToInt32(DaysOfMonthComboBox.SelectedItem)); } if ((IsAliveCheckBox.IsChecked == false) && (int.TryParse(YearDeadTextBox.Text, out year))) { person.DeadDay = new DateTime(Convert.ToInt32(YearDeadTextBox.Text), Convert.ToInt32(MonthsDeadComboBox.SelectedIndex) + 1, Convert.ToInt32(DaysOfMonthDeadComboBox.SelectedItem)); if ((person.BirthDay != null) && (person.BirthDay > person.DeadDay)) { person.DeadDay = null; MessageBox.Show("Год смерти не может быть раньше года рождения\n" + "Если не знаете года смерти--оставьте поле пустым", "Ошибка при вводе даты"); return; } } else { person.DeadDay = null; } BusinessComponent.Add(person); var relative = new Relative { PersonId = ((Person) CurrentPersonStackPanel.DataContext).Id, RelativeOfPersonId = person.Id, KindOfRelative = ConvertTo.String(ConvertTo.KindOfRelative((string) AddNewPersonCombobox.SelectedItem)) }; AddStackPanel.DataContext = new Person(); Replace(); string resultOfAdd = BusinessComponent.Add(relative); if (resultOfAdd != null) { MessageBox.Show(resultOfAdd, "Ошибка при добавлении родственника"); return; } Tree.AddNewFamilyMember(person, ConvertTo.KindOfRelative(relative.KindOfRelative)); AllPersonDataGrid.ItemsSource = BusinessComponent.GetAll(); }