/// <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; }
/// <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; } }