/// <summary>
        /// Zapisuje w bazie danych nową wizytę
        /// </summary>
        /// <param name="visit">Informacje do zapisania.</param>
        /// <param name="registrarId">ID rejestratorki.</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?RegisterVisit(Visit visit, int registrarId)
        {
            bool?retval = false;

            if (visit != null)
            {
                // stworzenie nowej encji, przepisanie wartości
                M_Visit entity = new M_Visit();
                entity.DateOfVisit = visit.DateOfVisit;
                entity.DoctorId    = visit.DoctorId;
                entity.IsEmergency = visit.IsEmergency;
                entity.PatientId   = visit.PatientId;
                entity.RegistrarId = registrarId;
                entity.Registered  = DateTime.Now;

                // próba wstawienia nowego rekordu do tabeli
                retval = medicalService.InsertVisit(entity);
            }

            return(retval);
        }
Exemple #2
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);
        }
Exemple #3
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);
        }