Пример #1
0
 /// <summary>
 /// Konstruktor zapisujący referencję do zarządzanego widoku i tworzący obiekty usług logiki biznesowej.
 /// </summary>
 /// <param name="view">Widok listy wizyt w danym dniu (przy rejestracji wizyty) zarządzany przez tego prezentera.</param>
 public RegisterVisitDetailsPresenter(RegisterVisitDetailsView view)
 {
     medicalBusinessService = new MedicalBusinessService();
     userBusinessService    = new UserBusinessService();
     patientBusinessService = new PatientBusinessService();
     this.view = view;
 }
Пример #2
0
        /// <summary>
        /// Obsługa zdarzenia kliknięcia przycisku "Powrót" w widoku szczegółów pacjenta.
        /// </summary>
        /// <param name="question">Wartość określająca czy wyświetlone ma zostać pytanie z prośbą o potwierdzenie operacji.</param>
        public void Back(bool question)
        {
            System.Windows.Forms.DialogResult dialogResult = System.Windows.Forms.DialogResult.Yes;

            // jeśli istnieje potrzeba, użytkownik pytany jest o potwierdzenie chęci powrotu do menu głównego bez zapisywania wprowadzonych zmian;
            // tylko jeśli użytkownik kliknął przycisk "Tak", należy wyczyścić wszystkie pola i wrócić do menu głównego
            if (question)
            {
                dialogResult = System.Windows.Forms.MessageBox.Show("Czy na pewno chcesz wrócić do poprzedniej strony? Wszelkie zmiany nie zostaną zapisane.",
                                                                    "Pytanie",
                                                                    System.Windows.Forms.MessageBoxButtons.YesNo,
                                                                    System.Windows.Forms.MessageBoxIcon.Question,
                                                                    System.Windows.Forms.MessageBoxDefaultButton.Button2);
            }

            if (dialogResult == System.Windows.Forms.DialogResult.Yes)
            {
                // pobranie z historii widoków ostatniej pozycji
                UserControl last = view.ParentWindow.History.Pop();

                // sprawdzanie który z 3 możliwych widoków był ostatnio wyświetlany
                MainMenuView mainMenu = last as MainMenuView;

                // jeśli null, to znaczy, że to nie był ten widok
                if (mainMenu == null)
                {
                    RegisterVisitView registerVisit = last as RegisterVisitView;

                    if (registerVisit == null)
                    {
                        RegisterVisitDetailsView registerVisitDetails = last as RegisterVisitDetailsView;

                        // jeśli nie był to żaden z 3 możliwych widoków, to oznacza wystąpienie błędu
                        if (registerVisitDetails == null)
                        {
                            System.Windows.Forms.MessageBox.Show("Wystąpił nieoczekiwany błąd. Skontaktuj się z administratorem systemu.",
                                                                 "Nieoczekiwany błąd",
                                                                 System.Windows.Forms.MessageBoxButtons.OK,
                                                                 System.Windows.Forms.MessageBoxIcon.Error);

                            // wyczyszczenie historii widoków
                            view.ParentWindow.History.Clear();

                            // usunięcie referencji do widoków rejestracji wizyty
                            view.ParentWindow.RegistrarRegisterVisitView        = null;
                            view.ParentWindow.RegistrarRegisterVisitDetailsView = null;

                            // powrót do menu głównego
                            view.ParentWindow.ContentArea.Content = view.ParentWindow.RegistrarMainMenuView;
                        }
                        else
                        {
                            // jeśli dodano nowego pacjenta do bazy danych
                            if (view.ViewTitle.Text.StartsWith("Dodaj"))
                            {
                                // przekazanie ID pacjenta do widoku rejestrowania wizyty
                                registerVisitDetails.VisitData.PatientId = view.PatientData.Id;

                                // przekazanie nazwiska i imienia pacjenta do widoku rejestrowania wizyty
                                registerVisitDetails.PatientName.Content = patientBusinessService.GetPatientName(view.PatientData.Id);
                            }
                            // jeśli zmieniono dane istniejącego w bazie pacjenta
                            else
                            {
                                // odświeżenie listy pacjentów po zmianie danych
                                registerVisitDetails.RefreshPatientsList();
                            }

                            // zmiana treści okna głównego na widok listy wizyt na dany dzień dla wybranego lekarza
                            view.ParentWindow.ContentArea.Content = registerVisitDetails;
                        }
                    }
                    else
                    {
                        // przekazanie ID pacjenta do widoku rejestrowania wizyty
                        registerVisit.PatientId = view.PatientData.Id;

                        // zmiana treści okna głównego na widok listy lekarzy
                        view.ParentWindow.ContentArea.Content = registerVisit;
                    }
                }
                else
                {
                    view.ParentWindow.ContentArea.Content = mainMenu;
                }

                // ustawienie wartości domyślnych w widoku szczegółów pacjenta
                view.LastName.Clear();
                view.FirstName.Clear();
                view.SecondName.Clear();
                // istotne jest, aby czyszczenie pesel'u było przed czyszczeniem płci - jeśli wybrana była kobieta i był wpisany prawidłowy pesel,
                // zmiana płci do wartości domyślnej (mężczyzna) spowoduje błąd walidacji pesel'u, który nie zostanie usunięty
                // (wyczyszczenie najpierw pesel'u, a potem płci, jest chyba najprostszym rozwiązaniem)
                view.Pesel.Clear();
                view.BirthDate.SelectedDate = null;
                view.Gender.SelectedIndex   = 0;
                view.Street.Clear();
                view.BuildingNumber.Clear();
                view.Apartment.Clear();
                view.PostalCode.Clear();
                view.City.Clear();
                view.Post.Clear();
                view.IsInsured.IsChecked = true;
                view.Save.IsEnabled      = false;
            }
        }