Ejemplo n.º 1
0
        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();
                }
            };
        }