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