/// <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;
     }
 }
Exemple #4
0
        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();
        }