Пример #1
0
        /// <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;
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
        /// <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;
        }
Пример #9
0
        /// <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;
        }
Пример #11
0
        /// <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);
        }
Пример #12
0
        /// <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;
        }