public void SetButtonHandlers() { CancelButton.Click += (object sender, RoutedEventArgs e) => { Close(); }; WorkButton.Click += (object sender, RoutedEventArgs e) => { if (NameRule.Validate(LastNameBox.Text, CultureInfo.CurrentCulture) != ValidationResult.ValidResult || NameRule.Validate(FirstNameBox.Text, CultureInfo.CurrentCulture) != ValidationResult.ValidResult || NameRule.Validate(MiddleNameBox.Text, CultureInfo.CurrentCulture) != ValidationResult.ValidResult) { return; } LocalPatient.FirstName = FirstNameBox.Text; LocalPatient.MiddleName = MiddleNameBox.Text; LocalPatient.LastName = LastNameBox.Text; LocalPatient.BirthDate = BirthDatePicker.DisplayDate; if (NameRule.Validate(RegionBox.Text, CultureInfo.CurrentCulture) != ValidationResult.ValidResult || NameRule.Validate(SettlementBox.Text, CultureInfo.CurrentCulture) != ValidationResult.ValidResult || NameRule.Validate(StreetBox.Text, CultureInfo.CurrentCulture) != ValidationResult.ValidResult) { LocalPatient.Street = null; LocalPatient.StreetId = null; if (Action == ActionType.Edit) { unitOfWork.Patients.Update(LocalPatient); unitOfWork.Save(); Close(); } else if (Action == ActionType.Create) { unitOfWork.Patients.Create(LocalPatient); unitOfWork.Save(); Close(); } } var streets = unitOfWork.Streets.GetAll() .Where(street => street.DeletedDate == null && street.Settlement.SettlementName.CompareTo(SettlementBox.Text) == 0 && street.Settlement.Region.RegionName.CompareTo(RegionBox.Text) == 0 && street.StreetName.CompareTo(StreetBox.Text) == 0).ToList(); Region newRegion = new Region(); Settlement newSettlement = new Settlement(); Street newStreet = new Street(); if (streets.Count == 0) { string message = "Для того щоб " + ActionText(Action) + " пацієнта також потрібно створити вулицю: \"" + StreetBox.Text + "\". Ви впевнені що хочете " + ActionText(Action) + " пацієнта?"; var settlements = unitOfWork.Settlements.GetAll() .Where(settlement => settlement.DeletedDate == null && settlement.SettlementName.CompareTo(SettlementBox.Text) == 0 && settlement.Region.RegionName.CompareTo(RegionBox.Text) == 0).ToList(); if (settlements.Count == 0) { message = "Для того щоб " + ActionText(Action) + " пацієнта також потрібно створити населений пункт: \"" + SettlementBox.Text + "\" та вулицю: \"" + StreetBox.Text + "\" в цьому населеному пункті. Ви впевнені що хочете " + ActionText(Action) + " пацієнта?"; var regions = unitOfWork.Regions.GetAll() .Where(region => region.DeletedDate == null && region.RegionName.CompareTo(RegionBox.Text) == 0).ToList(); if (regions.Count == 0) { message = "Для того щоб " + ActionText(Action) + " пацієнта також потрібно створити область: \"" + RegionBox.Text + "\", населений пункт: \"" + SettlementBox.Text + "\" в цій області та вулицю: \"" + StreetBox.Text + "\" в цьому населеному пункті. Ви впевнені що хочете " + ActionText(Action) + " пацієнта?"; DialogWindow dialogWindow = new DialogWindow(message); bool? dialogResult = dialogWindow.ShowDialog(); if (dialogResult != true) { return; } newRegion = new Region { RegionName = RegionBox.Text, DeletedDate = null }; unitOfWork.Regions.Create(newRegion); unitOfWork.Save(); } else { DialogWindow dialogWindow = new DialogWindow(message); bool? dialogResult = dialogWindow.ShowDialog(); if (dialogResult != true) { return; } newRegion = regions.First(); } newSettlement = new Settlement { RegionId = newRegion.Id, SettlementName = SettlementBox.Text, DeletedDate = null }; unitOfWork.Settlements.Create(newSettlement); unitOfWork.Save(); } else { DialogWindow dialogWindow = new DialogWindow(message); bool? dialogResult = dialogWindow.ShowDialog(); if (dialogResult != true) { return; } newSettlement = settlements.First(); } newStreet = new Street { StreetName = StreetBox.Text, SettlementId = newSettlement.Id, DeletedDate = null }; unitOfWork.Streets.Create(newStreet); unitOfWork.Save(); LocalPatient.Street = newStreet; LocalPatient.StreetId = newStreet.Id; } else { LocalPatient.Street = streets.First(); LocalPatient.StreetId = streets.First().Id; } if (Action == ActionType.Edit) { unitOfWork.Patients.Update(LocalPatient); unitOfWork.Save(); Close(); } else if (Action == ActionType.Create) { unitOfWork.Patients.Create(LocalPatient); unitOfWork.Save(); Close(); } }; }