/// <summary> /// Pobiera z bazy danych informacje o wskazanej poradni medycznej. Funkcja ta uwzględnia modyfikacje słownika. /// </summary> /// <param name="predicate">Funkcja (predykat) sprawdzająca warunek dla każdego elementu. Wartość null powoduje, że ta metoda również zwraca null.</param> /// <returns> /// Obiekt reprezentujący rekord z tabeli M_DictionaryClinic, odpowiadający szukanej poradni medycznej, /// null jeżeli nie znaleziono poradni medycznej odpowiadającej podanym warunkom lub podany argument to null. /// </returns> public M_DictionaryClinic SelectClinic(System.Linq.Expressions.Expression <Func <M_DictionaryClinic, bool> > predicate) { if (predicate != null) { db = new MedicalCenterDBContainer(); // pobranie encji spełniającej podane kryteria M_DictionaryClinic entity = db.M_DictionaryClinics.FirstOrDefault(predicate); // jeśli znaleziono encję pasującą do opisu if (entity != null) { // jeśli wybrana pozycja była aktualizowana, należy znaleźć najnowszą wersję while (entity.New > 0) { entity = db.M_DictionaryClinics.FirstOrDefault(x => x.Id == entity.New); } // jeśli wybrana pozycja została oznaczona jako usunięta, to nie można jej zwrócić if (entity.IsDeleted) { entity = null; } } db.Dispose(); return(entity); } else { return(null); } }
/// <summary> /// Pobiera z bazy zbiór wszystkich pacjentów. /// </summary> /// <returns>Wszystkie rekordy z tabeli M_Patients, przedstawione jako kolekcja obiektów M_Patient.</returns> public IEnumerable<M_Patient> SelectPatients() { db = new MedicalCenterDBContainer(); IEnumerable<M_Patient> entities = db.M_Patients.AsEnumerable().OrderBy(x => x.LastName).ThenBy(x => x.FirstName).ThenBy(x => x.SecondName); return entities; }
/// <summary> /// Pobiera z bazy danych informacje o wskazanych wizytach. /// </summary> /// <param name="predicate">Funkcja (predykat) sprawdzająca warunek dla każdego elementu. Wartość null powoduje, że ta metoda również zwraca null.</param> /// <returns> /// Lista obiektów reprezentujących rekordy z tabeli M_Visits, /// null jeżeli nie znaleziono wizyt odpowiadających podanym warunkom lub podany argument to null. /// </returns> public IEnumerable <M_Visit> SelectVisits(Func <M_Visit, bool> predicate) { IEnumerable <M_Visit> entities = null; if (predicate != null) { db = new MedicalCenterDBContainer(); entities = db.M_Visits.Where(predicate).OrderBy(x => x.DateOfVisit); } return(entities); }
/// <summary> /// Pobiera z bazy danych informacje o wskazanych pracownikach. /// </summary> /// <param name="predicate">Funkcja (predykat) sprawdzająca warunek dla każdego elementu. Wartość null powoduje, że ta metoda również zwraca null.</param> /// <returns> /// Lista obiektów reprezentujących rekordy z tabeli A_Workers, /// null jeżeli nie znaleziono pracowników odpowiadających podanym warunkom lub podany argument to null. /// </returns> public IEnumerable <A_Worker> SelectWorkers(Func <A_Worker, bool> predicate) { IEnumerable <A_Worker> entities = null; if (predicate != null) { db = new MedicalCenterDBContainer(); entities = db.A_Workers.Where(predicate).OrderBy(x => x.LastName).ThenBy(x => x.FirstName).ThenBy(x => x.SecondName); } return(entities); }
/// <summary> /// Pobiera z bazy danych informacje o wskazanym pracowniku. /// </summary> /// <param name="predicate">Funkcja (predykat) sprawdzająca warunek dla każdego elementu. Wartość null powoduje, że ta metoda również zwraca null.</param> /// <returns> /// Obiekt reprezentujący rekord z tabeli A_Workers, /// null jeżeli nie znaleziono pracownika odpowiadającego podanym warunkom lub podany argument to null. /// </returns> public A_Worker SelectWorker(System.Linq.Expressions.Expression <Func <A_Worker, bool> > predicate) { A_Worker entity = null; if (predicate != null) { db = new MedicalCenterDBContainer(); entity = db.A_Workers.FirstOrDefault(predicate); db.Dispose(); } return(entity); }
/// <summary> /// Pobiera z bazy danych informacje o wskazanym stanowisku służbowym. /// </summary> /// <param name="predicate">Funkcja (predykat) sprawdzająca warunek dla każdego elementu. Wartość null powoduje, że ta metoda również zwraca null.</param> /// <returns> /// Obiekt reprezentujący rekord z tabeli A_DictionaryJobTitles, /// null jeżeli nie znaleziono stanowiska odpowiadającego podanym warunkom lub podany argument to null. /// </returns> public A_DictionaryJobTitle SelectJobTitle(System.Linq.Expressions.Expression <Func <A_DictionaryJobTitle, bool> > predicate) { A_DictionaryJobTitle entity = null; if (predicate != null) { db = new MedicalCenterDBContainer(); entity = db.A_DictionaryJobTitles.FirstOrDefault(predicate); db.Dispose(); } return(entity); }
/// <summary> /// Pobiera z bazy danych informacje o wszystkich poradniach medycznych. Funkcja ta uwzględnia modyfikacje słownika. /// </summary> /// <returns>Zbiór rekordów z tabeli M_DictionaryClinics.</returns> public List <M_DictionaryClinic> SelectClinics() { db = new MedicalCenterDBContainer(); // wrzucenie całej zawartości tabeli do listy List <M_DictionaryClinic> list = db.M_DictionaryClinics.ToList(); int i = 0; int temp = 0; M_DictionaryClinic entity = null; // usuwanie z listy referencji do starych i oznaczonych jako usunięte wpisów while (i < list.Count) { entity = list[i]; // jeśli rekord był aktualizowany if (entity.New > 0) { temp = i; // szukanie najnowszej wersji while (entity.New > 0) { // przejście do zaktualizowanej wersji rekordu entity = list.FirstOrDefault(x => x.Id == entity.New); // usunięcie starej wersji z listy list.RemoveAt(temp); // zapisanie pozycji nowej wersji na potrzeby następnej iteracji temp = list.IndexOf(entity); } } // jeśli rekord został oznaczony jako usunięty if (entity.IsDeleted) { list.RemoveAt(i); } else { ++i; } } // sortowanie listy wg. nazw poradni list = list.OrderBy(x => x.Name).ToList(); return(list); }
/// <summary> /// Pobiera z bazy danych informacje o wskazanym pacjencie. /// </summary> /// <param name="patientId">ID szukanego pacjenta.</param> /// <returns> /// Obiekt reprezentujący rekord z tabeli M_Patients, /// null jeżeli nie znaleziono pacjenta o podanym ID. /// </returns> public M_Patient SelectPatient(int patientId) { M_Patient entity = null; // utworzenie obiektu kontekstu bazodanowego db = new MedicalCenterDBContainer(); // pobranie encji entity = db.M_Patients.Find(patientId); // usunięcie obiektu kontekstu bazodanowego db.Dispose(); return entity; }
/// <summary> /// Pobiera z tabeli A_DictionaryRooms rekord, którego id zawiera spełniający podane kryteria rekord z tabeli A_WorkersRooms. /// </summary> /// <param name="predicate">Funkcja (predykat) sprawdzająca warunek dla każdego elementu. Wartość null powoduje, że ta metoda również zwraca null.</param> /// <returns> /// Obiekt reprezentujący rekord z tabeli A_DictionaryRooms, /// null jeżeli nie znaleziono gabinetu odpowiadającego podanym warunkom lub podany argument to null. /// </returns> public A_DictionaryRoom SelectRoom(System.Linq.Expressions.Expression <Func <A_WorkersRoom, bool> > predicate) { // A_DictionaryRoom <---> A_WorkersRoom <---> A_Workers if (predicate != null) { db = new MedicalCenterDBContainer(); // znalezienie rekordu wiążącego A_Workers.Id z A_DictionaryRoom.Id A_WorkersRoom temp = db.A_WorkersRooms.FirstOrDefault(predicate); // zwrócenie numeru gabinetu lub null, jeśli nie znaleziono (lub nie znaleziono powiązania między gabinetem a pracownikiem) if (temp != null) { // pobranie obiektu z numerem telefonu A_DictionaryRoom room = db.A_DictionaryRooms.FirstOrDefault(x => x.Id == temp.RoomId); if (room != null) { // jeśli pobrany wpis był aktualizowany, szukana jest jego najnowsza wersja while (room.New > 0) { room = db.A_DictionaryRooms.FirstOrDefault(x => x.Id == room.New); } // jeśli wpis został oznaczony jako usunięty, zwracany jest null if (room.IsDeleted) { room = null; } } db.Dispose(); return(room); } else { return(null); } } else { return(null); } }
/// <summary> /// Pobiera z bazy danych informacje o wskazanym pacjencie. /// </summary> /// <param name="predicate">Funkcja (predykat) sprawdzająca warunek dla każdego elementu. Wartość null powoduje, że ta metoda również zwraca null.</param> /// <returns> /// Obiekt reprezentujący rekord z tabeli M_Patients, /// null jeżeli nie znaleziono pacjenta odpowiadającego podanym warunkom lub podany argument to null. /// </returns> public M_Patient SelectPatient(System.Linq.Expressions.Expression<Func<M_Patient, bool>> predicate) { M_Patient entity = null; if (predicate != null) { // utworzenie obiektu kontekstu bazodanowego db = new MedicalCenterDBContainer(); // pobranie encji entity = db.M_Patients.FirstOrDefault(predicate); // usunięcie obiektu kontekstu bazodanowego db.Dispose(); } return entity; }
/// <summary> /// Aktualizuje w bazie danych rekord o wskazanej wizycie. /// </summary> /// <param name="visit">Zaktualizowane informacje o wizycie. Wartość null powoduje, że ta metoda zwraca false.</param> /// <param name="visitId">ID wizyty, która ma zostać zaktualizowana.</param> /// <returns> /// true jeśli zaktualizowano pomyślnie, /// null jeśli podana encja nie przeszła walidacji po stronie bazy, /// false jeśli wystąpił inny błąd lub podany argument to null. /// </returns> public bool?UpdateVisit(M_Visit visit, int visitId) { bool?retval = true; if (visit != null) { db = new MedicalCenterDBContainer(); // przechowuje liczbę wierszy, jaka została dodana/zmieiona podczas wskazanej operacji int rowsAffected = 0; // referencja do encji, która ma zostać zmieniona M_Visit record = null; try { // szukanie encji o podanym ID record = db.M_Visits.Find(visitId); } catch (InvalidOperationException ioe) { System.Console.WriteLine(ioe.Message); retval = false; // utworzenie nowego obiektu kontekstu bazodanowego db.Dispose(); db = new MedicalCenterDBContainer(); } // jeśli znaleziono encję o podanym ID, następuje aktualizacja jej właściwości if (record != null) { if (retval == true) { record.DateOfVisit = visit.DateOfVisit; record.Description = visit.Description; record.Diagnosis = visit.Diagnosis; record.DoctorId = visit.DoctorId; record.Ended = visit.Ended; record.IsEmergency = visit.IsEmergency; record.LastEdit = visit.LastEdit; record.Started = visit.Started; record.State = visit.State; try { // synchronizacja zbioru danych z bazą danych rowsAffected = db.SaveChanges(); } catch (System.Data.Entity.Infrastructure.DbUpdateConcurrencyException concurrencyException) { System.Console.WriteLine(concurrencyException.Message); // jeśli wystąpił ten błąd i nowy rekord nie został zapisany w tabeli, podejmowana jest jeszcze jedna próba zapisu if (rowsAffected == 0) { db.Dispose(); db = new MedicalCenterDBContainer(); try { rowsAffected = db.SaveChanges(); } catch (Exception exception) { System.Console.WriteLine(exception.Message); // jeśli druga próba również zakończyła się niepowodzeniem, zwracana jest informacja o błędzie retval = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException validationException) { System.Console.WriteLine(validationException.Message); // podana encja nie przeszła walidacji retval = null; } catch (Exception ex) { System.Console.WriteLine(ex.Message); // inny błąd retval = false; } } } // jeśli nie znaleziono encji o podanym ID, zgłaszane jest to jako błąd else { retval = false; } db.Dispose(); } else { retval = false; } return(retval); }
/// <summary> /// Zapisuje w bazie danych nowy rekord dla wizyty, wpisując do niego podane informacje. /// </summary> /// <param name="newVisit">Informacje o nowej wizycie. Wartość null powoduje, że ta metoda zwraca false.</param> /// <returns> /// true jeśli wstawiono pomyślnie, /// null jeśli podana encja nie przeszła walidacji po stronie bazy, /// false jeśli wystąpił inny błąd lub podany argument to null. /// </returns> public bool?InsertVisit(M_Visit newVisit) { bool?retval = true; if (newVisit != null) { db = new MedicalCenterDBContainer(); // dodanie nowej encji do lokalnego zbioru db.M_Visits.Add(newVisit); // przechowuje liczbę wierszy, jaka została dodana/zmieiona podczas wskazanej operacji int rowsAffected = 0; try { // synchronizacja zbioru danych z bazą danych rowsAffected = db.SaveChanges(); } catch (System.Data.Entity.Infrastructure.DbUpdateConcurrencyException concurrencyException) { System.Console.WriteLine(concurrencyException.Message); // jeśli wystąpił ten błąd i nowy rekord nie został zapisany w tabeli, podejmowana jest jeszcze jedna próba zapisu if (rowsAffected == 0) { db.Dispose(); db = new MedicalCenterDBContainer(); try { rowsAffected = db.SaveChanges(); } catch (Exception exception) { System.Console.WriteLine(exception.Message); // jeśli druga próba również zakończyła się niepowodzeniem, zwracana jest informacja o błędzie retval = false; } } } catch (System.Data.Entity.Validation.DbEntityValidationException validationException) { System.Console.WriteLine(validationException.Message); // podana encja nie przeszła walidacji retval = null; } catch (Exception ex) { System.Console.WriteLine(ex.Message); // inny błąd retval = false; } db.Dispose(); } else { retval = false; } return(retval); }
/// <summary> /// Aktualizuje w bazie danych rekord o wskazanym pacjencie. /// </summary> /// <param name="patient">Zaktualizowane informacje o pacjencie. Wartość null powoduje, że ta metoda zwraca false.</param> /// <returns> /// true jeśli zaktualizowano pomyślnie, /// null jeśli wystąpił błąd aktualizacji, /// false jeśli wystąpił inny błąd lub podany argument to null. /// </returns> public bool? UpdatePatient(M_Patient patient) { bool? retval = true; if (patient != null) { db = new MedicalCenterDBContainer(); // przechowuje liczbę wierszy, jaka została dodana/zmieiona podczas wskazanej operacji int rowsAffected = 0; // referencja do encji, która ma zostać zmieniona M_Patient record = null; try { // szukanie encji o podanym ID record = db.M_Patients.FirstOrDefault(x => x.Pesel == patient.Pesel); } catch (InvalidOperationException ioe) { System.Console.WriteLine(ioe.Message); retval = false; // utworzenie nowego obiektu kontekstu bazodanowego db.Dispose(); db = new MedicalCenterDBContainer(); } // jeśli znaleziono encję o podanym ID, następuje aktualizacja jej właściwości if (record != null) { if (retval == true) { record.Apartment = patient.Apartment; record.BirthDate = patient.BirthDate; record.BuildingNumber = patient.BuildingNumber; record.City = patient.City; record.FirstName = patient.FirstName; record.Gender = patient.Gender; record.IsInsured = patient.IsInsured; record.LastName = patient.LastName; record.Pesel = patient.Pesel; record.Post = patient.Post; record.PostalCode = patient.PostalCode; record.SecondName = patient.SecondName; record.Street = patient.Street; try { // synchronizacja zbioru danych z bazą danych rowsAffected = db.SaveChanges(); } catch (System.Data.Entity.Infrastructure.DbUpdateConcurrencyException concurrencyException) { System.Console.WriteLine(concurrencyException.Message); // jeśli wystąpił ten błąd i nowy rekord nie został zapisany w tabeli, podejmowana jest jeszcze jedna próba zapisu if (rowsAffected == 0) { db.Dispose(); db = new MedicalCenterDBContainer(); try { rowsAffected = db.SaveChanges(); } catch (Exception exception) { System.Console.WriteLine(exception.Message); // jeśli druga próba również zakończyła się niepowodzeniem, zwracana jest informacja o błędzie retval = false; } } } catch (System.Data.Entity.Infrastructure.DbUpdateException updateException) { System.Console.WriteLine(updateException.Message); Exception ex = updateException; // szukanie właściwego wyjątku if (ex.InnerException != null) { while (ex.InnerException != null) ex = ex.InnerException; // jeśli istniał jakiś wewnętrzy wyjątek, wyświetlona zostanie jego wiadomość System.Console.WriteLine(ex.Message); } // podana encja nie przeszła walidacji retval = null; } catch (Exception ex) { System.Console.WriteLine(ex.Message); // inny błąd retval = false; } } } // jeśli nie znaleziono encji o podanym ID, zgłaszane jest to jako błąd else retval = false; db.Dispose(); } else retval = false; return retval; }
/// <summary> /// Zapisuje w bazie danych nowy rekord dla pacjenta, wpisując do niego podane informacje. /// </summary> /// <param name="newPatient">Informacje o nowym pacjencie. Wartość null powoduje, że ta metoda zwraca false.</param> /// <returns> /// true jeśli wstawiono pomyślnie, /// null jeśli wystąpił błąd aktualizacji, /// false jeśli wystąpił inny błąd lub podany argument to null. /// </returns> public bool? InsertPatient(M_Patient newPatient) { bool? retval = true; if (newPatient != null) { db = new MedicalCenterDBContainer(); // dodanie nowej encji do lokalnego zbioru db.M_Patients.Add(newPatient); // przechowuje liczbę wierszy, jaka została dodana/zmieiona podczas wskazanej operacji int rowsAffected = 0; try { // synchronizacja zbioru danych z bazą danych rowsAffected = db.SaveChanges(); } catch (System.Data.Entity.Infrastructure.DbUpdateConcurrencyException concurrencyException) { System.Console.WriteLine(concurrencyException.Message); // jeśli wystąpił ten błąd i nowy rekord nie został zapisany w tabeli, podejmowana jest jeszcze jedna próba zapisu if (rowsAffected == 0) { try { rowsAffected = db.SaveChanges(); } catch (Exception exception) { System.Console.WriteLine(exception.Message); // jeśli druga próba również zakończyła się niepowodzeniem, zwracana jest informacja o błędzie retval = false; } } } catch (System.Data.Entity.Infrastructure.DbUpdateException updateException) { System.Console.WriteLine(updateException.Message); Exception ex = updateException; // szukanie właściwego wyjątku if (ex.InnerException != null) { while (ex.InnerException != null) ex = ex.InnerException; // jeśli istniał jakiś wewnętrzy wyjątek, wyświetlona zostanie jego wiadomość System.Console.WriteLine(ex.Message); } // podana encja nie może zostać dodana (np. z powodu złamania ograniczenia unikatowości) retval = null; } catch (Exception ex) { System.Console.WriteLine(ex.Message); // inny błąd retval = false; } db.Dispose(); } else retval = false; return retval; }