Exemple #1
0
        /// <summary>
        /// Zapisuje w bazie danych podane informacje o pacjencie.
        /// </summary>
        /// <param name="patient">Informacje do zapisania. Wartość null powoduje, że ta metoda zwraca wartość false.</param>
        /// <returns>
        /// true jeśli zapisano pomyślnie,
        /// null jeśli podane informacje nie przeszły walidacji po stronie bazy,
        /// false jeśli wystąpił inny błąd lub podany argument to null.
        /// </returns>
        public bool?SavePatient(Patient patient)
        {
            bool?retval = false;

            if (patient != null)
            {
                // stworzenie nowej encji, przepisanie wartości
                M_Patient entity = new M_Patient();
                entity.Apartment      = patient.Apartment;
                entity.BirthDate      = patient.BirthDate;
                entity.BuildingNumber = patient.BuildingNumber;
                entity.City           = patient.City;
                entity.FirstName      = patient.FirstName;
                entity.Gender         = patient.Gender;
                entity.IsInsured      = patient.IsInsured;
                entity.LastName       = patient.LastName;
                entity.Pesel          = patient.Pesel;
                entity.Post           = patient.Post;
                entity.PostalCode     = patient.PostalCode;
                entity.SecondName     = patient.SecondName;
                entity.Street         = patient.Street;

                // ID > 0 -> zmiana danych istniejącego w bazie pacjenta
                if (patient.Id > 0)
                {
                    retval = patientService.UpdatePatient(entity);
                }
                else
                {
                    retval = patientService.InsertPatient(entity);
                }
            }

            return(retval);
        }
        /// <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;
        }
Exemple #3
0
        /// <summary>
        /// Pobiera z bazy danych informacje o pacjencie posiadającym wskazany nr PESEL.
        /// </summary>
        /// <param name="pesel">Nr PESEL szukanego pacjenta.</param>
        /// <returns>Obiekt z danymi pacjenta lub null jeśli nie znaleziono w tabeli podanego numeru PESEL.</returns>
        public Patient GetPatient(long pesel)
        {
            Patient patient = null;

            // pobranie z bazy rekordu dot. pacjenta o podanym nr PESEL
            M_Patient e = patientService.SelectPatient(x => x.Pesel == pesel);

            // jeśli znaleziono w tabeli podany PESEL, zwracany jest obiekt z danymi pacjenta
            if (e != null)
            {
                patient = new Patient(e.Id, e.LastName, e.FirstName, e.SecondName, e.BirthDate, e.Gender, e.Pesel,
                                      e.Street, e.BuildingNumber, e.Apartment, e.PostalCode, e.City, e.Post, e.IsInsured);
            }

            return(patient);
        }
        /// <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;
        }
Exemple #5
0
        /// <summary>
        /// Pobiera z bazy dane o pacjencie i zwraca jego nazwisko i imię.
        /// </summary>
        /// <param name="patientId">ID pacjenta.</param>
        /// <returns>
        /// Nazwisko i imię wskazanego pacjenta, oddzielone spacją,
        /// null jeśli nie znaleziono pacjenta o podanym ID.
        /// </returns>
        public string GetPatientName(int patientId)
        {
            if (patientId > 0)
            {
                M_Patient patient = patientService.SelectPatient(patientId);

                if (patient != null)
                {
                    return(patient.LastName + " " + patient.FirstName);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
        /// <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;
        }